如何在使用 python 生成的 word 文档中激活 "Track changes"-模式

How to activate "Track changes"-Mode in a word document generated with python

对于最近的一个项目,我一直在通过 python 生成 .docx-Documents。 我通过使用 docxtpl-Package 和 Word 文档作为我的 jinja2 模板解决了这个问题,因此可以维护当前使用的 word 模板的整个结构。

现在我们已经讨论过,如果有人更改了自动生成的文档中的数字或文本,那么在文档中直观地查看它会非常有用。

我的问题是——不幸的是我还没有找到答案:

是否可以在正在生成的每个 word 文档中自动打开“跟踪更改”模式?

到目前为止,我发现唯一的方法是这个命令行工具 - 到目前为止我无法开始工作,看起来它在过去 6 年里没有得到维护:

https://github.com/kopz9999/track-word-changes

我目前正在 macOS 上开发,但系统将在 Ubuntu 机器上 运行。因此,我们不能使用pywin32模块。

示例代码,如果有帮助的话:

from docxtpl import DocxTemplate
import json
import time
from docx2pdf import convert

class DocumentGenerator():
    def render_document(self, customerid, context):
        """
        :params customerid: Engagement number
        :params context: dict containing values for jinja2 template
        :return: returns absolute path of generated document
        _____________________________
        
        """
    
        doc = DocxTemplate("./templates/functional/template.docx")

    
        doc.render(context)
        save_path = f"./demo/{customerid}_generated_document.docx"
    
        doc.save(save_path)
    
        return save_path

只需在您用作起点的 template.docx 中打开它。您生成的项目将不会被跟踪,因为 python-docx 不会(知道如何)这样做,所以当在 Word 中打开时,它应该开始跟踪(包含在修订标记中)对生成的版本所做的任何编辑。

这当然会经受住考验,但我敢打赌这会很好用。确保在打开“track-revisions”之前清除 template.docx 中的任何修订标记,这样你就不会捕获任何“旧”标记。

如果您使用的是 Linux MacOS,您可以只使用 here 中的资源。效果很好。

要在您的 Python 脚本中使用它,您当然必须使用 subprocess library。例如,

 subprocess.Popen(['track_word --revision_track=true '+your_input_docx_file], shell=True, stdin=subprocess.PIPE)