【问题标题】:DOMPDF, able to create pdf doc but the pdf itself failed to loadDOMPDF,能够创建 pdf 文档,但 pdf 本身无法加载
【发布时间】:2014-09-11 15:47:26
【问题描述】:

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

这是我必须运行 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 的内容实际上是混乱的,有什么想法吗?

【问题讨论】:

    标签: php pdf


    【解决方案1】:
       <?
    ^^^---- these spaces will corrupt the PDF
    require_once("dompdf/dompdf_config.inc.php");
    

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

    【讨论】:

      【解决方案2】:

      在调用$dompdf-&gt;stream(); 之前使用ob_end_clean();

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

      【讨论】:

        【解决方案3】:

        > 在文本编辑器(notepad++)中打开它

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            我遇到了同样的问题,浏览器无法显示 pdf 文件 (image)。经过在这里和谷歌的大量研究和大量测试之后,我已经能够使它与这条线一起工作:

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

            希望它也对你有用。

            【讨论】:

              【解决方案6】:

              我遇到了同样的问题“pdf 文档已损坏”。

              终于找到解决办法了。

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

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

              【讨论】:

                【解决方案7】:

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

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

                【讨论】:

                  猜你喜欢
                  • 2018-07-19
                  • 2018-05-24
                  • 2014-06-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-05-24
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多