如何在使用 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)
对于最近的一个项目,我一直在通过 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)