web-dev-qa-db-fra.com

Afficher PDF sur navigateur

Je veux afficher un fichier PDF sur le navigateur qui est stocké sur notre serveur. Voici mon code: -

$path = $_SERVER['DOCUMENT_ROOT'].folder_name.'/resources/uploads/pdf/pdf_label_'.$order['id'].'.pdf';

$filename = 'pdf_label_'.$order['id'].'.pdf';

$file = $path;
$filename = $filename;

  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  @readfile($file);

Mais il retourne en dessous de la sortie sur le navigateur:

%PDF-1.4 % 5 0 obj >stream

Fichier PDF à afficher:

enter image description here

Je le fais sur la vue de codeignter.

Qu'est ce que je fais mal ? S'il vous plaît aidez-moi sur ce point. Merci d'avance

MODIFIER :-

Je fais quelque chose comme ci-dessous:

foreach($orders as $order){

$path = $_SERVER['DOCUMENT_ROOT'].folder_name.'/resources/uploads/pdf/pdf_label_'.$order['id'].'.pdf';

$filename = 'pdf_label_'.$order['id'].'.pdf';

$file = $path;
$filename = $filename;

  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  echo file_get_contents($file);

  }

Alors, comment puis-je afficher plus d'un fichier sur le navigateur?

Edit 2: - 

Donc, comme indiqué dans la réponse ci-dessous, je dois utiliser phpmerger pour fusionner plusieurs fichiers PDF et les afficher dans le navigateur. Je suis passé par ce site http://pdfmerger.codeplex.com/ mais je ne parviens pas à utiliser codeignter. Quelqu'un peut-il m'aider s'il vous plaît à utiliser ce phpmerger dans mon codeingter

8
Rakesh Shetty

vous pouvez utiliser la bibliothèque PDF Merger pour atteindre vos objectifs . Voici le lien vers la bibliothèque d'origine (obsolète).Préférer la fourche myokyawhtun qui est maintenue

et un exemple de code sera comme suit

include 'PDFMerger.php';
$pdf = new PDFMerger;
$pdf->addPDF('path_to_pdf/one.pdf', '1, 3, 4')  //include file1 - pages 1,3,4
    ->addPDF('path_to_pdf/two.pdf', '1-2')      //include file2 -  pages 1 to 2
    ->addPDF('path_to_pdf/three.pdf', 'all')    //include file3 - all pages
    ->merge('browser', 'test.pdf');  // OUTPUT : make sure you choose browser mode here.

Modes pris en charge - browser, file, download et string.


Edit: Comme je peux voir que vous avez marqué CI, vous pouvez mettre PDFMerger.php dans applications/libraries..__ et le charger dans autoload.php ou dans controller

et puis peut l'utiliser comme fonctions $this->pdfmerger->addPDF() et merge().

7
karan thakkar
$filePath="file path here";
$filename="file name here";
header('Content-type:application/pdf');
header('Content-disposition: inline; filename="'.$filename.'"');
header('content-Transfer-Encoding:binary');
header('Accept-Ranges:bytes');
@ readfile($filePath);

s'il vous plaît essayez ce code, j'espère qu'il fonctionnera comme j'essaie.

5
arshad

À la place d'utiliser

@readfile($file);

Utilisation

echo file_get_contents($file);

Ou omettez le @

1
RichardBernards

ma bibliothèque recommandée pour incorporer des PDF est PDFObject. Découvrez-le ici: http://pdfobject.com/

1
Darius

Les amis utilisent simplement Anchor Tag c'est tout. Tous les nouveaux navigateurs actuels supportent l'affichage de tous les fichiers.

0
Siddu Loni