Symfony2: Apri il file PDF nel browser

Nel mio progetto Symfony 2, vorrei visualizzare un pdf nel browser quando l'utente fa clic su un link per visualizzare un file pdf. I file pdf sono contenuti nella mia cartella "views", in una sottocartella chiamata "pdf-files".

Come devo adattare la seguente function del controller in modo che un file pdf venga visualizzato nel browser?

/** * @Route("/pdf/{pdfFilename}") */ public function pdfAction($pdfFilename) { return $this->render('@App/pdf-files/'.$pdfFilename); } 

Riguarda l'intestazione conten-type della richiesta http. Quindi impostalo:

 $response = $this->render('@App/pdf-files/'.$pdfFilename); $response->headers->set('Content-Type', 'application/pdf'); return $response; 

Per servire file statici potresti voler utilizzare la class BinaryFileResponse . In tale risposta è ansible impostare la content disposition : questo file deve essere aperto in un browser o scaricato come allegato.

Quindi il tuo codice dovrebbe assomigliare a qualcosa:

 public function pdfAction($pdfFilename) { $kernel = $this->get('kernel'); $path = $kernel->locateResource('@AppBundle/Resources/pdf-files/'.$pdfFilename); $response = new BinaryFileResponse($path) $response->headers->set('Content-Type', 'application/pdf'); $response->setContentDisposition( ResponseHeaderBag::DISPOSITION_INLINE, //use ResponseHeaderBag::DISPOSITION_ATTACHMENT to save as an attachement $pdfFilename ); return $response; } 

EDIT: poiché locateResource cerca i file nella directory Resources per impostazione predefinita, suggerirei di spostare la directory dei pdf-files dalla directory views a Resources