如何将HTML和CSS添加到PDF中

如何将HTML和CSS添加到PDF中

技术背景

在开发过程中,有时需要将HTML和CSS内容转换为PDF文件。例如,生成报表、导出页面内容等。这就需要借助一些工具和库来实现HTML和CSS到PDF的转换。

实现步骤

工具和库选择

  1. wkhtmltopdf:开源、基于WebKit的免费工具。可通过命令行将HTML页面转换为PDF。
  2. PDFKit:适用于构建PDF的工具,可考虑剥离其Node.js依赖以在浏览器中运行。
  3. PrinceXML:强大的HTML/CSS转PDF转换器,但非免费。
  4. HTML2PDF:有一定的转换能力,但可能存在资源消耗大等问题。
  5. mPDF:易于使用,能处理动态、用户生成的数据,可生成PDF。
  6. DOMPDF:需要对HTML+CSS代码进行修改以适配其工作方式。
  7. TCPDF:免费且具有一定的HTML转PDF功能。
  8. Snappy:基于wkhtmltopdf的PHP5开源库,可用于生成PDF。
  9. DocRaptor:使用PrinceXML作为“引擎”。

部分工具的使用示例

mPDF

  1. 下载并解压mPDF到指定文件夹yourfolder
  2. yourfolder中创建file.php,并插入以下代码:
1
2
3
4
5
6
7
<?php
include('../mpdf.php');
$mpdf = new mPDF();
$mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output();
exit;
?>
  1. 在浏览器中打开file.php

pdfToHtml

  1. pdftohtml.exe提取到根文件夹。
  2. 在根文件夹的anyfile.php中添加以下代码(假设存在example.pdf文件):
1
2
3
4
5
6
7
8
9
10
<?php
$source = "example.pdf";
$output_fold = "FinalFolder";

if (!file_exists($output_fold)) {
mkdir($output_fold, 0777, true);
}
$result = passthru("pdftohtml $source $output_fold/new_filename", $log);
//var_dump($result); var_dump($log);
?>
  1. 进入FinalFolder,可找到转换后的文件。

核心代码

使用mPDF生成PDF

1
2
3
4
5
6
7
<?php
include('../mpdf.php');
$mpdf = new mPDF();
$html = '<html><body><h1>Hello, World!</h1></body></html>';
$mpdf->WriteHTML($html);
$mpdf->Output('output.pdf', 'D');
?>

使用wkhtmltopdf命令行转换

1
wkhtmltopdf input.html output.pdf

最佳实践

  1. 选择合适的工具:根据项目需求、预算和性能要求选择合适的HTML转PDF工具。
  2. 优化HTML和CSS:确保HTML和CSS代码规范、简洁,避免复杂的布局和样式。
  3. 资源管理:对于资源消耗大的工具,合理设置PHP配置参数,如pcre.backtrack_limitmemory_limitmax_execution_time
  4. 使用在线服务:如果对性能和兼容性有较高要求,可考虑使用在线服务,如PDFShift、Restpack等。

常见问题

  1. pcre.backtrack_limit问题:在使用HTML2PDF时,可能会遇到pcre.backtrack_limit限制,需要调整php.ini中的pcre.backtrack_limit值。
  2. 资源消耗大:部分工具如HTML2PDF资源消耗大,可考虑优化代码或选择其他工具。
  3. CSS支持问题:一些工具对CSS的支持不完全,需要对HTML+CSS代码进行修改以适配工具。
  4. 兼容性问题:不同工具对HTML和CSS的兼容性不同,可能需要进行测试和调整。

如何将HTML和CSS添加到PDF中
https://119291.xyz/posts/how-to-add-html-and-css-into-pdf/
作者
ww
发布于
2025年5月27日
许可协议