我正在使用基于Qt的wkhtmltopdf来生成本地网页的PDF版本。到目前为止,当我直接从命令行运行它时,它完全符合我的需要。例如,这有效:
wkhtmltopdf http://localhost/~acobster/foo/?render=1 ~/Desktop/foo.pdf
但是,当我尝试从PHP脚本调用它时,它会失败。这似乎与运行nobody
有关,因为
sudo -u nobody wkhtmltopdf http://localhost/~acobster/foo/?render=1 ~/Desktop/foo.pdf
导致它吐出这个错误大约一百次:
wkhtmltopdf [45642]:ATSFontGetFileReference失败:错误 -120。 Qt:internal:-108:错误ATSUMeasureTextImage text / qfontengine_mac.mm:1136
我相信它抱怨无法呈现字体“Palatino”,我在页面中的CSS字体系列规则中指定了该字体。但即使我用“时代”取代帕拉蒂诺并再次作为无人再次奔跑,我也明白了:
QPainter::begin(): Returned false
为什么我能够将此字体作为常规用户处理,而不是nobody
? Qt有什么与该用户不能很好地搭配的吗?