当前位置: 首页>>技术问答>>正文


用于裁剪PDF文件的命令行工具

, , ,

问题描述

我正在寻找一个开源的命令行工具来裁剪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的最小坐标(左上角的值):

command-line,pdf,open-source,ubuntu

现在最大坐标:

command-line,pdf,open-source,ubuntu

最后,我运行脚本pdf_crop_by_coordinates.sh test.pdf 45 429 38 419生成一个test_cropped.pdf,如下所示:

command-line,pdf,open-source,ubuntu

但我不知道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保留了文档属性(例如标题,作者,主题)。

第五种思路

如果图形工具也很好,我会推荐krophttp://arminstraub.com/software/krop

第六种思路

这可能会帮助你。这符合Ubuntu和生活的更新版本。这是Master PDF Editor。你可以使用它裁剪,添加一些东西,等等。

例如:这是在ctrl + k之后

command-line,pdf,open-source,ubuntu

command-line,pdf,open-source,ubuntu

第七种思路

您可以使用pypdf script from this page。但在对this stackexchange question的回答中,似乎也有很多选项。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/982.html,未经允许,请勿转载。