使用Python将HTML转换为RTF字符串

16

我正在寻找一种将HTML文本转换为RTF字符串的方法,是否有可以完成此任务的库。在我的项目中,我动态获取HTML内容,并需要将其呈现为RTF格式。我正在使用HTML解析器将HTML文本转换为普通字符串,然后尝试使用PyRTF将其转换为RTF格式。是否有更好的方法可以完成此任务。提前感谢。


1
你看过这个吗?http://pypi.python.org/pypi/zopyx.convert2 - Janne Karila
3个回答

5

RTF似乎是一个不稳定的格式,难以进行转换。例如,在Mac OS X上,我尝试在应用程序之间剪切和粘贴,其中RTF是一种“通用语言”。这些应用程序中有一些是Microsoft应用程序(因为RTF是由Microsoft开发的格式),而其他应用程序则不是。即使是基本的格式信息,如字体大小、字体类型、行距和列表样式(有序或无序),在从一个RTF应用程序复制到另一个应用程序时也会混乱。简而言之,这是一团糟。

我已经搜索了一些方法来编程读取、写入和转换RTF,最好是使用Python。我在PyPI上找到了许多软件包,但试用它们的过程是令人失望的。它们可能支持RTF 1.5,但当前版本是1.9.1。虽然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是我发现的最不差的机制。

嘿,乔纳森,你还记得你是如何使用LibreOffice进行格式设置的吗?例如,在Windows 7命令行上,我尝试使用以下命令:“soffice.exe” -headless -convert-to rtf:“Rich Text Format” C:\Hello_world.html,但什么也没有发生... - sager89
我在MacOS X上使用的调用是soffice --headless --invisible --convert-to rtf test.html。我认为--invisible不是必需的,只是一个“更少可见”的选项。因此,问题似乎要么是您需要双破折号选项前缀(很可能),要么是您对rtf格式规范的附加说明:“Rich Text Format”。尝试:"soffice.exe" --headless --convert-to rtf C:\Hello_world.html - Jonathan Eunice
对于Windows系统,显然你应该只使用一个连字符。实际上我也没有使用根驱动器,只是为了简单起见在这个例子中想要一个短路径。我最终解决这个问题的方法是使用Visual Basic和这里给出的答案:https://dev59.com/IHVC5IYBdhLWcg3w51lv - sager89

0

我知道这个问题已经超过一年了,但我还是想做出贡献。最近我也有一个类似的需求,于是找到了 PyRTF,它是一个小而强大的 Python 模块,可以从文本文件构建 RTF 文档。您可以使用 Beautiful Soup 来爬取 HTML,逐级解析标签,并使用 PyRTF API 构建适当的对象(表格、单元格、段落、节或文档)。

API 本身非常精细,允许进行各种自定义格式设置(字体文本、对齐、颜色、页眉、页脚等)

希望这能帮到您。


0

2
只有在您安装了或者愿意安装XFC、XINC、FOP和PrinceXML时才有用——其中三个是商业软件。 - Jonathan Eunice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接