【问题标题】:Output Buffer + Pdf - PHP输出缓冲区 + Pdf - PHP
【发布时间】:2012-09-30 16:05:44
【问题描述】:

我有一个页面,它使用 glob 函数和 file_get_contents 来拥有一些 html 文件并将它们存储在缓冲区中。

所以我想将此缓冲区 ob_get_contents() 转换为 pdf 文件。

最好的方法是什么?怎么样?

提前致谢。

【问题讨论】:

    标签: php pdf stdout


    【解决方案1】:

    要从 HTML 和 CSS 创建 PDF 文件,请查看DOMpdf

    虽然此解决方案不支持全部范围的 HTML 和 CSS,而且它的渲染有时会很痛苦,但它有一个优点:它不需要安装任何特殊的二进制文件(如 wkhtmltopdf)。它应该在您的普通共享 PHP 主机上运行。

    使用示例:

    <?php
    require_once("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");
    
    ?>
    

    【讨论】:

    • 我收到一个错误无法流式传输 pdf:标头已发送
    【解决方案2】:

    为什么要为此使用输出缓冲区?您可以使用file_get_contents 在变量中使用它,并且可以使用变量中的数据简单地创建您的 pdf。当使用ob_get_contents 时,它所做的只是返回输出缓冲区,而您通常对结果执行的操作是将结果保存到变量中......

    顺便说一句。你想把html转换成pdf吗?如果是,请查看wkhtmltopdf

    【讨论】:

      【解决方案3】:

      如果ob_get_contents 包含 html 文件,那么它们有很多解决方案可以实现您想要的。我认为你应该看看以下内容

      使用Simple HTML 2 PDF using PHP的示例

      $html = ob_get_contents();
      ob_end_clean();
      $pdf = new HTML2FPDF();
      $pdf->SetTopMargin(1);
      $pdf->AddPage();
      $pdf->WriteHTML($html);
      $pdf->Output('test.pdf','D');
      

      【讨论】:

      • 我不能用 HTML2PDF 做到这一点,因为我遇到了几个错误。
      • @user1642423 他们是其他选择......绝对适合你
      • 注意到您从未接受过任何问题....请参阅:meta.stackexchange.com/questions/16721/…
      猜你喜欢
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多