我怎么能以编程方式打开一个docx文件,编辑它,然后再次密封它而不会破坏它?

时间:2013-08-20 00:47:21

标签: php converter openoffice.org docx libreoffice

我有一个Web应用程序,可以使用LibreOffice将Microsoft Word文档转换为html。一切都工作得很好,但我在解释某些文件缩进的能力方面存在一些问题。

使用其他类开发人员的建议,我发现如何通过将docx文件转换为zip文件,解压缩,然后解压缩document.xml文件来拆开文件。在这个过程中,我注意到LibreOffice一直无法解释任何<w:tab>标签并将它们渲染为缩进。

我已经尝试了许多方法来解决这个问题,但我的想法已经不多了。我最后的努力是使用php以编程方式用<w:tab>标签替换所有<w:ind>标签(LibreOffice成功解释为标签)。但是,只要我用bash将文件转换为.zip,我就无法将其作为docx进行密封备份。我的意思是,我可以做到,但是LibreOffice不再认出它并向我抛出一个奇怪的错误。

有没有什么方法可以通过拉动document.xml文件获得html渲染?如果没有,是否有人知道如何再次密封这些文件?任何帮助深表感谢。谢谢!

这是一个更新:似乎当我尝试将docx压缩回来时,它包含了父目录。当我将其转换回docx格式时,我认为这会弄乱文件。我似乎无法弄清楚如何压缩文件夹的所有内容而不压缩文件夹。有任何想法吗?这是迄今为止的代码:

cp mydoc.docx mydoc.zip
unzip -d mydoc mydoc.zip
zip -r my_edited_doc mydoc/*

1 个答案:

答案 0 :(得分:2)

我找到了答案!要完成修改并重新压缩文件,请确保未包含压缩文件的父目录。为此,我将目录更改为父目录,然后运行以下代码:

zip -r mydoc ./*

完整代码如下所示:

cp mydoc.docx mydoc.zip
unzip -d mydoc mydoc.zip
cd mydoc
zip -r mydoc_converted ./*