我是PHP报告生成的新手。我正在尝试使用MPDF 5.7。当我尝试使用简单的php页面创建示例pdf时,它已成功创建。但是,当我把它放入codeigniter时,Chrome浏览器说"无法加载PDF文档。"。但它可以使用firefox打开。但如果我下载它,则不支持使用adobe reader打开。但是我的样本pfd仍然运作良好。
这就是我创建样本pdf的方式。
<?php
$html = '
<h1>mPDF</h1>
<h2>Basic Example Using CSS Styles</h2>
<p class="breadcrumb">Chapter » Topic</p>
<h3 style="color:red; background-color:gray; margin-left:100px;">Heading 3</h3>';
include("themes/MPDF57/mpdf.php");
$mpdf=new mPDF('c');
$mpdf->SetDisplayMode('fullpage');
// LOAD a stylesheet
$stylesheet = file_get_contents('mpdfstyleA4.css');
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
?>
当我把它放入codeigniter时无法打开pdf。我的php文件是在&#39; view&#39;中创建的。和mpdf库也放在主题文件夹中的相同位置。
答案 0 :(得分:2)
您的PDF文件包含脚本的一些直接PHP输出,这会使其损坏。
它可以是?>
PHP结束标记之后的空白,可以在生成文件的过程中打印PHP通知等。
请确保禁用框架提供的所有布局,因为它会产生可能导致此问题的完全相同的输出。
要进一步排查,请将PDF文件保存到光盘($mpdf->Output('<file path>', "D");
)并在文本编辑器中将其打开。你会看到一堆怪异的角色。
如果文件不以%PDF-1.4开头,请在调用$mpdf->Output();
之前查找输出的原因。
如果文档末尾有一些可读文本,请注意调用Output
方法。
我建议您删除?>
PHP结束标记,以获得良好的衡量标准。
另见https://mpdf.github.io/troubleshooting/error-messages.html
答案 1 :(得分:0)
试试这个
$mpdf->Output('', "I");
所以文件应该在浏览器中内嵌显示而不是下载。
如果您要下载使用"D"
"I"
内容
答案 2 :(得分:0)
发生这种情况的原因是在编写PDF之前会出现一些PHP错误/警告,这些错误/警告会使其成为无效的PDF,因此浏览器无法读取。
您可以通过使用TextEditor下载并打开PDF文件来查看它,并且您将看到PHP错误而不是标准%PDF-1.4
值(应该是文件的第一个值)。
如果您取消警告error_reporting(E_ERROR | E_PARSE);
,您应该好好去。
答案 3 :(得分:0)
我遇到了同样的问题,我没有注意到我的索引文件中仍然包含页眉和页脚(页眉是问题所在)。当我调用我的 generate_pdf 文件时,它正在拉标题并创建错误。在我删除标题后,pdf 成功生成。