Как я могу объединить первую страницу каждого PDF в папке?

Как я могу объединить первую страницу каждого PDF в папке? Если возможно, я бы хотел сделать это с помощью приложения командной строки. В настоящее время я использую программное обеспечение PDFtk, используя следующую команду:

pdftk *.pdf cat output all.pdf

Но я не знаю, как объединить только первую страницу каждого PDF-файла. Я читал о cat аргументы, но я до сих пор не знаю, как это сделать.

ОБНОВИТЬ:

Команда:

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

Получает первые две страницы последнего PDF-файла, расширенного *. оператор оболочки...

ОБНОВЛЕНИЕ 2:

Успел сделать то, что искал, но вручную, поэтому не использовал *. оператор оболочки:

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

Мнимый сценарий оболочки будет выглядеть так:

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

4 ответа

В следующей команде -dFirstPage=1 а также -dLastPage=1 применять к каждому PDF отдельно, перед объединением:

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

Вот что я использовал в Ubuntu Bionic, так как pdftk больше не доступен:

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) извлеките 1-ю страницу каждого файла PDF и сохраните во временном файле, 3) объедините все файлы в этой папке и 4) удалите эту папку.

Как я могу объединить первую страницу каждого PDF в папке?

Что ж, используя pdftk, вы можете выполнить это через оболочку командной строки в Windows, например, используя пару промежуточных каталогов и простой цикл 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

Дополнительные ресурсы

После установки 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++ или простом Notepad, что файл правильно сохранен в UTF8, затем

gswin32c -dFirstPage=1 -dLastPage=1 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf @file.txt
Другие вопросы по тегам