【问题标题】:Where does wkhtmltopdf look for fonts on Debian?wkhtmltopdf 在哪里寻找 Debian 上的字体?
【发布时间】:2017-02-19 02:04:44
【问题描述】:

这与(并且源于同一问题)密切相关 What is the Debian equivalent of urw-fonts (needed for utf-8 in wkhtmltopdf)?

但我认为这本身就是一个有效的问题。如链接中所述,我正在尝试使用 wkhtmltopdf(通过 Debian 中的命令行)将多语言 utf-8 html 文档转换为 pdf。几种语言未正确呈现并显示为白色或黑色矩形,可能是因为 wkhtmltopdf 无法找到或访问必要的字体。

问题: wkhtmltopdf 在系统 (Debian) 的哪个位置查找字体,在给定特定命令的情况下,我如何检查它正在查找的字体(如果可能)?

【问题讨论】:

    标签: utf-8 fonts debian wkhtmltopdf system-font


    【解决方案1】:

    字体在/usr/share/fonts/下。

    此命令显示命令foo 访问的字体。

    strace -e open -o >(sed -n '/^open("\/usr\/share\/fonts\//p') foo
    

    strace 显示系统调用。 -e open 表示仅显示打开文件的系统调用。 -o >(sed -n '/^open("\/usr\/share\/fonts\//p') 表示将输出输出到 sed,它只打印出打开 /usr/share/fonts/ 中文件的系统调用。

    对于某些程序,打开详细输出并检查其标准错误是否说明使用了哪些字体很有用。

    针对您的具体问题,还要检查 HTML 文件的编码是否正确指定。

    以 strace 的输出为例

    open("/usr/share/fonts/X11/Type1/n019004l.pfb", O_RDONLY) = 8
    

    它的格式与在 c 程序中使用 open 的格式相同。 /usr/share/fonts/X11/Type1/n019004l.pfb 是文件的路径。 O_RDONLY 表示以只读方式打开它。 8 表示操作成功,得到的文件描述符为8。请参考open man page。

    【讨论】:

    • 谢谢,该命令似乎有效。你能解释一下下面的输出是什么意思,特别是 50% 吗?这些是前 2 行,其他的格式相同:open("/usr/share/fonts/X11/Type1/n019004l.pfb", O_RDONLY) = 8] 50% open("/usr/share/fonts/X11/Type1/n019003l.pfb", O_RDONLY) = 8
    • 就您的其他 cmets 而言:我已经检查过是否有 wkhtmltopdf 的详细选项(没有找到),并且我很确定在 html 和命令中都正确指定了编码行(在此处找到多个成功使用的示例)。无论如何,很好的建议。
    猜你喜欢
    • 2018-06-24
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2012-05-21
    • 2011-08-01
    相关资源
    最近更新 更多