跳转到主要内容

BookStack 文章 PDF 导出及解决中文乱码问题

BookStack PDF导出,有两个选择,默认情况下使用 dompdf ,但也可以安装 wkhtmltopdf 来追求更完美的效果。

PDF渲染

默认情况下,BookStack使用dompdf将页面导出为PDF文档。使用dompdf的好处是,它不需要任何额外的安装或设置,但渲染功能有些有限。
作为替代方案,您可以使用wkhtmltopdf生成PDF文档。wkhtmltopdf使用qt webkit呈现引擎提供更准确的整体结果。

使用wkhtmltopdf

wkhtmltopdf的预编译二进制文件可以在其网站的下载页面上找到。bookstack将在bookstack安装的基本文件夹中检查名为wkhtmltopdf的文件。如果找到,它将使用它来呈现PDF。如果不存在,它将检查.env文件中的wkhtmltopdf变量。可以使用此变量将备用位置设置为wkhtmltopdf:

配置 .env 使wkhtmltopdf 生效
vi .env
wkhtmltopdf=/user/local/bin/wkhtmltopdf
更新BookStack配置缓存
php artisan cache:clear
php artisan view:clear
php artisan config:cache
下面以FreeBSD为例,安装 wkhtmltopdf 和 中文 字体
cd /usr/ports/converters/wkhtmltopdf && make install clean
cd /usr/ports/x11-fonts/wqy && make install clean
cd /usr/ports/print/adobe-cmaps  && make install clean
刷新字体生效
fc-cache -f -v

因为系统没有安装对中文字体的支持,所以导出的PDF会如下图产生乱码

11111.jpg

安装完字体,刷新生效后再次导出,中文方块乱码问题就解决了

222222.jpg