【问题标题】:How do I convert HTML into document form? [duplicate]如何将 HTML 转换为文档形式? [复制]
【发布时间】:2014-05-19 04:27:26
【问题描述】:

我希望能够将 HTML 转换为 docxRTF。有很多 Ruby gem 可用于创建 docx 和 RTF 文档,但它们仅用于创建一个空文档,然后您可以通过编程方式向其中添加内容。

这些 gem 的问题是无法准确地将网页格式转换为可打印页面上的相同/相似格式。 HTML 标签有很多复杂性,这些标签的位置由于它们的 CSS 属性而异。

根据我目前对创建 RTFWord 的 gem 的了解,我必须编写一个 HTML 解析器并将所有 HTML 标记转换为类似的 openXML 标记,例如粗体和斜体,但是然后根据 CSS 定位东西,但是由于position: relative/absolute 渲染文档页面会非常困难。

我想知道最近是否有任何进展,或者是否有一些即将发布的 gem、服务或工具能够处理这种转换。

有一个 gem 可以将 Word 转换为 HTML,但是它没有文档,只能在 https://www.ruby-toolbox.com/gems/word_parsing 和 ruby​​gems 上找到。而且,由于依赖问题,我在本地机器上安装它一直没有成功。由于没有文档,因此没有提及如何修复依赖项。

有一些服务可以将 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


【解决方案1】:

我发布了一个小 gem,它从 html 模板生成 docx 文件。

https://github.com/docxtor/docxtor

它可以插入具有给定<div> 包含的页码、页脚/页眉,将<h1> 标题转换为文档标题。

问题是所有文字处理器对docx 格式的解析都不同。因此,Mac 上的 Libre Office 可以正常读取生成的文件,但无法在 Google Docs 中打开。

非常感谢任何有关 gem 的帮助和/或反馈!

【讨论】:

    【解决方案2】:

    我也在寻找这种解决方案,我认为在https://github.com/bagilevi/docx_builder 上查看更好。不过我还没试过。也阅读这篇文章http://rubythings.blogspot.com/2011/05/creating-word-documents-in-rails.html

    如果有人能提出更好的解决方案,我们都会感激不尽 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多