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

问题描述 投票:2回答:3

我是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文件在'view'中创建,mpdf库也放在theme文件夹的同一个地方。

php codeigniter mpdf
3个回答
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


0
投票

发生这种情况的原因是在编写PDF之前会出现一些PHP错误/警告,这些错误/警告使其成为无效的PDF,因此浏览器无法读取。

您可以通过使用文本编辑器下载并打开PDF文件来查看它,您将看到PHP错误而不是标准的qazxsw poi值(应该是文件的第一个值)。

如果你压制警告%PDF-1.4你应该好好去。


0
投票

试试这个

error_reporting(E_ERROR | E_PARSE);

所以文件应该在浏览器中内嵌显示而不是下载。

如果你想下载使用qazxsw poi而不是qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.