博客
关于我
10-docx_bookmark_processor.py
阅读量:797 次
发布时间:2023-03-23

本文共 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/

你可能感兴趣的文章
Objective-C实现感知哈希算法(附完整源码)
查看>>
Objective-C实现感知哈希算法(附完整源码)
查看>>
Objective-C实现截留雨水问题的动态编程方法算法(附完整源码)
查看>>
Objective-C实现截留雨水问题的蛮力方法的算法(附完整源码)
查看>>
Objective-C实现打印10000以内的完数(附完整源码)
查看>>
Objective-C实现打印1000以内的水仙花数(附完整源码)
查看>>
Objective-C实现打印九九乘法表(附完整源码)
查看>>
Objective-C实现打印从 0 到 n 的卡特兰数算法(附完整源码)
查看>>
Objective-C实现打印函数调用堆栈( 附完整源码)
查看>>
Objective-C实现打印月份的日历算法(附完整源码)
查看>>
Objective-C实现打印杨辉三角(附完整源码)
查看>>
Objective-C实现打印某年的历法日期(附完整源码)
查看>>
Objective-C实现打印魔方矩阵(附完整源码)
查看>>
Objective-C实现打格点算法(附完整源码)
查看>>
Objective-C实现批量修改文件类型算法(附完整源码)
查看>>
Objective-C实现找出一个数的质因数primeFactors算法(附完整源码)
查看>>
Objective-C实现找出三角形从上到下的最大路径算法(附完整源码)
查看>>
Objective-C实现找出买卖股票的最大利润算法(附完整源码)
查看>>
Objective-C实现找出二维数组中的鞍点(附完整源码)
查看>>
Objective-C实现找出由两个 3 位数字的乘积构成的最大回文数的算法 (附完整源码)
查看>>