pdf文件自动剪裁(自动切白边)
可能用到的环境、工具:Ubuntu 10.04+TeXLive 2008+pdfcrop+CUPS打印驱动,用Windows的兄弟就不用看了,这些工具理论上在Windows下也有,但是还要另外装不少东西。
下面假设原文件(也就是打算切白边的文件)叫abc.pdf
- pdfcrop abc.pdf,默认会生成abc-crop.pdf文件,这个已经是切掉白边的了,要是你不嫌它大(或者它确实不大)的话,就完成了。
- 用阅读器(如evince)打开abc-crop.pdf,并通过CUPS打印到文件,打印时注意关闭所有和页面缩放有关的命令,并选中“使用文档的页面尺寸作为页面尺寸”。打印,完成。
说明:
- pdfcrop其实是TeXLive自带的。本质上是一个perl脚本。
- pdfcrop要调用gs(ghostscript)确定每页的白边大小。对于空白页,会报错,忽略即可。
- pdfcrop还可以在切的时候留若干像素,具体请–help。
- pdfcrop要调用pdftex以生成切白边后的文件。
- pdfcrop本质上(猜想,没有阅读源码)是先将abc.pdf展开成单页的pdf,调用gs切白边,再用tex文件直接调用pdf页面,最后用pdftex生成输出。
- pdfcrop直接生成的文件一般是原文件的20倍以上(本人测试的几个文件均是如此),虚拟打印到新的文件后,基本可以恢复到与原文件同样数量级的尺寸。
- 测试都是使用的内嵌字体的中英文PDF。扫描版的没试,估计够呛。

5月27日更新:
使用这个脚本PDF压缩脚本-Compress PDF,代替上面的第2步。简单,效果不错。
这个非常有用啊~~
以前从来没有注意过TexLive带的这一堆工具.
能将这些工具汇总一下吗?
[回复]
amao 回复:
七月 6th, 2011 at 6:50 上午
有计划将强大的命令行工具的用法整理一下,但是暂时还没有时间做这件事情。
准备写的有这些工具:
awk
sed
grep
find
pdftk
imagemagick
texlive
……
[回复]
shawn
1 七 11 at 5:37 下午
是不是直接选择打印到文件就行了? 选项里有页面大小设置,但是”使用文档的页面尺寸作为页面尺寸”这个选项在在哪儿?
evince:
已安装: 2.32.0-0ubuntu12.2
候选软件包:2.32.0-0ubuntu12.2
版本列表:
*** 2.32.0-0ubuntu12.2 0
500 ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ natty-updates/main i386 Packages
100 /var/lib/dpkg/status
2.32.0-0ubuntu12 0
500 ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ natty/main i386 Packages
cups:
已安装: 1.4.6-5ubuntu1.3
候选软件包:1.4.6-5ubuntu1.3
版本列表:
*** 1.4.6-5ubuntu1.3 0
500 ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ natty-proposed/main i386 Packages
100 /var/lib/dpkg/status
1.4.6-5ubuntu1.2 0
500 ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ natty-updates/main i386 Packages
1.4.6-5ubuntu1 0
500 ftp://openware.byr.edu.cn/pub/mirror/ubuntu/ natty/main i386 Packages
[回复]
amao 回复:
七月 6th, 2011 at 6:46 上午
我现在已经转用archlinux+kde,手头没有evince了。如果实在找不到那个选项,可以试下“一句话实现PDF文件减肥”:http://www.ai7.org/wp/html/785.html中介绍的那个命令。也比较方便。
[回复]
shawn
2 七 11 at 12:34 上午