DOMPDF,能够创建pdf文档,但pdf本身无法加载

时间:2014-09-11 15:47:27

标签: php pdf

您好我尝试使用php将html转换为pdf。代码能够运行,我能够运行它并下载pdf文件但是当我打开pdf文件时它给了我这个错误

enter image description here

这是我运行php的代码

   <?
require_once("dompdf/dompdf_config.inc.php");

$html =
  '<html><body>'.
  '<p>Put your html here, or generate it with your favourite '.
  'templating system.</p>'.
  '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");



 ?>

我有一种感觉,我加载了错误的HTML,所以pdf的内容实际上搞乱了,任何想法?

7 个答案:

答案 0 :(得分:9)

   <?
^^^---- these spaces will corrupt the PDF
require_once("dompdf/dompdf_config.inc.php");

如果你在PHP开始标记之前确实有这3个空格,它们将成为PDF文件的一部分并破坏它。加载你的&#34;坏&#34; pdf,执行文件 - >保存,并在文本/十六进制编辑器中打开文件(一个PDF阅读器),看看你得到了什么。实际PDF数据之前的任何PHP错误/警告或其他输出都会导致PDF阅读器将其视为已损坏。

答案 1 :(得分:2)

在致电ob_end_clean();之前使用$dompdf->stream();

来源:https://stackoverflow.com/a/44318219/11272475

答案 2 :(得分:1)

&GT;在文本编辑器(记事本++)中打开它

我遇到了同样的问题。 我读了一些关于用文本编辑器打开下载的内容。 我这样做了,发现文件中自动包含了一些javascript,它们已经破坏了它。

我删除了生成javascript的行,并为我修复了它。希望这有助于某人!

答案 3 :(得分:0)

DOMPDF要求您为php应用设置default_timezone。它不能依赖系统的时区设置

答案 4 :(得分:0)

我遇到了同样的问题,浏览器无法显示pdf文件(image)。经过对这里的大量研究和谷歌以及大量的测试后,我已经能够使用这条线:

$dompdf->loadHtml(html_entity_decode($html));

希望它也适合你。

答案 5 :(得分:0)

我遇到同样的问题&#34; pdf文件已损坏&#34;。

最后我找到了解决方案。

首先在文本编辑器中打开pdf,如(gedit),然后我看到了一些额外的样式(css)。之后我发现并评论它。现在再次下载pdf及其工作正常。

<style>
#certificatrediv > div{margin:0 auto !important;}
</style>
<h2>Test PDF</h2>

答案 6 :(得分:0)

当我们在生成pdf文档时出现php警告时,也会发生这种情况。

在生成pdf文件的特定php文件上设置error_reporting(0)是一种补救措施。修正警告或有条件进行处理是更好的解决方案