任何人都可以推荐一个支持 OpenType (.OTF) 的 Python PDF 生成器吗? [关闭]

Posted

技术标签:

【中文标题】任何人都可以推荐一个支持 OpenType (.OTF) 的 Python PDF 生成器吗? [关闭]【英文标题】:Can anyone recommend a Python PDF generator with OpenType (.OTF) support? [closed] 【发布时间】:2010-10-28 02:12:27 【问题描述】:

在 11 月询问 this question 后,我对 ReportLab 非常满意我所有的 python pdf 生成需求。

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

我正在处理的当前小部件之一将需要使用一些 OpenType 字体,很遗憾,ReportLab 刚刚从运行中移除了自己。

谁能推荐一个兼容 OpenType 的 Python PDF 生成器?

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


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

所以,我真正的问题是,谁能推荐一个支持 .otf 字体的 Python PDF 生成器?

【问题讨论】:

rinohtype 支持 TrueType 和 Postscript 风格的 OpenType 字体。 (免责声明:我是rinohtype的作者) 【参考方案1】:

这取决于... 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 的名字,所以可能值得一试。


编辑:cmets 引用了一条错误消息,该消息几乎总结了 reportlab 不支持 OTF 字体的情况。 OTF 字体可以以多种格式存储轮廓数据(参见上面的***链接)。在这种情况下,字体似乎使用 CFF 格式,reportlab 专门检查其字体解析器,reportlab 专门拒绝该格式并显示错误消息“不支持后记大纲”。

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


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

我听起来对他们很感兴趣吗?不 :-) 希望使用和喜爱它们的人能纠正我,因为我再说一遍,我对它们没有第一手经验。如果您的预算允许并且所有其他方法都失败了,这可能是一个选择。

【讨论】:

嗯,这就是我的想法,但每次我将 OTF 文件交给系统时,我都会崩溃。我怀疑那些崩溃的是引擎盖下的 Type1? 具体来说,我尝试使用的每个 .otf 文件都出现“不支持后记大纲”错误。 重新编辑:啊哈,我想我们在同一时间阅读相同的源代码。 :) 我想我这里的每个 otf 文件都使用 CFF 格式的轮廓只是我的运气不好。真可惜。谢谢,杰瑞特。 大声笑...非常好的问题。我经常使用reportlab,所以我相当投入。希望有替代方案。 这里也一样 - ReportLab 对于 ;希望有人知道如何让它与 OTF 文件一起使用。【参考方案2】:

如果 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);

【讨论】:

一个有趣的建议,跨平台,采用 BSD 风格的许可证。很高兴知道!

以上是关于任何人都可以推荐一个支持 OpenType (.OTF) 的 Python PDF 生成器吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Qt 支持哪些 OpenType 排版功能?

任何人都可以为Windows推荐磁盘I / O基准测试软件吗?

以编程方式将CFF字体转换为OpenType字体

如何使用 CFF2 表在 OpenType 中定义没有任何变体的字体

以编程方式将 CFF 字体转换为 OpenType 字体

PHP:读取字体文件的 TrueType/OpenType 元数据