谷歌应用引擎、ReportLab和True Type字体



全部!我正在写一个可以在谷歌应用引擎上运行的应用程序。我正在使用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))

最新更新