减少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文档即可减小整体大小.