如何在修改后重新压缩Docx文件内容

时间:2016-05-26 18:16:06

标签: python xml zip docx corrupt

我会尽量保持简短。

我制作了一个程序,可以修改Docx document.xml文件中的文本。我通过xml解析实现了这一点,效果很好。现在我的程序正在输出一个新的document.xml文件,该文件与原始文件完全相同,减去了更改后的文本。当我尝试重新压缩docx文件时,我的问题开始了。

仅出于测试目的,我一直在手动删除word文件夹中的原始document.xml文件并添加新文件。最终我希望我的程序可以做到这一点,但目前还没有。

最近发生的事情是,在重新压缩所有内容之后,Microsoft Word称该文件已损坏。顺便说一下,如果我不改变document.xml文件,并重新压缩它,它工作正常。因此我认为压缩没有任何问题。

但是如果我删除原始的document.xml文件然后将其放回去,那么微软的话说它已经腐败了。它真的很奇怪。

这是我原来的document.xml文件

https://www.dropbox.com/s/ghe1m176rdqtng7/document.xml?dl=0

和更新的。

https://www.dropbox.com/s/8n9llagozbvb2mz/document_output.xml?dl=0

希望有人可以了解最新情况。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我使用原始文档,Word也会说它会损坏。

据我所知,有三个参考指向无处。 如果你注释掉三个w:headerReference元素(在底部作为w:sectPr元素的子元素),我可以在没有Word抱怨的情况下打开它。

整个新部分:

<w:sectPr w:rsidR="00EC0B63" w:rsidSect="00EC0B63">
    <!--<w:headerReference w:type="even" r:id="rId8"/>
    <w:headerReference w:type="default" r:id="rId9"/>
    <w:headerReference w:type="first" r:id="rId10"/>-->
    <w:pgSz w:w="12240" w:h="15840"/>
    <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720"
        w:footer="720" w:gutter="0"/>
    <w:cols w:space="720"/>
    <w:titlePg/>
    <w:docGrid w:linePitch="360"/>
</w:sectPr>