减少Word文件大小

本文更新于 2019.03.24

有时我们的Word文件并没有很多页, 但大小却达到了十几MB甚至几十MB, 不但占用空间, 不容易发送给别人, 而且编辑起来也似乎很慢.

分析

这是什么原因造成的呢? 其实Word2007以后的版本, 包括其他Office系列软件的文档格式, 都基于Office Open XML格式, 这是一种基于XML且经过zip压缩的文件格式. 也就是说, 每一个docx文件就是一个压缩包. 那么, 可以将其解压缩, 来看哪些文件尺寸过大:

[19-03-24 2:29] zzq@zzqmac ~/dev/tmp/word-compress
$ll
total 28008
-rw-r--r--@ 1 zzq  staff    14M  3 24 02:00 test.docx
[19-03-24 2:29] zzq@zzqmac ~/dev/tmp/word-compress
$tar xf test.docx
[19-03-24 2:29] zzq@zzqmac ~/dev/tmp/word-compress
$ll
total 28016
-rwxr-xr-x@  1 zzq  staff   2.6K  1  1  1980 [Content_Types].xml*
drwxr-xr-x   3 zzq  staff    96B  3 24 02:29 _rels/
drwxr-xr-x   5 zzq  staff   160B  3 24 02:29 customXml/
drwxr-xr-x   4 zzq  staff   128B  3 24 02:29 docProps/
-rw-r--r--@  1 zzq  staff    14M  3 24 02:00 test.docx
drwxr-xr-x  19 zzq  staff   608B  3 24 02:29 word/

然后分析这些解压后的文件和目录. 最后发现, 某个名为media的子目录中的文件占据了大量空间:

[19-03-24 2:31] zzq@zzqmac ~/dev/tmp/word-compress/word
$du -sh media
14M media
[19-03-24 2:31] zzq@zzqmac ~/dev/tmp/word-compress/word
$ll media/
total 27904
-rwxr-xr-x@ 1 zzq  staff   7.4K  1  1  1980 image1.png*
-rwxr-xr-x@ 1 zzq  staff   2.1M  1  1  1980 image10.tiff*
-rwxr-xr-x@ 1 zzq  staff   731K  1  1  1980 image11.tiff*
-rwxr-xr-x@ 1 zzq  staff   1.6M  1  1  1980 image12.tiff*
-rwxr-xr-x@ 1 zzq  staff   645K  1  1  1980 image13.tiff*
-rwxr-xr-x@ 1 zzq  staff   492K  1  1  1980 image14.tiff*
-rwxr-xr-x@ 1 zzq  staff   1.9M  1  1  1980 image15.tiff*
-rwxr-xr-x@ 1 zzq  staff   421K  1  1  1980 image2.tiff*
-rwxr-xr-x@ 1 zzq  staff   968K  1  1  1980 image3.tiff*
-rwxr-xr-x@ 1 zzq  staff   610K  1  1  1980 image4.tiff*
-rwxr-xr-x@ 1 zzq  staff   1.3M  1  1  1980 image5.tiff*
-rwxr-xr-x@ 1 zzq  staff   776K  1  1  1980 image6.tiff*
-rwxr-xr-x@ 1 zzq  staff   407K  1  1  1980 image7.tiff*
-rwxr-xr-x@ 1 zzq  staff   637K  1  1  1980 image8.tiff*
-rwxr-xr-x@ 1 zzq  staff   1.2M  1  1  1980 image9.tiff*

这些tiff文件, 都是我从某个画图工具中直接复制的图片, 用作文档中的插图. 所以现在的问题就是把缩减这些图片的大小.

减小图片大小

要减小图片的大小, 当然一种直观的方法是使用一些GUI图片工具. 但有一些命令行工具可以方便地做这个事, 比如convert命令.

convert命令包含在ImageMagick软件包中, 在Ubuntu上安装:

$sudo apt-get install imagemagick

安装完成后, 即可调用以下简单命令, 将tiff格式转换png格式来减小它的大小:

$convert image10.tiff image10.png

可以看到, 原大小2.1MB的图片, 转换后仅为35KB:

[19-03-24 2:43] zzq@zzqmac ~/dev/tmp/word-compress/word/media
$ll image10*
-rw-r--r--  1 zzq  staff    34K  3 24 02:43 image10.png
-rwxr-xr-x@ 1 zzq  staff   2.1M  1  1  1980 image10.tiff*

convert支持很多选项, 比如可以通过–quality来指定输出图片质量, 更多选项见man手册或参考中的链接.

减小图片大小后, 将其重新插入word文档即可减小整体大小.