Agent Skills
返回列表
报告图表无损引用迁移

报告图表无损引用迁移

办公效率 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_af163eaa/chart-migration。

技能介绍

问题所在:为什么图表迁移不能“重绘”?

当你想把旧 Word 文档中的图表复用到新文档时,如果图表是嵌入的 Office 图表对象(双击可编辑数据),而不是已导出的静态图片,直接重绘往往是最省事但最不可靠的方案。用 matplotlib 或 echarts 重新绘制,几乎无法完美匹配 WPS / Office 的主题色、字体和配色,结果就是“图表风格与新文档不一致”,返工率高。技能的核心原则是:只要原文档中存在可提取的图表,就必须提取迁移,禁止从零重绘。

核心机制:从 PDF 到 PNG 的无损路径

唯一已验证可靠的方案是利用本机 Word 将 docx 原生渲染为 PDF,再从 PDF 中裁剪图表区域,最终得到高清 PNG。这条路径保证了样式与原文档 100% 一致。具体步骤包括:

  • 调用 docx2pdf 依赖本机 Word 导出 PDF
  • 使用 PyMuPDF 打开 PDF 并定位图表坐标
  • 用 Pillow 裁剪为高清 PNG(300dpi 下清晰)
  • 将 PNG 插入新文档时遵循严格的排版规范

排版细节:避免图片覆盖文字的关键

插入 PNG 时如果段落行距设置不当,图表会溢出并覆盖相邻文字。技能强制要求:

  • 图表所在段落必须使用单倍行距(line=240, lineRule=auto),禁用固定 28 磅行距
  • 段落首行缩进设为 0(first_line_indent=0)
  • 段落前后加适当间距(space_before / space_after ≥ 120)
  • 图片宽度 ≤ 内容宽度(A4 页边距 28mm → 内容宽约 154mm ≈ 6 英寸)
  • 用 python-docx 插入时,run 级显式设置字体,避免标题样式被改写后的字体回退风险

适用边界与注意点

  • 本机必须已安装 Microsoft Word(docx2pdf 依赖),Python 环境需可安装 docx2pdf、PyMuPDF、Pillow
  • 若本机无 Word,需先告知用户并确认替代方案(如手动另存为 PDF 后再走裁剪流程)
  • 已排除失败路径:matplotlib 重绘、LibreOffice soffice、qlmanage(macOS 沙箱限制)、CoreGraphics 直接读 PDF(API 不稳定)

使用场景

  • 把旧 Word 报告中的 Office 图表复用到新报告,要求主题色、字体与原文档完全一致
  • 新文档里图表溢出覆盖正文,需要按单倍行距、首行缩进 0 等规范重新排版
  • 旧报告存在可编辑图表,想改用 matplotlib 重绘但样式对不上,需要无损迁移路径
  • 本机装有 Word,需要把嵌入图表渲染成 PDF 再裁剪为 PNG 插入另一份文档

适合人员

  • 用 python-docx 生成 Word 报告的开发者,需要图表插入后不覆盖文字、不超出页边距
  • 经常把旧文档里的图表复用到新文档的文档工程师,要求样式与原文档 100% 一致
  • 撰写 Word 文档处理技术博客的作者,需要一条经过验证、不靠重绘的图表迁移方案
  • 维护报告自动化流水线、本机装有 Microsoft Word 的团队,需要固定可靠的提取流程