有没有一种简单的方法在Ruby应用程序中创建Word文档(.docx)?实际上,在我的情况下,它是从Linux服务器提供的Rails应用程序.
类似于Prawn的宝石,但对于DOCX而不是PDF将是伟大的!
如前所述,似乎没有任何库可以在Ruby中操作Open XML文档,但OpenXML Developer提供了有关Open XML文档格式的完整文档.
如果你想要的是发送为每个用户定制的标准文档(如格式信件)的副本,那么它应该相当简单,因为DOCX是包含目录层次结构中各个部分的ZIP文件.拥有一个DOCX"模板",其中包含您要发送给all
用户的所有部分和树结构(没有真实内容),然后只需创建包含所需用户特定内容的新(或修改现有)部分并将其注入在将ZIP(DOCX文件)发送给用户之前进入ZIP(DOCX文件).
例如:您可以document-template.xml
包含亲爱的[USER-PLACEHOLDER] : . 当用户请求文档时,[USER-PLACEHOLDER]
使用用户名替换,然后将结果添加document.xml
到your-template.docx
ZIP文件(其中包含Word文档中所需的所有图像和其他部分),并将生成的文档发送给用户.
请注意,如果将.docx
文件重命名为.zip
它,则可以轻松地探索内部零件的结构和格式.您可以使用任何ZIP操作工具或使用代码以编程方式轻松删除或替换图像或其他部分.
如果不访问API以使工作更轻松,则使用原始XML生成具有完全自定义内容的全新Word文档将非常困难.如果您确实需要这样做,可以考虑安装Mono,然后使用VB.NET,C#或IronRuby使用Open XML Format SDK 1.0创建Open XML文档.由于您只是使用Microsoft.Office.DocumentFormat.OpenXml.Packaging命名空间来操作Open XML文档,因此它在Mono中可以正常工作,它似乎支持SDK所需的一切.
您可以使用Apache POI.它是用Java编写的,但与Ruby集成作为扩展
这是一个老问题,但有一个新的答案.如果您想将HTML文档转换为Word(docx)文档,只需使用'htmltoword'gem:
https://github.com/nickfrandsen/htmltoword
我不确定为什么有回答蠕变,每个人都开始发布模板解决方案,但这回答了OP的问题.就像Prawn一样,除了Word而不是PDF.
更新:
还有pandoc和pandoc的API包装器叫做docverter.由于pandoc是一个haskell库,因此两者的安装都稍微复杂一些.
也许这个宝石对你很有意思.
https://github.com/trade-informatics/caracal/
它喜欢大虾,但有docx.
我知道如果你将HTML文档作为带有.doc扩展名的word文档提供,它将在Word中打开就好了.只是不要做任何花哨的事情.
编辑:以下是使用经典ASP的示例.http://www.aspdev.org/asp/asp-export-word/