全部!我正在写一个可以在谷歌应用引擎上运行的应用程序。我正在使用ReportLab生成PDF文件。然而,该应用程序需要能够生成带有cyrilic文本的PDF。所以我需要加载一些True Type字体。我应该写这样的
pdfmetrics.registerFont(TTFont('Verdana', 'verdana.ttf'))
我尝试将"verdana.ttf"文件复制到/reportlab/fonts
,但registerFont
再次失败。然而,在桌面环境中,它运行良好。
如何从GAE上运行的应用程序加载True Type Font?
提前感谢
如果您使用docker容器来完成这项工作,或者任何linux环境都只使用
pdfmetrics.registerFont(TTFont('Verdana', 'Vera.ttf'))
或
pdfmetrics.registerFont(TTFont('Verdana-Bold', 'VeraBd.ttf'))
而不是
pdfmetrics.registerFont(TTFont('Verdana', 'verdana.ttf'))
它对我有效。
根据文档:
在Marius的原始补丁中,文件名应该是完全正确的,但我们已经修改了一些内容,如果文件名是相对的,则在当前目录中搜索相应的文件,然后在reportlab.rl_config.TTFSearchpath指定的目录中搜索!
由于上传时无法修改/reportlab/fonts
,您只需上传它,然后指定相对于当前工作目录的位置(应该与Python代码所在的目录相同,但如果不起作用,您可能需要查看GAE文档,了解可以在服务器上放置支持文件(如字体(的位置(。
但也许我误解了,这就是你试图做但失败的事情?
下面的答案很好,但在谷歌应用引擎上不起作用,我不知道为什么!以下是一个基于flask开发人员应用程序目录的简单示例:
~/myapp
|-- mymodule.py
|-- myfont.ttf
所以你的代码是:
font = r"myfont.ttf"
pdfmetrics.registerFont(TTFont("myfont", font))