将静态Html页面转pdf,找了三四个方案,最终还是选择了Dompdf,具体原因在此略过,下面开始记录如何上手Dompdf:

1.首先下载Dompdf源码:

https://github.com/dompdf/dompdf

git clone https://github.com/dompdf/dompdf.git .
git submodule init
git submodule update

2.源码部署到一个站点,然后就可以访问这个站点,会自动跳转到www目录下,是Dompdf的介绍和demo页面,操作列表:

其中通过Setup/Config 可以查看System Configuration和Dompdf Configuration两个状态表格,然后是消灭红色标记的配置,比如目录写入权限和修改默认用户名和密码,其中修改用户名和密码是在dompdf_config.inc.php中:

/**
 * Username and password used by the configuration utility in www/
 */
def("DOMPDF_ADMIN_USERNAME", "xxxxxx");
def("DOMPDF_ADMIN_PASSWORD", "xxxxxx");

所有红色标记消灭完成之后,开始下一步:导入中文字体

由于默认是没有支持中文的,所以需要自行导入中文字体,在这里推荐

droidsans字体,大概是3M,然后在

菜单列表Fonts中进行install,这里会有

Name:
Normal:
Bold:
Bold italic:
Italic:

几个空,我在这里name为droidsans,下面的字体类型一次只选一个,但是每次选的都是droidsans这个字体进行install,全部安装完成后就可以开始测试demo。

当然,在Demo中已经可以看到很多例子了,这里主要是阐述将包含中文html文件转成pdf:

首先在www/test/ 下面新增一个html文件:

test.html

<!DOCTYPE html>
<html>
<style>
    *{font-family:droidsans}//这里是将本页面的字体设置为上一步设置的中文字体
</style>
<head>

</head>
<body>
<p>光合联萌</p>
</body></html>


然后直接访问:

http://站点域名/dompdf.php?base_path=www%2Ftest%2F&options[Attachment]=0&input_file=test.html&options[f]=test.pdf

其中参数说明:

  • base_path 文件路径
  • options 会有很多参数 
    • 比如 Attachment 为0时只显示pdf不下载,为1时下载生成的pdf
    • f则表示生成的pdf文件的名称
  • input_file 要进行转换的html文件名 

最后访问这个链接就可以得到显示中文“光合联萌”的test.pdf文件了。

最后说明:

  • 如果要生成带有图片的pdf,那么html文件中引入的图片必须在同一个站点,不能是超链接, 默认设置是这样,不过可以通过DOMPDF_ENABLE_REMOTE配置
  • 如果是中文一定要指定中文字体,否则是乱码
  • 配置文件要熟读dompdf_config.inc.php
  • 当然还有分页等一系列技巧,自行参照项目提供的demo尝试吧