Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl(模块)创建docx(Word)文档_Perl_Docx - Fatal编程技术网

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

使用Perl(模块)创建docx(Word)文档,perl,docx,Perl,Docx,我已经找了一段时间了,我决定尝试一些众包 我已经搜索了(谷歌)答案并查看了堆栈溢出有一段时间了,但我找不到一种通过Perl创建DOCX文档的合适且相对简单的方法 我想创建一个DOC文件,因为DOCX是基于XML的,所以我猜这是一个更容易实现的方法 我找到了一个RTF::Writer模块,但它的功能非常有限 PHP和其他语言有不止一个这样的库,但不幸的是,我不能使用它 我不是在Windows环境下运行,所以我不能使用任何与Office集成的东西,此外,我不想开始将Office与我的产品捆绑在一起

我已经找了一段时间了,我决定尝试一些众包

我已经搜索了(谷歌)答案并查看了堆栈溢出有一段时间了,但我找不到一种通过Perl创建DOCX文档的合适且相对简单的方法

我想创建一个DOC文件,因为DOCX是基于XML的,所以我猜这是一个更容易实现的方法

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

PHP和其他语言有不止一个这样的库,但不幸的是,我不能使用它

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

我愿意接受建议,但请提供合理的建议:)也就是说,不,你是scr*wed DOCX是不可能的

以下是我尝试过的: 1) 以一个现有的DOCX为例,直接修改XML,我所做的一切就是导致Word崩溃:)显然Word对其属性顺序非常敏感

2) 在谷歌上搜索答案,我找到了一些,比如只在Windows上工作,需要OLE和Office的Win32::Word::Writer

3) 发现了很多2010年的帖子,说这是不可能的,差不多4年过去了,可能有什么东西可以做到这一点

4) 寻找商业解决方案,但找不到,我找到了FOP,它可以创建RTF,非常接近,但它缺少我想要使用的很多样式

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

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


感谢大家的回答:}

我过去使用的一个技巧是用“.doc”文件名输出HTML


这使您对文档格式的控制不那么精细,但对于您的用例来说可能已经足够了。

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

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

OpenOffice(LibreOffice)导出过程不是100%可靠的,但是我从来没有能够得到一个简单的、可重复的测试用例来复制它——只是偶尔挂起。我添加了一个计时器来终止进程并让它重试


恐怕这不是一个完美的情况,我希望有人能找到更好的解决方案。

我走了这条路,OpenOffice::OODoc不仅不可靠,而且出乎意料:)我让它在某些系统上工作,而在其他系统上,我没有理由拒绝调试/发现我面临类似的问题,我需要从Perl中打开和修改.docx文件的地方-你做得更好了吗?似乎MsOffice::Word::HTML::Writer在不需要OpenOffice/Word甚至WindowsNice的情况下创建docx文件方面取得了一些进展。我还发现,系统上现有的OpenOffice文档可以直接对扩展名进行.doc更改,而无需进行其他更改。但在.docx中失败。