我正在使用python-docx
和python-docx-template
来生成多页文档。 MacOS和Windows上的Word都抱怨所生成的.docx
文件中存在错误,但是如果允许继续操作,Word 可以打开该文件,并且文档看起来不错打开时。 (在MacOS上,错误对话框显示为“ HRESULT 0x80004005 Location:Part:/word/document.xml,第0行,第0列”。)
.docx
模板是一个非常简单的一页文档。构造复合文档的循环基于an answer to another question,它是以下简单的Python代码:
overall_doc = Document()
num_pages = len(records_list)
for index, record in enumerate(records_list):
page = DocxTemplate(template)
values = vars(records_list[index])
page.render(values)
if index < (num_pages - 1):
page.add_page_break()
for element in page.element.body:
overall_doc.element.body.append(element)
overall_doc.save('outputfile.docx')
替换为模板的值是没有特殊字符的UTF-8字符串(尤其是,没有“&”号或大于/小于字符的字符)。我已经验证问题不是由于字符串值被替换为模板。
如果在创建第一页后中断循环,则不会出现错误。如果允许循环甚至只创建2页,则会发生Word中的错误。如果我完全删除分页符代码,仍然会发生错误。如果我在末尾添加了额外的分页符,该错误仍然会发生。
我试图找到一个docx验证工具。我唯一能够运行的是docx4j
的OpenMainDocumentAndTraverse
函数,据我所知,该函数应该报告错误。但是docx4j不会报告输出文档有任何错误。
什么可能导致此错误?如果我的错误不明显,如何诊断Word抱怨的原因?