我怎样才能将每个 pdf 的第一页合并到一个文件夹中?

我怎样才能将每个 pdf 的第一页合并到一个文件夹中?

如何将文件夹中每个 PDF 的第一页合并?如果可能的话,我想使用命令行应用程序来执行此操作。目前我正在使用PDFtk软件使用这样的命令:

pdftk *.pdf cat output all.pdf

但我不知道如何合并第一页每个pdf。我读过相关cat论点,但我仍然不知道该怎么做。

更新:

命令:

pdftk *.pdf cat 1-2 output all.pdf

获取由 shell 运算符扩展的最后一个 pdf 的前两页*.......

更新2

我设法做了我想要做的事情,但是是手动的,所以不使用*.shell 运算符:

pdftk 1.pdf 2.pdf cat 1 1 output combined.pdf

一个假想shell 脚本如下:

pdftk *.pdf cat repeat(1, COUNT(*.pdf)) output combined.pdf

repeat(C, N) -> repeat the character C N times
COUNTOF(*.pdf) -> get the number of PDF files the folder

答案1

在以下命令中,在连接之前,-dFirstPage=1-dLastPage=1分别应用于每个 PDF:

gs -dFirstPage=1 -dLastPage=1 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf *.pdf

答案2

我如何将文件夹中每个 pdf 的第一页合并?

嗯,使用pdftk您可以通过 Windows 中的命令行 shell 完成此操作,像这样使用几个暂存目录和一个简单的 FOR 循环来相应地迭代 pdftk 命令。。。

请注意,带有空格的文件夹名称需要在文件夹名称周围加双引号,并且文件夹路径中也需要加双反斜杠。例如D:\\"test folder"\\*.pdf,,C:\Test\\"Output 1"等等。

批处理脚本

@ECHO ON

SET PDFDir=C:\Users\User\Desktop\Test
SET newPDFDir=%PDFDir%\new
SET combinedDir=%newPDFDir%\combined

IF NOT EXIST "%newPDFDir%" MD "%newPDFDir%"
IF NOT EXIST "%combinedDir%" MD "%combinedDir%"
IF EXIST "%combinedDir%\*.pdf" DEL /Q /F "%combinedDir%\*.pdf"
IF EXIST "%newPDFDir%\*.pdf" DEL /Q /F "%newPDFDir%\*.pdf"

:IteratePDFtk
FOR %%F IN ("%PDFDir%\*.PDF") DO pdftk %%~F cat 1 output "%newPDFDir%\%%~NXF"
CD /D "%newPDFDir%"
pdftk %newPDFDir%\*.pdf cat output %combinedDir%\combined.pdf
EXPLORER "%combinedDir%"
GOTO EOF

更多资源

答案3

由于 pdftk 不再可用,因此这是我在 Ubuntu Bionic 中使用的:

mkdir temp && find . -maxdepth 1 -name '*.pdf' -type f -exec bash -c 'qpdf --empty --pages "$1" 1 -- "temp/${1%.pdf}_1.pdf"' bash {} \; && qpdf --empty --pages temp/*.pdf -- out.pdf && rm -r temp 简要描述:1)创建一个临时文件夹,2)提取每个 pdf 文件的第一页并存储在临时文件中,3)合并该文件夹中的所有文件,4)删除该文件夹。

答案4

安装 Ghostscript 后:

如果 PDF 文件包含重音符和空格,请使用 Windows 键 + R 和 打开命令终端 cdm /U。使用 cdm.exe 添加路径

set path=C:\Program Files (x86)\gs\gs9.23\bin 

更改目录

cd ...

使用以下方法创建文件列表(由于有空格,文件名写在引号之间):

(for /f "delims=" %f in ('dir /b /s /c *.pdf') do @echo "%f") > file.txt

在 Notepad++ 或简单的记事本中检查文件是否以 UTF8 正确保存,然后

gswin32c -dFirstPage=1 -dLastPage=1 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf @file.txt

相关内容