我无法在由Mpdf创建的chrome中打开pdf - CodeIgniter。 - 无法加载PDF文档

时间:2017-11-06 07:45:45

标签: php codeigniter mpdf

我是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 &raquo; 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库也放在主题文件夹中的相同位置。

image

image

4 个答案:

答案 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 成功生成。