如何提取和/或删除一堆PDF的最后一页?


14

我们的供应商之一开始在不必要的庞大图像上添加到我们从他们那里获得的PDF的最后一页。我需要修剪一下。但是,我们有数百种,因此手动输入是禁止的。自动提取并删除PDF的最后一页的最佳方法是什么(最好是第一个,然后是另一个;最好还是通过filesize确认我没有删除一个没有图像的方法)?操作系统是Linux。

我可以使用ghostscript提取它,并附带一些类似的内容gs -dFirstPage=5 -dLastPage=5,但是我需要使它自动化,因此我无法手动查找最后一页的编号。

有任何想法吗?

编辑:为澄清起见,我只想拆分/删除最后一页。而不是其中的图像,请删除最后一页。


1
看一下pdftk-我很肯定可以将其用于这种任务。
丹尼尔·安德森


2
远非如此。
安德鲁

我觉得我应该澄清一下:我对删除最后一页上的图像不感兴趣。我有兴趣删除最后一页。
安德鲁

1
在Ask Ask Ubuntu上有多个不同答案的相关问题:askubuntu.com/questions/221962/…–
TuringTux

Answers:


2

正如@Daniel Andersson已经评论的那样,可以使用以下方法轻松完成此操作pdftk

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

我不知道是否可以通过一次调用pdftk来完成...

编辑:您可以将其与thanosk的答案结合使用(使用bash):

pdftk input.pdf cat 1-$((last-1)) output output.pdf

当您已经将最后一页提取到变量时$last


示例不起作用。找到@Sid Steward的答案,以更好地工作。
Reado

14

为了进一步改善@eldering的答案,pdftk版本1.45及更高版本可以通过在页面编号前加上小写字母r来反向引用页面。PDF的最后一页是r1,倒数第二页是r2,依此类推。

例如,单个pdftk调用:

pdftk input.pdf cat 1-r2 output output.pdf

会从input.pdf中删除最后一页-输入的长度至少应为两页。

要仅提取PDF的最后一页以测试其文件大小,请运行:

pdftk input.pdf cat r1 output final_page.pdf

Pdftk在Linux上可用。许多发行版都有可以安装的二进制文件。不过,您应该确保它是1.45版或更高版本。如果没有,您可以从源代码构建pdftk。


rN正是我需要的东西,因为基于乳胶的pdf生成系统始终在文档的开头和末尾产生一些空白页,因此我不得不在末尾手动删除它们。现在我只打电话给我:pdftk A = pocket20.pdf cat A3-r6 r3-end output pocket_to_print.pdf,它删除了前两页以及最后的第4、5页。
Martin T.

1

pdfinfo将为您提供实际pdf文件的大小,而pdfimages将为您提供所述pdf文件中图像的索引。所以你可以写一个脚本形式

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

如果特定文件的最后一页中有图像,则应返回该值。如果是这样,则您可以进行所需的任何操作。


0

这是使用pdfjam代替pdftk的解决方案:

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

其中第一个参数是要修剪的文件,第二个参数是要修剪的页面数量(默认为1)。


0

一个一个班轮解决方案是使用find沿着pdftk

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

注意:在此示例中,裁剪的文件存储在一个子目录中,该子目录称为,cut以保留原始文件名,因为pdftk不允许覆盖输入文件。

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.