我正在寻找一种将 HTML 文本转换为 RTF 字符串的方法。有没有做这项工作的图书馆。我在我的项目中动态获取 html 内容并需要以 RTF 格式呈现。我正在使用 HTML 解析器将 HTML 文本转换为普通字符串,然后尝试使用 PyRTF 转换为 RTF 格式。有没有更好的方法可以做到这一点。在此先感谢。
3 回答
RTF 似乎是一种难以转换的格式。例如,我尝试在 Mac OS X 上的应用程序之间进行剪切和粘贴,其中 RTF 是一种通用语言。其中一些应用程序是 Microsoft 应用程序(因为 RTF 是 Microsoft 开发的格式),而其他应用程序则不是。从一个表面上讲 RTF 的应用程序复制到另一个应用程序时,即使是字体大小、字体、行间距和列表样式(有序或无序)等基本格式信息也会变得混乱。简单地说,就是一团糟。
我一直在寻找以编程方式读取、写入和转换 RTF 的方法,最好是从 Python 中。我在 PyPI 上发现了许多包,尝试它们的经历令人失望。例如,当当前版本为 1.9.1 时,它们将支持 RTF 1.5。RTF 已经存在了很长时间,但 2005 年的规范并不是最近的。有很多陷阱和不兼容之处。很多。
现在,我并不是说这是不可能的,或者没有其他库可以解决问题。例如,我没有尝试过zopyx.convert
这里其他人提到的。也许它很棒。但是看看它的依赖项——Java、FOP 等——它看起来像是一个非常复杂(因此可能很脆弱)的工具链。我在 github 上阅读了它的代码,而 Python 实际上只是作为协调单板存在的。它组织了外部工具 XFC、XINC、FOP 和 PrinceXML——这四个中的三个是商业软件。这包括处理 RTF 的关键 XFC 部分。让我怀疑。
我发现有两个转换器值得一看: 如果您使用的是 Mac,textutil命令行程序实际上是我见过的更好、更简单的工具之一。
textutil -convert html filename.rtf -output filename.html
另一个值得考虑的格式化引擎是LibreOffice。它是免费的、开源的、相当适合自动化的,并且是作为互操作性中心的良好基础。这不仅仅是猜测。我围绕它构建了复杂的多格式文档工作流程。
我会质疑你为什么要尝试进入 RTF。这似乎是您试图逃避的一种文档格式。但是如果你需要去那里,textutil 和 LibreOffice 是我发现的最糟糕的机制。
我看到这个问题已经有一年多了,但我想我还是会做出贡献的。我最近也有类似的需求,于是求助于PyRTF,这是一个小而强大的 Python 模块,可以从文本文件构造 RTF 文档。您可以使用Beautiful Soup来抓取 HTML,逐个标记地沿着解析树标记,并使用 PyRTF API 构造适当的对象(表格、单元格、段落、部分或文档)。
API 本身非常精细,并允许大量自定义格式(字体文本、对齐方式、颜色、页眉、页脚等)
希望这可以帮助。