admin管理员组

文章数量:1630183

一、踩坑:

1.直接把html内容保存到后缀为.docx或.doc的文件里,这种的图片并没有真正写入文件,离线时,就看不到图片了

2.mpdf ,图片可以,但是表单样式错乱了

二、最终理想实现方式:感谢(https://blog.csdn/weixin_34186128/article/details/88705363)

wkhtmltopdf

安装:

1.yum install -y fontconfig libX11 libXext libXrender libjpeg libpng xorg-x11-fonts-75dpi xorg-x11-fonts-Type1

2.wget https://github/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm

3.rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm

4.mkdir -p /usr/share/fonts/chinese/TrueType

5.mv simsun.ttc /usr/share/fonts/chinese/TrueType/

其中simsun.ttc是 从C:\Windows\Fonts下复制得到的。

三、理论:先把富文本的html内容保存到一个html文件里,并且允许通过url访问,然后通过 exec(''wkhtmltopdf 'http://xxx/xxx.html ./xxx.pdf'') 的方式将内容转成pdf。

四、遇到的问题和解决方式:

1).上面第4和5是解决乱码的,不管用的话,试试把百度首页转成pdf,看中文乱码吗,如果百度不乱码,你的乱码,那就在富文本内容前面加上

<!Doctype html>
<html xmlns=http://www.w3/1999/xhtml>
    <head>   
        <meta http-equiv=Content-Type content="text/html;charset=utf-8">
        <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
    </head>
    <body>

在富文本内容末尾加上

    </body>
</html>

应该就可以了。 

2).linux环境中因为环境问题,也可能是wkhtmltopdf自身问题。如果pdf名或者路径中有中文,它转不出pdf文件。我的解决方式是,把它转到项目根路径下一个md5方法得到的字符串作为pdf文件名(防止重复),生成后,接着通过

exec('mv xxx.pdf xxx/xxx(含中文).pdf')

的方式,将pdf文件粘贴到目标目录下,可以重命名为含中文的文件名 

本文标签: 文本内容PDF