2

全部!我正在编写一个可以在 Google App Engine 上运行的应用程序。我正在使用 ReportLab 生成 PDF 文件。但是,应用程序需要能够生成带有西里尔文本的 PDF。所以我需要加载一些 True Type 字体。我应该写这样的东西

pdfmetrics.registerFont(TTFont('Verdana', 'verdana.ttf'))

我试图将“verdana.ttf”文件复制到 /reportlab/fontsregisterFont再次失败。但是在桌面环境中它工作正常。

如何从 GAE 上运行的应用程序加载 True Type 字体?

提前致谢

4

3 回答 3

1

如果您使用 docker 容器来完成这项工作,或者任何 linux 环境只需使用

pdfmetrics.registerFont(TTFont('Verdana', 'Vera.ttf'))

或者

pdfmetrics.registerFont(TTFont('Verdana-Bold', 'VeraBd.ttf'))

代替

pdfmetrics.registerFont(TTFont('Verdana', 'verdana.ttf'))

它对我有用。

于 2016-12-27T08:32:27.080 回答
0

根据文档:

在 Marius 的原始补丁中,文件名应该是完全正确的,但是我们已经修改了一些东西,如果文件名是相对的,那么在当前目录中搜索相应的文件,然后在 reportlab.rl_config.TTFSearchpath 指定的目录中完成!

由于上传时您将无法修改/reportlab/fonts,因此您只需上传它,然后指定相对于当前工作目录的位置(应该与您的 Python 代码所在的目录相同,但如果没有'不起作用,您可能需要查看 GAE 文档,了解可以在何处放置支持文件(如服务器上的字体)。

但也许我误解了,这就是你试图做的,但失败了?

于 2011-04-10T01:40:19.580 回答
0

下面的答案很好,但在 Google App Engine 上不起作用我不知道为什么!下面是一个基于 app 目录的简单示例,供烧瓶开发者使用:

~/myapp

       |-- mymodule.py
       |-- myfont.ttf

所以你的代码将是:

font = r"myfont.ttf"
pdfmetrics.registerFont(TTFont("myfont", font))
于 2015-06-12T09:48:08.210 回答