命令行工具来裁剪PDF文件


101

我正在寻找一种开放源代码命令行工具来裁剪PDF文件,就像我们在Adobe Acrobat Pro中所做的一样。我尝试了PdfTk,ImageMagick,PyPDF和GhostScript,但到目前为止都没有成功。


您能否描述一下使用Adobe Acrobat Pro可以进行哪种裁剪?因为我没有它,所以不能告诉你想要的东西。
xubuntix 2012年

在Adobe Acrobat Pro中,我们可以使用边距控件来裁剪PDF。我们可以提供作物顶部,底部,右侧和左侧的值
Rakesh

Answers:


124

我建议您看看PDFcrop

如果您想裁剪左,上,右和下边距为5、10、20和30磅(点)的pdf,请运行

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

保存并关闭。然后右键单击文件,转到“ 属性”>“权限”,然后选中“ 允许以程序形式执行文件 ”字段。现在关闭对话框。通过双击脚本并选择Run in Terminal运行脚本。现在,所有后缀为-crop的 pdf的新的零利润裁剪版本都将打印在该文件夹中。如果您需要边距或其他功能,当然可以打开脚本并在之后添加参数pdfcrop


请注意,除了指定负边距之外,还可以使用--bbox "<left> <bottom> <right> <top>"。这允许使用以下方法来确定我的答案中所述的作物面积。
bluenote10年

是否可以告诉页码(需要裁剪)?
LK

我担心这全是或全无。pdfcrop --help列出可用的选项。我看不到任何允许指定页面范围的内容。
Rasmus

7
将PDFCrop输出的大小与其输入进行比较,看起来pdfcrop似乎只修改了边界框。它不会删除数据。因此,此方法不适用于缩小pdf或隐藏信息。
init_js

像个魅力!即使有pdf所需的边距!
jojo

36

感谢Rasmus,您可以从texlive-extra-utils软件包安装pdfcrop:

sudo apt-get install texlive-extra-utils

然后使用pdf crop命令裁剪pdf文件,如下所示:

pdfcrop input.pdf output.pdf

用于--help查看更多令人惊奇的参数,例如--margins

pdfcrop --margins 5 input.pdf output.pdf

从页面的每侧裁剪5 bp的pdf文件


1
测量结果bp与略有不同pt。参见tex.stackexchange.com/questions/8260/…
koppor

2
对我来说,pdfcrop将文件大小从300x(从7MB扩展到2GB)扩大了。gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf之后,我必须做,这固定了文件大小。
fiktor

17

您也可以仅使用Ghostscript裁剪PDF文件。我编写了一个小脚本来简化过程(受此答案启发):

#!/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的最小坐标(左上角的值):

作物1

现在最大坐标:

作物2

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

结果

不过,我不知道Ghostscript解决方案pdfcrop在质量和正确性方面如何与之相比。


15

当我无法使用pdftk做某事时,我接下来要讨论的PDFjam,它是pdfpages LaTeX软件包的命令行包装(因此,您也需要安装该软件包和一个TeX发行版)。有关如何使用它的帮助,我建议您使用常规帮助屏幕:

pdfjam --help

因为手册页稀疏,而Web页面集中在示例上。

要裁剪PDF,您需要的命令是这样的:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

这将输出一个名为的文件input-cropped.pdf。饰边的次序应为左,下,右,上,按照\includegraphicsgraphicx宏

为了给它一个与PDFcrop相比的思路,我最近有理由要裁剪一个非常漂亮的PDF。我的原始文件为675 kB,我通过PDFjam裁剪的版本为1.2 MB,而通过PDFcrop裁剪的版本为4.5 MB。虽然PDFjam和PDFcrop都删除了嵌入的超链接和书签,但是具有--keepinfo选项的PDFjam 保留了文档属性(例如标题,作者,主题)。


1
注意:这实际上并不会从PDF中删除变为屏幕外的内容,只会将其隐藏。与得分最高的答案中的@init_js评论相同。
JanŻankowski18年


3

这可能对您有帮助。
这符合Ubuntu和life的较新版本。这是Master PDF Editor。您可以使用它裁剪,添加一些东西等。

示例:
这是在 这是之前 ctrl + k之后 在此处输入图片说明




2

pdfCropMargins程序是一个命令行应用程序自动裁剪PDF文件的边缘。

该程序取决于系统上已安装(并且可定位)的Ghostscript程序或pdftoppm程序。并使用阈值191使用PIL分析页面图像以找到边界框。

使用安装

点安装pdfCropMargins

使用运行

pdf-crop-margins -v -s -u your-file.pdf

求助

pdf-crop-margins -h | 更多

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.