在浏览器上显示PDF

时间:2014-11-20 12:30:50

标签: php html codeigniter pdf

我想在存储在我们服务器上的浏览器上显示PDF文件。这是我的代码: -

$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);

但是它会在浏览器的输出下面返回:

%PDF-1.4 % 5 0 obj >stream

PDF文件显示:

enter image description here

我这样做是为了查看codeignter。

我做错了什么?请帮帮我。提前谢谢

编辑: -

我做的事情如下:

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);

  }

那么如何在浏览器上显示多个文件?

编辑2: -

因此,根据下面的答案,我必须使用phpmerger合并多个PDF文件并显示到浏览器中。我浏览了这个网站http://pdfmerger.codeplex.com/但无法用于codeignter。任何人都可以帮我在我的编码器中使用这个phpmerger

8 个答案:

答案 0 :(得分:7)

您可以使用PDF Merger库来实现目标。 Here is the link to original library (outdated). Prefer myokyawhtun fork which is maintained

,示例代码如下

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.

支持的模式 - browserfiledownloadstring


修改:我可以看到您已标记CI,您可以将PDFMerger.php放入applications/libraries。 并将其加载到autoload.phpcontroller

然后可以像$this->pdfmerger->addPDF()merge()函数一样使用它。

答案 1 :(得分:6)

$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);

请尝试使用此代码,我希望它能在我尝试时运行。

答案 2 :(得分:1)

而不是使用

@readfile($file);

使用

echo file_get_contents($file);

或省略@

答案 3 :(得分:1)

我推荐的用于嵌入PDF的库是PDFObject。请在此处查看:http://pdfobject.com/

答案 4 :(得分:1)

如果要在浏览器页面中显示pdf,则此方法有效。

$file = 'filename.pdf';
echo "<embed src='$file' type='application/pdf' width='80%' height='600px' />";

答案 5 :(得分:0)

朋友们只需使用Anchor Tag即可。 现在所有较新的浏览器都支持查看任何文件。

答案 6 :(得分:0)

此人在Chrome上为我工作。

$path = $filename;
              header("Content-Length: " . filesize ( $path ) ); 
             // header("Content-type: application/pdf"); 
              header("Content-disposition: inline; filename=".basename($path));
              header('Expires: 0');
              header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
              ob_clean();
              flush();
              //readfile($path);






          echo "<embed src='$path' type='application/pdf' width='80%' height='320px' />";

答案 7 :(得分:0)

在读取文件后使用出口:

$filepath = 'your-path/demo.pdf';
header('Content-Type: application/pdf');
header(sprintf("Content-disposition: inline;filename=%s", basename($filepath)));

@readfile($filepath);
exit;

ps。 @在readfile之前用于抑制错误,也许可以在开发模式下将其删除。