pdf文件自動剪裁(自動切白邊)
FROM:http://www.ai7.org/wp/html/754.html
可能用到的環境、工具: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。掃描版的沒試,估計夠嗆。
附一個類似的eps版工具
首先用下面的命令來去除白邊。因為是程序來做的,去除白邊的效果甚至比人自己做好:
epstool --copy --bbox input_file.eps input_file_temp.eps
第二步也是最后一步,將eps圖像轉成pdf,也只需要一行命令
epstopdf --hires --outfile=output.pdf input_file_temp.eps
這樣就完成了eps到pdf的轉換了。
上述的操作流程可以寫成一個腳本
epstool --copy --bbox $1 my_epstopdf_temp.eps
epstopdf --hires --outfile=$2 my_epstopdf_temp.eps
rm my_epstopdf_temp.eps