我们在 Web 项目 (nodejs/compoundjs) 中使用 wkhtmltopdf。我们已经让它在我们的机器上按照我们想要的方式运行(使用开关--use-xserver
)。但是,当我尝试在我们的 Ubuntu 服务器 12.04(没有 ubuntu-desktop 包)上运行它时,PDF 无法使用开关。当我们禁用开关时,PDF 会将所有字符显示为块(下图)。
如何在不安装 ubuntu-desktop 和运行 x 服务器的情况下解决这个问题?
我发现解放字体,安装 ttf-liberation 和 fonts-liberation 也无济于事。而且urw 字体,但我还没有找到 Ubuntu 的等效产品。
编辑:我突然想到,无论我是否在服务器上,这都无关紧要。在我的开发机器(Ubuntu 13.04 桌面)上,我可以运行以下命令,它会生成相同的块:
wkhtmltopdf http://google.com google1.pdf
虽然这可以正确打印出 pdf:
wkhtmltopdf --use-xserver http://google.com google2.pdf
我的wkhtmltopdf版本是0.12.0。
答案1
答案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
必须进行全新安装才能解决此问题。