【发布时间】:2014-05-19 04:27:26
【问题描述】:
我希望能够将 HTML 转换为 docx 或 RTF。有很多 Ruby gem 可用于创建 docx 和 RTF 文档,但它们仅用于创建一个空文档,然后您可以通过编程方式向其中添加内容。
这些 gem 的问题是无法准确地将网页格式转换为可打印页面上的相同/相似格式。 HTML 标签有很多复杂性,这些标签的位置由于它们的 CSS 属性而异。
根据我目前对创建 RTF 和 Word 的 gem 的了解,我必须编写一个 HTML 解析器并将所有 HTML 标记转换为类似的 openXML 标记,例如粗体和斜体,但是然后根据 CSS 定位东西,但是由于position: relative/absolute 渲染文档页面会非常困难。
我想知道最近是否有任何进展,或者是否有一些即将发布的 gem、服务或工具能够处理这种转换。
有一个 gem 可以将 Word 转换为 HTML,但是它没有文档,只能在 https://www.ruby-toolbox.com/gems/word_parsing 和 rubygems 上找到。而且,由于依赖问题,我在本地机器上安装它一直没有成功。由于没有文档,因此没有提及如何修复依赖项。
有一些服务可以将 PDF 转换为“word”,而将 HTML 转换为 PDF 已经被多人或宝石解决了。此服务:http://www.pdftoword.com/ 将 PDF 转换为 RTF,甚至在生成的文档中分离出图像。他们的问题是它在 Windows 服务器上运行——我需要跨平台的东西,因为我正在开发的应用程序是运行在基于 Unix 的服务器上的 Ruby on Rails。
【问题讨论】:
-
您是否考虑过查看 OpenOffice/LibreOffice 的
--headless --convert-to功能?不打算将此作为答案发布,因为我只听说它有效,从未自己使用过。 -
我没有,但是可以拥有/放入宝石形式吗?
-
我想从概念上讲,创建一个可能包含所有巨大的二进制可怕的 OOo/LO 的 gem 是可能的,但那将是相当愚蠢的。如果您可以控制环境,那么您只需确保安装了正确的软件包,并且二进制文件在您希望它们在推出期间出现的位置。如果您不控制环境,那么这可能是行不通的。当要求系统管理员在他们的机器上安装 OOo/LO 时,我不希望系统管理员会有积极的反应。
-
哈哈,是的。这对他们来说有点过分了。但是,是的,因为我正在使用 RoR 环境,所以所有设置都是非常小的。我们使用的服务器由 EngineYard 托管,只是通过 git Pulls 运行我们的代码。
标签: ruby-on-rails ruby rtf docx