某些应用场景会对 Word 文件的体积有限制,以下是一些优化 Word 文件体积的建议参考。

编写时的建议

在前期编写 Word 文档时,如可以注意一些操作,可以有效减少图片尺寸:

  • 用于在计算机上浏览使用的 Word 文件,通常不需要较高的图片分辨率,所以在初期插入图片时,尽量避免将过大的图片直接插入。
  • 最好在外部将图片处理好后再插入 word。比如拼图之类,尽量不要从 PowerPoint 中直接复制过来,因为这可能会让 Word 为了保持某些可有可无的通道信息而产生巨大的 png 资源。
  • 动画 gif 体积通常很大,如无动画需求,应先转换为单帧图片再插入。
  • 某些工程软件的工程图,如以矢量格式文档导入,也会大幅减少文件体积。Office 2016 已支持 svg 格式的矢量文件。旧版本 Word 对矢量图的格式支持不同,可尝试 emf/wmf 等格式。

对已有文档的优化

如果是已经做好的文档需要压缩尺寸,那么除重新插入较小图片的方法之外,Word 自身也提供了压缩图片功能。

  • Word 自身提供的“压缩图片”功能是最简单有效的方法,对于嵌入文档中的大尺寸图片有较好的优化效果。如果要压缩单张图片,可选择要压缩的图片,然后点击“格式”标签页中的“压缩图片”按钮,并选择一个较小的分辨率。可多次撤销并重试,以在质量可接受的范围内找到最小的分辨率。
  • 如果要压缩所有图片,可在上述对话框中取消勾选“仅应用于此图片”,则所选内容会应用于所有图片。此外,在另存为对话框中,点击“压缩图片”亦有类似对话框,这也是一种压缩所有图片的方式。具体可参考微软官方帮助文档:减小文件大小的 Microsoft Office 中的图片

手动方式压缩

如经过以上操作,文件体积仍不合需求,或图片质量仍不可接受,则可考虑手动压缩。这是因为 Word 的图片压缩算法不佳(?),很多图片虽然已经压缩到画质很差了,但体积仍然很大。

新版本的 Office 文档,如 docx、pptx、xlsx 等以 x 结尾的格式,实际上都是 zip 压缩格式的文档。文档中用到的的图片等媒体资源,都是以独立文件形式压缩在包内。所以可采用将相关文件解压出来,优化体积之后再压回文档中的方式手动处理。

以 docx 文档为例:

  1. 备份原始文档;
  2. 将 .docx 文档重命名为 .zip 后缀
  3. 解压出对应尺寸较大的图片文件(位于 word/media 目录中);
  4. 用外部工具将这些图片优化;
  5. 将优化后的图片压回 zip 并覆盖对应的原文件;
  6. 将 .zip 文件再改回 .docx;
  7. 打开 .docx 确保没有异常

图片优化可使用 imagemintinypng。tinypng 的压缩效果更好但免费版的 API 有每个月 500 次的限制,使用前需要先注册账号获取 APIKEY。

部分命令参考

# 使用的都是 nodejs 工具
# 假设已将包含所有资源的 media 目录解压了出来,然后在此目录中操作。
cd media
imagemin *.{jpg,jpeg} --plugin=jpeg-recompress --out-dir=../build
imagemin *.png --plugin=pngquant --out-dir=../build
# 如果不满意可再用 tinypng 压一次
tinypng -n -r ../build/*.{jpg,jpeg,png}

其中 imagemin 使用的是 imagemin-cli,用到的 jpeg-recompresspngquant 插件需要单独安装,这两个插件都比 imagemin 的默认插件压缩比要高一些。tinypng 使用的是 tinypng-tool-n 表示不限 png 类型,-r 表示覆盖原文件。