本文共 1966 字,大约阅读时间需要 6 分钟。
类 `DocxBookmarkProcessor` 用于处理 Word 文档中的书签(bookmark),可以在指定的书签位置插入文本或图片内容。该类通过解析 Word 文档的 XML 结构和相关文件,定位书签位置,并根据提供的内容字典插入所需内容。### 类初始化- `__init__` 方法接收 Word 文档路径 `docx_path`,并初始化工作目录 `temp_dir` 为 `'temp_docx'`,以及定义 XML 命名空间 `namespaces`。- 工作目录包括 `word/media` 和 `word/_rels/document.xml.rels`,分别存储媒体文件和关系文件。### 主要功能- `process_bookmarks` 方法负责处理所有书签位置,解析文档 XML 和关系文件,插入内容后重新打包为新文件。- `_prepare_working_directory` 方法负责准备临时工作目录,清理旧目录并解压原文件。- `_parse_document_files` 方法解析主文档 XML 和关系文件,获取现有关系 ID,确定下一个关系 ID。- `_process_all_bookmarks` 方法遍历所有书签位置,根据内容类型(图片或文本)插入相应内容。- `_is_valid_image` 方法检查内容是否为有效图片路径。- `_delete_text_before_bookmark` 方法删除书签位置前的原有文字。- `_insert_text_at_bookmark` 方法在书签位置插入文本内容。- `_insert_image_at_bookmark` 方法在书签位置插入图片,包括生成唯一文件名、复制图片文件和创建图片 XML 结构。- `_create_image_xml` 方法生成图片的 XML 描述文件,包含图片大小和位置信息。- `_add_image_relationship` 方法将图片关系添加到文档的关系文件中。- `_save_modified_files` 方法保存修改后的 XML 文件。- `_repack_docx` 方法重新打包为 ZIP 文件输出。- `_cleanup` 方法清理临时工作目录。### 使用示例```python# 示例使用代码docx_path = r"C:\Leon\python_project\oceanxecm\2025\04\20250422-AI-投标书\word\附件4_法定代表人身份证明书.docx"output_path = "output.docx"# 定义要在各个书签插入的内容(可以是文本或图片路径)content_dict = { "chengli_year": "2025", "chengli_month": "04", "chengli_day": "22", "jingyingqixian": "长期", "name": "张三", "ID": "110101199001011234", "compay": "北京某某科技有限公司", "canjiajingbiaoren": "北京某某科技有限公司", "year": "2025", "month": "04", "company_name": "北京某某科技有限公司", "company_type": "有限责任公司", "address": "北京市海淀区某某路123号", "ID_CARD_FRONT": r"C:\Leon\python_project\oceanxecm\2025\04\20250422-AI-投标书\png\正面.png", "ID_CARD_BACK": r"C:\Leon\python_project\oceanxecm\2025\04\20250422-AI-投标书\png\背面.png",}# 初始化处理器并处理书签processor = DocxBookmarkProcessor(docx_path)processor.process_bookmarks(content_dict, output_path) 本文详细介绍了 DocxBookmarkProcessor 类的功能,包括如何处理 Word 文档中的书签位置、如何插入文本或图片内容以及如何重新打包文档为 ZIP 格式文件。通过代码示例展示了如何在指定书签位置插入自定义内容,适用于需要定制 Word 文档格式的场景。
转载地址:http://klqfk.baihongyu.com/