<p>看起来,Docx for Python并不意味着要存储一个包含图像、标题等的完整Docx。。。,但仅包含文档的内部内容。所以没什么简单的办法。</p>
<p>不过,你可以这样做:</p>
<p>首先,看看<a href="https://stackoverflow.com/tags/docx/info">docx tag wiki</a>:</p>
<p>它解释了如何解压缩docx文件:下面是一个典型文件的外观:</p>
<pre><code>+--docProps
| + app.xml
| \ core.xml
+ res.log
+--word //this folder contains most of the files that control the content of the document
| + document.xml //Is the actual content of the document
| + endnotes.xml
| + fontTable.xml
| + footer1.xml //Containst the elements in the footer of the document
| + footnotes.xml
| +--media //This folder contains all images embedded in the word
| | \ image1.jpeg
| + settings.xml
| + styles.xml
| + stylesWithEffects.xml
| +--theme
| | \ theme1.xml
| + webSettings.xml
| \--_rels
| \ document.xml.rels //this document tells word where the images are situated
+ [Content_Types].xml
\--_rels
\ .rels
</code></pre>
<p>Docx只获取文档的一部分,方法是<strong>opendocx</strong></p>
<pre><code>def opendocx(file):
'''Open a docx file, return a document XML tree'''
mydoc = zipfile.ZipFile(file)
xmlcontent = mydoc.read('word/document.xml')
document = etree.fromstring(xmlcontent)
return document
</code></pre>
<p>它只获取document.xml文件。</p>
<p>我建议你做的是:</p>
<ol>
<li>使用**opendocx*获取文档内容</li>
<li>用<strong>advplace</strong>方法替换document.xml</li>
<li>将docx作为zip打开,并用新的xml内容替换document.xml内容。</li>
<li>关闭并输出压缩文件(将其重命名为output.docx)</li>
</ol>
<p>如果您安装了node.js,请注意我已经在<a href="https://github.com/edi9999/docxgenjs" rel="nofollow noreferrer">DocxGenJS</a>上工作过,它是docx文档的模板引擎,该库正在进行活动开发,并且将作为节点模块发布。</p>