wkhtmltopdf 将文本显示为块

wkhtmltopdf 将文本显示为块

我们在 Web 项目 (nodejs/compoundjs) 中使用 wkhtmltopdf。我们已经让它在我们的机器上按照我们想要的方式运行(使用开关--use-xserver)。但是,当我尝试在我们的 Ubuntu 服务器 12.04(没有 ubuntu-desktop 包)上运行它时,PDF 无法使用开关。当我们禁用开关时,PDF 会将所有字符显示为块(下图)。

如何在不安装 ubuntu-desktop 和运行 x 服务器的情况下解决这个问题?

我发现解放字体,安装 ttf-liberation 和 fonts-liberation 也无济于事。而且urw 字体,但我还没有找到 Ubuntu 的等效产品。

PDF 输出

编辑:我突然想到,无论我是否在服务器上,这都无关紧要。在我的开发机器(Ubuntu 13.04 桌面)上,我可以运行以下命令,它会生成相同的块:

wkhtmltopdf http://google.com google1.pdf

虽然这可以正确打印出 pdf:

wkhtmltopdf --use-xserver http://google.com google2.pdf

我的wkhtmltopdf版本是0.12.0。

答案1

事实上,正如所提到的,Linux 上的 wkhtmltopdf 需要相当多的 Xorg项目页面

(Linux)不再需要运行 XServer(但必须安装 X11 客户端库)

您还应该安装客户端库。

答案2

此错误报告建议 wkhtmltopdf 只需要无论xorg-x11-fonts提供什么

$ wajig list-installed xfonts
xfonts-base
xfonts-encodings
xfonts-mathml
xfonts-scalable
xfonts-utils

因此尝试安装它们。请注意,您将引入几个 X 依赖项,但不是服务器本身

答案3

如果您在 Lambda 上使用 PdfKit,则必须将 ENV 变量设置为:

"FONT_CONFIG_PATH": '/opt/fonts/' 
"FONTCONFIG_FILE": '/opt/fonts/fonts.conf'

另请参阅:https://stackoverflow.com/questions/46486261/include-custom-fonts-in-aws-lambda

如果该问题出现在本地环境中,则wkhtmltopdf必须进行全新安装才能解决此问题。

相关内容