“预览”mpdf直接到浏览器

时间:2017-10-16 16:05:33

标签: php mpdf

我正在使用mpdf并通过mpdf :: writeHTML()将一堆HTML写入pdf对象。有没有办法,而不是输出PDF,只是简单地将其转储回浏览器?那么,不是创建PDF而只是将其写成网页?

我想为用户提供PDF或网页的选项,而不是为每行分支echo或writeHTML,我想构建文档,然后输出web或PDF。

编辑添加:

这样的事情:

$mpdf = new mpdf();
$mpdf->writeHTML( "<p>Hello World</p>" );
$mpdf->addPage( 'L' );
$mpdf->writeHTML( "<p>Lorem ipsum egg foo yung.</p>" );

if( $_GET['format'] == 'pdf' ) {
    $mpdf->output();                  //spit out a PDF
} elseif ( $_GET['format'] == 'web' ) {
    echo $mpdf->contents_as_html();   // write a web page
}

我正在将每一行写成一个巨大的字符串,然后将字符串传递给mpdf :: writeHTML()或echo;但这不允许我使用各种mpdf函数,如addPage(),bookmark()等。

2 个答案:

答案 0 :(得分:0)

您可以通过更改第二个参数来使用mPDF选择输出。

I = send the file inline to the browser.
F enter code here= save to a local file with the name given by $filename.
S = return the document as a string. $filename is ignored.
D = send to the browser and force a file download with the name given by $filename.

输出mPDF:

$mpdf->Output($filename, "I"); // Change "I" to your preferred output

如果选择在浏览器中输出文件,则只需确保将输出目标定位在空白页上即可。否则,页眉和页脚可能会产生干扰。

Artikel mPDF输出: https://mpdf.github.io/reference/mpdf-functions/output.html

答案 1 :(得分:0)

根据@CBroe的建议,这就是我所做的。调用writeHTML()时,它将写入内部变量$this->strHTML,然后执行其正常过程。如果对象强制转换为字符串,则返回$this->strHTML

class myPDF extends Mpdf {

    private $strHtml = '';

    public function writeHTML( $html, $mode = 0, $init = true, $close = true ) {
        $this->strHtml .= $html . "\n";
        return parent::writeHTML( $html, $mode, $init, $close );
    }

    public function __toString() {
        return $this->strHtml;
    }

}