问题描述
我正在寻找一个开源的命令行工具来裁剪PDF文件,就像我们在Adobe Acrobat Pro中所做的那样。我已经尝试过PdfTk,ImageMagick,PyPDF和GhostScript,至今都没有成功。
最佳解决思路
我建议你看看PDFcrop。
如果您希望裁剪5,10,20和30点(分)的左边界,顶部边界,右边界和底部边界,然后运行
pdfcrop --margins '5 10 20 30' input.pdf output.pdf
在终端。要实际裁剪掉某些东西,请在裁剪的参数中使用负值。例如,
pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf
从左边,顶部,右边,底部(按此顺序)50磅。
如果只运行命令pdfcrop input
,它将输出一个标题为input-crop.pdf的零页边距文件。在文档中包含pdf插图时,我发现这非常方便。
裁剪多个文件
不幸的是,pdfcrop当时不能裁剪多个文件。然而,编写脚本可以很容易地裁剪脚本所在的文件夹中的所有pdf。
创建一个新的空文件,并将其命名为something.sh
。用文本编辑器打开它并插入以下内容:
#!/bin/bash
for FILE in ./*.pdf; do
pdfcrop "${FILE}"
done
保存并关闭。然后右键点击文件,进入属性>权限并检查字段允许执行文件作为程序。现在关闭对话框。通过双击脚本并选择终端中的运行来运行该脚本。而新的zero-margin剪裁版本的所有pdf后缀-crop现在将打印在该文件夹中。如果您想要边距或其他东西,您当然可以打开脚本并在pdfcrop
后添加参数。
次佳解决思路
感谢Rasmus,你可以从texlive-extra-utils包安装pdfcrop:
sudo apt-get install texlive-extra-utils
然后使用pdf裁剪命令裁剪PDF文件,如下所示:
pdfcrop input.pdf output.pdf
使用--help
查看更多惊人的参数,例如--margins
pdfcrop --margins 5 input.pdf output.pdf
哪个裁剪pdf从页面的每一边开始5 bp
第三种解决思路
您也可以使用Ghostscript来裁剪PDF文件。我写了一个小脚本来简化流程(受this answer启发):
#!/bin/bash
if [ $# -lt 5 ]
then
echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
echo "Notes:"
echo " - all coordinates are absolute; no calculation of width/height necessary"
echo " - use 'gv' to determine the coordinates"
exit 65
fi
file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"
base="${file%.*}"
outfile="${base}_cropped.pdf"
echo "writing to: $outfile"
gs \
-o $outfile \
-sDEVICE=pdfwrite \
-c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
-f $file
为了确定裁剪的坐标,我使用gv
,它使用与Ghostscript相同的单位打印鼠标光标的坐标。例如,在此我确定x /y的最小坐标(左上角的值):
现在最大坐标:
最后,我运行脚本pdf_crop_by_coordinates.sh test.pdf 45 429 38 419
生成一个test_cropped.pdf
,如下所示:
但我不知道Ghostscript解决方案在质量和正确性方面如何与pdfcrop
进行比较。
第四种思路
当我无法用pdftk做什么时,下一个地方是PDFjam,它是pdfpages LaTeX包(因此您还需要安装TeX发行版)的命令行包装。有关如何使用它的帮助,我建议定期帮助屏幕:
pdfjam --help
因为手册页是稀疏的,网页集中在范例上。
裁剪一个PDF,你需要的命令是这样的:
pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf
这将输出一个名为input-cropped.pdf
的文件。根据graphicx中的\includegraphics
,修剪的顺序应该是左边,底部,右边,顶部。
为了了解它与PDFcrop的比较,我最近有理由裁剪一个相当漂亮的PDF。我的原始版本是675 kB,通过PDFjam的裁剪版本是1.2 MB,而通过PDFcrop裁剪的版本是4.5 MB。虽然PDFjam和PDFcrop除去了嵌入式超链接和书签,但带有--keepinfo
选项的PDFjam保留了文档属性(例如标题,作者,主题)。
第五种思路
如果图形工具也很好,我会推荐krop
:http://arminstraub.com/software/krop
第六种思路
这可能会帮助你。这符合Ubuntu和生活的更新版本。这是Master PDF Editor。你可以使用它裁剪,添加一些东西,等等。
例如:这是在ctrl + k之后
第七种思路
您可以使用pypdf script from this page。但在对this stackexchange question的回答中,似乎也有很多选项。