需求

当你有一个超大的docx类型的文档(word或wps的),假如这个1000页的文档中有500张图片,其中300张图片需要替换掉。如果纯手工操作,你第一步导出文档中的图片就要要重复执行将图片另存为的操作执行300次,更别说设计调整完后更新到文档了。 那么,如何将这些图片一次性给到设计,设计完成后,如何一次性替换掉呢?

前置条件

一般来说,到了这一步的时候,docx文档内容基本趋于稳定。或者说换图是最后一步的操作了。否则,本文方案虽然也能提速,但是却没有那种2分钟快速搞定的舒畅。

解决方案

在微软word 2007之后的版本由于采用标准开放XML文档的方式将word文档.doc原本格式改为.docx后,你其实可以将后缀改名.zip,之后将改名后的zip文件解压缩,即可将图片挑出来给到设计。

  • 解压后的docx在系统中的目录结构如图所示: 目录结构图

  • 其中 word 这个文件夹就是当前docx文档存储具体内容的文件夹,如下图所示: word内目录结构图 图中的 media 这个文件夹就是docx文档中的所有媒体内容,通常包括:图片等。 这些图片会按照在文档中出现的顺序进行编号,从1开始,所有新增图片都自动加1。 如果你编辑的过程中删掉了中间的某一张图,那么后续图片的编号会自动减1。 也就是你解压出来的图片文件永远都是命名为 image1.png image2.bmp image3.jpg 自然数顺序的编号下去的。 因此如果文件不断调整,尤其是中间章节增加或删除图片,那么后续的图片的编号都会错位,会导致批量替换导致错误。

  • 一旦解压后,你就可以从 media 文件夹找出需要修改的图片给到设计进行处理。

  • 设计师将处理好后的图片另存到新文件夹同名文件,直到所有文件都处理好。

  • 你可以将设计师处理好的图片,批量覆盖到 media 文件夹内。

  • 切换到 [Content-Type.xml] 这个文件所在的文件夹,选中所有文件,鼠标右键选择[压缩到zip文件],注意:只能够用标准压缩zip,否则wordwps 会无法识别而报文件已损坏的错误!

  • 将压缩后的文件后缀名由 .zip 修改为 .docx,即可。

  • 你可以使用 wordwps 打开这个新命名的docx进行其他操作了。

注意事项

  • 如果你在文档里的图片尺寸(宽高)等都已经调整的非常舒适,那设计师改图片不应该改变图的宽高尺寸,否则在文档内显示可能有变形。
  • 文档内的图片显示尺寸与图片本身尺寸是不相关的。
  • 假如你在文档中通过复制粘贴的方式,贴了同一张图的多张,那么 media 文件夹中只有一张,不会存储多张。其映射关系位于文件 /word/_rels/docment.xml.rels 中,这个文件也是标准的 xml