Как я могу объединить первую страницу каждого 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