使用 TCPDF 将 PHP/HTML 转换为 PDF 时出现问题。
我的方法是:
首先,我从当前的 PHP 进程创建一个缓冲的 HTML 文件,然后用 TCPDF 转换该 HTML。
但是 PDF 结果与我的预期不同。第一行是缩进的。
这是我的代码:
index1.php
<form action="index1-process.php" method="post">
<input type="submit" value="Save">
</form>
<?php
function loop(){
for($i=0;$i<=5;$i++){
echo "Line ".$i."<br />\r\n";
}
}
?>
<!-- start buffering -->
<?php ob_start(); ?>
<html>
<body>
<?php loop() ?>
</body>
</html>
<!-- save buffer to file -->
<?php file_put_contents("index1.html", ob_get_contents()); ?>
在我单击“保存”按钮后,它缓冲到:
index1.html
<html>
<body>
Line 0<br />
Line 1<br />
Line 2<br />
Line 3<br />
Line 4<br />
Line 5<br />
</body>
</html>
<!-- save buffer to file -->
但 PDF 结果在第一行缩进:
index1.pdf
Line 0
Line 1
Line 2
Line 3
Line 4
Line 5
这是我的流程代码:
index1-process.php
<?php
require_once('./tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins("10","10","10");
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
}
$pdf->SetFont("times");
$pdf->AddPage();
$html = file_get_contents("index1.html");
$pdf->writeHTML($html);
$pdf->Output("index1.pdf","D");
是我的方法还是我的代码错了?
或者有没有更好的方法将 PHP 处理的页面保存为 PDF?