PHP实现HTML转PDF的解决方案

最近在做一个笔记网站,想要做一个把笔记转成pdf的功能.尝试了许多方案,最终几乎完美地解决了,在此记录以供参考.

前记

在正文之前,介绍一下尝试过的解决方案以及踩的坑.

使用LibreOffice的命令行

composer包: viterbit/liboffice-converter
这个方案只要在linux中安装了中文字体,基本不会出现中文乱码问题,但是无法使用css样式等.

centos7安装字体命令 yum groupinstall Fonts

使用spipu/html2pdf

这也是一个比较流行的composer包,经过github上的资料,虽然解决了中文乱码的问题,但是还有其他问题:

  • 无法使用css和样式
  • 默认会出现中文乱码
  • 对于不支持的标签会直接报错,比如<header></header>,<xmp></xmp>

第三个问题虽然可以简单地写一个字符串替换,但还是不够完美,而且无法使用css样式.

使用dompdf/dompdf

这个算是至此为止最好的解决方案了,有如下好处:

  • 支持css和样式
  • 支持H5的规则,css 的 @import,url()都能正常使用
  • PHP原生
  • 默认有乱码问题,但是有很好的方案,直接在css引入字体就行,不过要注意使用完整uri,比如http://xxx.ttf

这个方案似乎是最好的,但是最终会出现一个奇怪的问

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值