← 返回 Skill 列表
extension
分类: 开发与工程API Key 暂未确认

word文档内彩色图片转灰白

将word文档内的彩色图片转成灰白,不改变文档排版和格式

person作者: donny28hubModelScope

Word 文档图片批量转灰白

把 .docx/.docm 里的图片全部变成灰白,同时保证排版、分页、页码完全不变。

必须遵守的做法

  1. 只在 docx 的 zip 包内替换图片字节。不要用 Word、WPS 或 LibreOffice 打开再另存,也不要整包解开重打包后交给 Office 重新排版——那会重新分页。
  2. 不改变图片的像素尺寸、DPI、透明通道和 EXIF 方向。版式由正文里记录的高宽决定,像素尺寸保持一致是页码不变的前提。
  3. 除图片外的所有部件必须逐字节保持原样(document.xml、styles.xml、页眉页脚、rels、[Content_Types].xml 等),zip 条目顺序与压缩方式保持不变。
  4. 默认输出到新目录,原文件不动。只有用户明确要求覆盖时才覆盖,且先备份。

用法

python scripts/grayscale_docx.py <文档或文件夹> [更多路径 ...] [--out 输出目录] [--in-place] [--quality 92]
  • 文件夹输入默认输出到同级目录的 <文件夹名>-灰度版;文件输入默认输出到同级目录的 灰度版。
  • --in-place 覆盖原文件,覆盖前把原件备份到同级 原始备份-<时间戳> 目录。
  • 需要 Pillow:python -m pip install pillow。

完成后必须核对脚本输出

  • pages: X -> X:文档记录页数不变。
  • 没有"改动条目"、entry_order_ok=True:除图片外没有任何改动。
  • grayscale_media=n/n:全部图片已是灰白。
  • 末尾为 ALL_OK 才算完成;出现 HAS_ISSUES 必须先查清原因,再决定是否交付。

docProps/app.xml 里的页数是 Office 写入的缓存值,它不变只是旁证;真正的保证来自"正文等部件逐字节未变"加"图片显示尺寸未变",两点都通过时渲染分页不会变化。

需要单独向用户说明的情况

  • EMF / WMF / SVG 等矢量图 Pillow 无法转换,脚本会在 unconvertible 中列出。处理它们需先转成位图再替换,可能影响版式,必须先征得用户同意。
  • 转换后文件通常会明显变小(灰度图压缩率更高),可作为附带收益一并说明。