我想在存储在我们服务器上的浏览器上显示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文件显示:
我这样做是为了查看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
答案 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.
支持的模式 - browser
,file
,download
和string
。
修改:我可以看到您已标记CI,您可以将PDFMerger.php
放入applications/libraries
。
并将其加载到autoload.php
或controller
然后可以像$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之前用于抑制错误,也许可以在开发模式下将其删除。