"Preview" mpdf 直接到浏览器
"Preview" mpdf directly to browser
我正在使用 mpdf 并通过 mpdf::writeHTML() 将一堆 HTML 写入 pdf 对象。有没有什么办法,而不是输出 PDF,而是简单地将它直接转回浏览器?那么,与其创建 PDF,不如将其写成网页?
我想为用户提供 PDF 或网页的选项,而不是为每一行分支 echo 或 writeHTML,我想构建文档,然后输出网页或 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() 等。
您可以通过更改第二个参数来选择 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
根据@CBroe 的建议,这就是我所做的。当调用 writeHTML()
时,它会写入一个内部变量 $this->strHTML
,然后执行其正常过程。如果将对象转换为字符串,它 returns $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;
}
}
我正在使用 mpdf 并通过 mpdf::writeHTML() 将一堆 HTML 写入 pdf 对象。有没有什么办法,而不是输出 PDF,而是简单地将它直接转回浏览器?那么,与其创建 PDF,不如将其写成网页?
我想为用户提供 PDF 或网页的选项,而不是为每一行分支 echo 或 writeHTML,我想构建文档,然后输出网页或 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() 等。
您可以通过更改第二个参数来选择 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
根据@CBroe 的建议,这就是我所做的。当调用 writeHTML()
时,它会写入一个内部变量 $this->strHTML
,然后执行其正常过程。如果将对象转换为字符串,它 returns $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;
}
}