用途:处理 .docx 文件(本质为含 XML 的 ZIP 包),完成文档内容读取与分析、新建 Word 文档、编辑既有文档,以及审阅式修订标记。
主要能力:
- 文本提取:用 pandoc 将文档转为 Markdown,保留结构并显示修订,命令为 pandoc --track-changes=all path-to-file.docx -o output.md,选项支持 accept/reject/all。
- 原始 XML 访问:读取批注、复杂格式、文档结构、嵌入媒体与元数据。解包命令:python ooxml/scripts/unpack.py <office_file> <output_directory>;关键文件包括 word/document.xml、word/comments.xml、word/media/;修订用 <w:ins> 与 <w:del> 标签。
- 新建文档:使用 docx-js(JavaScript/TypeScript),以 Document、Paragraph、TextRun 组件编写,用 Packer.toBuffer() 导出 .docx。
- 编辑既有文档:使用 Document 库(Python OOXML 操作),流程为解包、编写并运行 Python 脚本、再用 python ooxml/scripts/pack.py <input_directory> <office_file> 打包。
- 修订审阅工作流:先用 pandoc 转 Markdown 规划变更,按 3-10 项一批分组实现,遵循最小精确编辑原则,仅标记真正改动的文本并复用原有 <w:r> 的 RSID,最后打包并用 pandoc 转 Markdown 验证。
- 文档转图像:soffice --headless --convert-to pdf document.docx 先转 PDF,再用 pdftoppm -jpeg -r 150 document.pdf page 转 JPEG,支持 -r、-f、-l 等选项。
使用要求与限制:涉及新建或编辑时要求完整阅读 docx-js.md(约 500 行)或 ooxml.md(约 600 行);不要使用 Markdown 行号定位 XML;每次写脚本前需先 grep word/document.xml 获取当前行号。依赖包括 pandoc、docx、LibreOffice、Poppler、defusedxml。法律、学术、商业或政府文档必须使用修订工作流。代码风格要求简洁,避免冗长变量名与多余打印。具体收费、价格与更多细节暂未提供。