使用Perl(模块)创建docx(Word)文档

时间:2013-12-19 13:22:37

标签: perl docx

我一直在寻找一段时间,我决定尝试一些众包。

我已经搜索过(谷歌搜索)答案并查看了Stack Overflow一段时间了,我找不到通过Perl创建DOCX文档的正确且相对简单的方法。

我想创建一个DOC文件,由于DOCX是基于XML的,我猜测这将是一种更容易实现的方法。

我找到了一个RTF::Writer模块,但其功能非常有限。

PHP和其他语言有不止一个这样的库,但遗憾的是我无法使用它。

我没有在Windows环境中运行,所以我不能使用任何可以与Office集成的东西,此外我不想开始将Office与我的产品捆绑在一起。

我愿意接受建议,但请提供明智的建议:)即不,你是scr *结婚DOCX是不可能的。

这是我尝试过的: 1)使用现有的DOCX,并直接修改XML,我通过这个实现的所有操作都会导致Word崩溃:)显然Word对其属性顺序非常敏感

2)用Google搜索获得答案,我找到了一些,例如Win32::Word::Writer只适用于Windows并需要OLE和Office

3)从2010年发现很多帖子,说它不可能,差不多4年过去了,可能还有什么可以做到的

4)寻找商业解决方案,找不到一个,我发现FOP能够创建RTF,这是非常接近的,但它缺乏很多我想要使用的样式

5)很多事情(代码和模块)允许从DOCX中提取数据,但没有任何东西可以创建一个,很奇怪

6)发现被遗弃的代码如OpenOffice::OODoc在2010年停止编写,当然需要安装OpenOffice,并且可能还需要非无头(即需要GUI系统)

谢谢你们的回答:}

2 个答案:

答案 0 :(得分:2)

我过去曾经使用过的一个作弊行为就是使用" .doc"输出HTML。文件名。

这样可以减少对文档格式的细粒度控制,但对于您的用例可能就足够了。

答案 1 :(得分:0)

我所管理的最接近的是生成一个OpenOffice文档,然后使用它导出为.docx(在无头模式下)。

您需要安装一些字体,但没有GUI。我使用OpenOffice :: OODoc,这足以让我打开现有文档并添加文本/图片。

OpenOffice(LibreOffice)导出过程并非100%可靠,但我从来没有能够获得一个简单,可重复的测试用例来重现它 - 偶尔会挂起。我添加一个计时器来终止进程并让它重试。

不是一个完美的情况,我害怕,我希望有人有更好的解决方案。