DomPDF 是一个 PHP 库,能够将 HTML 和 CSS 转换为 PDF 文档。它支持大多数 CSS 2.1 和部分 CSS 3 属性,可以很好地处理表格、图像和基本布局。
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
// 初始化 Dompdf
$dompdf = new Dompdf();
// 从多个文件读取 HTML 内容
$html1 = file_get_contents('page1.html');
$html2 = file_get_contents('page2.html');
$html3 = file_get_contents('page3.html');
// 合并 HTML 内容
$combinedHtml = $html1 . $html2 . $html3;
// 加载 HTML 内容
$dompdf->loadHtml($combinedHtml);
// 设置纸张大小和方向
$dompdf->setPaper('A4', 'portrait');
// 渲染 PDF
$dompdf->render();
// 输出 PDF
$dompdf->stream("combined_document.pdf", array("Attachment" => false));
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$html1 = file_get_contents('page1.html');
$html2 = file_get_contents('page2.html');
$html3 = file_get_contents('page3.html');
// 使用 CSS 分页符分隔文档
$combinedHtml = $html1 .
'<div style="page-break-before: always;"></div>' .
$html2 .
'<div style="page-break-before: always;"></div>' .
$html3;
$dompdf->loadHtml($combinedHtml);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("multi_page_document.pdf");
require_once 'dompdf/autoload.inc.php';
require_once 'fpdi/src/autoload.php';
use Dompdf\Dompdf;
use setasign\Fpdi\Fpdi;
// 生成第一个 PDF
$dompdf1 = new Dompdf();
$dompdf1->loadHtml(file_get_contents('page1.html'));
$dompdf1->render();
file_put_contents('temp1.pdf', $dompdf1->output());
// 生成第二个 PDF
$dompdf2 = new Dompdf();
$dompdf2->loadHtml(file_get_contents('page2.html'));
$dompdf2->render();
file_put_contents('temp2.pdf', $dompdf2->output());
// 合并 PDF
$pdf = new Fpdi();
$files = ['temp1.pdf', 'temp2.pdf'];
foreach ($files as $file) {
$pageCount = $pdf->setSourceFile($file);
for ($i = 1; $i <= $pageCount; $i++) {
$pdf->AddPage();
$pdf->useTemplate($pdf->importPage($i));
}
}
// 输出合并后的 PDF
$pdf->Output('merged.pdf', 'D');
// 删除临时文件
unlink('temp1.pdf');
unlink('temp2.pdf');
原因:不同 HTML 文档可能有冲突的 CSS 规则
解决方案:
原因:DomPDF 自动分页可能不符合预期
解决方案:
page-break-before: always
或 page-break-after: always
手动控制分页原因:DomPDF 处理大文档时可能内存不足
解决方案:
ini_set('memory_limit', '512M');
解决方案:
$dompdf->loadHtml(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$dompdf->set_option('defaultFont', 'SimSun'); // 设置支持中文的字体
没有搜到相关的文章