我如何用程序打开一个docx文件,编辑它,然后再次密封它而不会损坏它


how can i programatically open a docx file, edit it, and then seal it up again without it breaking?

我有一个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/*

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

zip -r mydoc ./*

完整的代码如下:

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