任何人都可以推荐支持OpenType(.OTF)的Python PDF生成器吗?

时间:2009-05-21 22:32:35

标签: python pdf-generation opentype

在11月回复this question之后,我对ReportLab的所有python pdf生成需求感到非常满意。

然而,事实证明,虽然ReportLab将使用常规TrueType(TTF)字体,但它不支持OpenType(OTF)字体。

我正在处理的一个当前小部件需要使用一些OpenType字体,所以很遗憾,ReportLab刚刚从运行中删除了。

有人可以为Python推荐与OpenType兼容的PDF生成器吗?

它不需要花哨 - 我只需要能够将UTF-8文本放到页面上。


更新:OpenType字体有两种风格:TrueType风格和PostScript风格,基于它们存储字形轮廓的方式。 ReportLab只支持TypeType样式。在Windows上,事实证明,您可以通过扩展来区分:TrueType样式的TrueType和OpenType是.TTF,PostScript样式的OpenType是.OTF。

所以,我真正的问题是,有人可以推荐支持.otf字体的Python PDF生成器吗?

2 个答案:

答案 0 :(得分:4)

如果reportlab具有本机OTF支持会很好,但是大多数人真正需要的是特定OpenType字体的TrueType版本。我使用这个fontforge脚本将我需要的字体转换为TrueType,并获得完美的结果。

来自http://www.se.eecs.uni-kassel.de/~thm/OpenOffice.org/bugs.html

#!/usr/bin/fontforge
# Quick and dirty hack: converts a font to truetype (.ttf)
Print("Opening "+$1);
Open($1);
Print("Saving "+$1:r+".ttf");
Generate($1:r+".ttf");
Quit(0);

答案 1 :(得分:4)

那种依赖... OpenType旨在扩展TrueType(和uses the general structure of TrueType internally) - 以至于有些人在reportlab中有reported success using OpenType fonts;我想这一切都取决于你使用字体是否有任何特殊的OTF特性。

事实上,有些comments in the TTFontFile class source for reportlab提到OpenType的名字,所以它可能值得一试。


编辑:评论引用了一条错误消息,该消息几乎总结了reportlab无法支持OTF字体的情况。 OTF字体可以以多种格式存储大纲数据(请参阅上面的维基百科链接)。在这种情况下,字体似乎使用CFF格式,reportlab专门检查其字体解析器,以及哪个reportlab明确拒绝错误消息“不支持postscript轮廓”。

这几乎结束了我的字体和PDF生成器专业知识。抱歉!期待看到任何替代方案的建议。


编辑2:好的,看看Django的文档,我看到他们引用了另一个完整的PDF api:pdflib。我没有使用PDFlib的直接经验,而且它不是免费的(既不是价格也不是许可证)。我也发现他们的文档很烦人,因为我不能在没有下载整个bloomin包的情况下看到英文API(不知道是否有免费试用版或者什么)。不过,我确实看过德国文档,它们神秘地免费提供,单独下载。我的第二语言大学德语确实让我发现他们声称支持带有postscript轮廓的unicode和8位OpenType字体。

我是否对他们充满热情?不是:-)希望有人使用和爱他们会纠正我,因为我重申我没有他们的第一手经验。如果您的预算允许且所有其他方法都失败,则可能是一个选项。