从多个pdf提取第一页


17

大约有500个PDF需要经过浏览并提取其中的第一页。然后,他们需要经历一些耗时的转换过程,因此希望通过批量处理从500个pdf中仅提取第一页并将其放入新的pdf中,从而尝试节省一些时间。曾经在Acrobat上oke过,但找不到针对多个文件执行此操作的真正方法。有谁知道其他可以实现的程序或方法?自由和开源显然更有利:)

编辑:使用GhostScript仅提取一页实际上取得了一些成功。现在,我正在研究如何批量处理并获取文件列表并使用它们。


转换过程中的其他步骤涉及什么?
伊格纳西奥·巴斯克斯

关于您的编辑,请参阅我的编辑。
frabjous

Answers:


29

使用pdftk ...

在Mac和Linux上,从命令行开始。

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

在Windows上,您可以创建一个批处理文件。打开记事本,将其粘贴到内部:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

您可能需要用pdftk的完整路径替换“ pdftk.exe”,例如,"C:\Program Files\pdftk\pdftk.exe或其他。(我不使用Windows,所以我不知道。)

将其保存为扩展名为.bat的扩展名,将其放入包含PDF的文件夹中,然后双击。

您可以使用Ghostscript做同样的事情,是的。

让我们来看看。对于Mac和Linux(全部一行):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

我不太确定Windows批处理文件的相应命令是什么。我最好的猜测(-我没有窗户,所以无法测试-):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

仔细检查幽灵脚本可执行文件的路径是否正确,好吧,因为我没有使用Windows,所以我没有对此进行测试。


编辑:好的,我只是意识到您可能不想要500个1页的PDF,而是将它们全部组合在一起的单个PDF。只需运行上面的内容,您将获得500张1页的PDF。要在Mac和Linux上使用pdftk ...组合它们:

pdftk *-page1.pdf cat output combined.pdf

我认为它在Windows上可能是一样的,除了如上所述,可能需要pdftk的完整路径。您可以仅在批处理文件中的上述行之后添加该行。

在Mac和Linux上使用Ghostscript ...:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

在Windows上可能是一样的,除了上面用gswin32c.exe的完整路径开头替换“ gs”。

也许有一种方法可以一步一步完成这两个步骤,但是我太懒了,无法立即解决。

如果组合它们的顺序很重要,那么我们将需要更多信息。


那是我一直在寻找的命令。花了一个下午阅读有关Linux中的if循环的信息!您的初始命令是正确的,即我需要500个单页pdf。设法将所有第一页都放入一个pdf中,但是转换为excel使其变得难以管理。我的用户有一些非常具体的要求和布局要求,这真是令人发狂,但充满挑战。谢谢你的帮助!
蒂姆·亚历山大

2

今天只需要在Linux中完成。它也适用于Mac。从终端执行以下命令。

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr将作业提交到打印机。

注意命令中的*字符用法。这将为目录中的所有PDF文件运行命令。


如您所指出的,这会将作业提交给打印机。这不是OP所要的。
尼克K9

1

我认为您可以使用pdf-forge等pdf虚拟打印机。

您只是“打印”第一页,我现在在Mac上无法尝试,但是我敢肯定您一次可以做更多。

祝好运!!

特鲁法


谢谢那些指示。这些使我进入了GhostScript,它看起来可以执行我想要的操作。谢谢
Tim Alexander

@蒂姆·亚历山大,一点问题都没有!!
Trufa

0

对于Windows批处理文件命令(.bat)(%%用于bat文件中的变量)

以较低的分辨率/尺寸将pdf转换为jpg的pdf的首页提取

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(在sOutputFile上面的帖子中写错了..,并使用标准gs x86安装的当前路径)

(另请 参见使用Ghostscript将多页PDF转换为单个JPG吗?


0

在Linux上

我写了这个命令行

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

但这确实可以完成工作,我对其进行了测试,它还可以与您拥有的所有级别的文件夹一起使用。只要确保将其运行在文件夹结构的根目录即可。每个文件夹中的每个pdf文件都有一个以pdf结尾的附加pdf.firstpage.pdf

你需要pdftktree此和Ubuntu Linux上,你可以用apt安装它:

sudo apt install pdftk tree

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.