【问题标题】:Output buffering alternative php输出缓冲替代 php
【发布时间】:2014-10-31 14:28:47
【问题描述】:

我正在尝试使用html2pdf 将文件的内容保存为 PDF,但该文件有一些 PHP 代码需要处理。我做了一些研究,发现我必须使用输出缓冲才能处理文件中的 PHP 内容。所以我做了类似的事情:

<?php 
    require_once('html2pdf.class.php');    

    ob_start();
    require_once('my_file.php');
    $content = ob_get_clean();

    // force download of $content to a PDF
    $html2pdf = new HTML2PDF('P','A3','fr', false, 'ISO-8859-1');
    $html2pdf->writeHTML($content);
    $html2pdf->Output('file_name.pdf', 'D');
?>

文件 my_file.php 是包含一些 PHP 代码和我想保存到 PDF 的 HTML 内容的文件,变量 $content 是实际的内容与处理的 PHP 代码和一切。这在 Apache 上运行良好,但在 IIS 上不行。

有没有人知道另一种方法可以在不使用输出缓冲的情况下完成这项工作?我试过 file_get_contents('my_file.php');但是当我这样做时,我在 my_file.php 中的 php 内容没有得到处理。

拜托,我正在寻找在没有输出缓冲的情况下执行此操作的方法,以便它可以在任何服务器上工作。我不是在寻找告诉我更改 IIS 服务器配置或使用 html2pdf 以外的其他内容的答案。

提前感谢您的帮助

【问题讨论】:

  • 为你的 print() 写一个包装器。

标签: php php-5.3 output-buffering


【解决方案1】:

如果你可以修改my_file.php的内容,你可以把所有的文本放到那里的一个变量中,而不是直接输出。

【讨论】:

    【解决方案2】:

    您可以使用 PHP/PDF 库http://php.net/manual/en/book.pdf.php
    并按照这个例子:http://php.net/manual/en/pdf.examples-basic.php
    希望有帮助:)

    【讨论】:

      【解决方案3】:

      最简单的方法是编辑 my_file.php,以便将 HTML 内容分配给 PHP 变量,而不是包含 HTML。那么你需要做的就是回显这个变量。

      //other PHP processing goes here, or anywhere else.
      
      $someVar = "hello world";
      
      $myHTML = "<html>My output: $someVar </html>";
      
      echo $myHTML;
      

      这是一种处理 HTML 输出的丑陋方式,我并不是说它是一种好的编程方式,但如果你想避免编辑配置文件,它会变得又快又容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-23
        • 2017-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多