将HTML导出为PDF时出现中文和日文字符编码问题

我运行一个基于Web的时间线制作工具,允许用户使用HTML / JavaScript创建时间轴,然后将它们导出为PDF文件,以便在完成后进行打印。

当时间轴包含某些Unicode字符时,我有几个用户报告将时间轴导出为PDF的问题。 例如,这是一个屏幕截图,显示了生成的网页和PDF文件:

在此处输入图像描述

我一直试图解决为什么像块元素和格鲁吉亚这样的Unicode字符块会输出但中文和日文不会输出的原因。 此外,当我在本地计算机上执行导出时,导出正常工作,但在Heroku上导出时会导致上述输出。

有谁知道这可能导致什么?

为了完整性,后端在Ruby on Rails中,它使用PDFKit gem将HTML页面转换为PDF,并且该站点在Heroku上托管。

听起来它可能是服务器上的字体的问题。 时间轴的网页版本正确呈现,因为您显然在运行浏览器的客户端计算机上具有正确的字体。 另一方面,PDF是在服务器上生成的,因此必须使用可用的字体。

如果是这种情况,那么使用服务器上存在并支持正确的CJK字符的字体应解决此问题。

如果您确实使用Docker并且遇到上述相同问题,请尝试在Docker上安装日语字体: apt-get install fonts-takao-mincho

如果它工作,然后将其添加到您的Dockerfile:如果您确实使用Docker并遇到相同的问题,只需在Docker上安装日语字体: apt-get install fonts-takao-mincho

如果它工作,然后将其添加到您的Dockerfile:

 apt update && apt install -y \ # japanese fonts fonts-takao-mincho 
Interesting Posts