Adobe Acrobat: Как пакетно объединить несколько файлов PDF?
У меня есть 3 папки:
Folder 1
Folder 2
Folder 3
В каждой папке у меня есть 5 файлов PDF:
Folder 1
file1.pdf
file2.pdf
Folder 2
file1.pdf
file2.pdf
Folder 3
file1.pdf
file2.pdf
Я хочу, чтобы в каждой папке был объединенный файл этих двух файлов:
Folder 1
binder.pdf
Folder 2
binder.pdf
Folder 3
binder.pdf
Любая идея? Не говорите делать это вручную. Этот случай просто чтобы объяснить вам мою проблему. Думаю, у меня есть сотни папок.:) Может быть, я могу использовать другой инструмент вместо Adobe Acrobat?!
8 ответов
Вы можете сделать это с помощью короткого пакетного файла и pdftk.exe (не pdftk Builder, который является версией GUI).
Там нет необходимости устанавливать что-либо.
подготовка
- скачать и извлечь pdftk с UniExtract
- Откройте..\pdftk\bin* и скопируйте pdftk.exe и libiconv2.dll в папку по вашему выбору
создайте новый текстовый файл и вставьте следующий код
@ эхо выключено setlocal enabledelayedexpansion FOR %%A IN (%*) DO (установить команду =! Команда! %%A) pdftk.exe % команда% cat выводит "%~dp1binder.pdf"
- Сохраните его как merge@pdf.cmd в той же папке, что и pdftk.exe и libiconv2.dll
- создайте ярлык этого.cmd и поместите его в папку sendto (оболочкаWin+R ":sendto)
использование
- Перейдите в папку с некоторыми PDF-файлами и выберите столько PDF-файлов, сколько хотите
- Щелкните правой кнопкой мыши по ним и выберите только что созданный ярлык
будет создан новый переплетный PDF-файл в той же папке, где все выбранные PDF-файлы будут объединены в один
Обновление: версия, которая использует имя текущей папки в качестве имени файла для сгенерированного PDF
@echo off
setlocal enabledelayedexpansion
:: Concat all paths fromselected files and save it as command
FOR %%A IN (%*) DO (set command=!command! %%A)
:: Take path from first selected file and save it as path
set path=%~dp1
echo %path%
:: Check if a trailing slash is present. If yes, remove it
IF %path:~-1%==\ SET path=%path:~0,-1%
:: Get last folder from path
FOR %%F in ("%path%") do (set lastFolder=%%~nxF)
:: Call pdftk, pass on command. use lastFolder as filename
pdftk.exe %command% cat output "%path%\%lastFolder%.pdf"
Если вы работаете в Linux (или Mac, или в любой среде, в которой он установлен), вы можете использовать инструмент командной строки ghostscript, чтобы объединить их.
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH file1.pdf file2.pdf file3.pdf
Вы также можете использовать следующее, чтобы объединить все файлы в текущей папке
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH *.pdf
Вы можете скачать ghostscript здесь. Также есть версия для Windows, но я ее не тестировал.
Я успешно использовал вышеуказанное решение. Тем не менее, в моей системе (Windows 7 64-bit) код как таковой добавляет PDF-файлы в (очевидно) случайном порядке, а не в алфавитном порядке по имени файла.
Чтобы заставить его добавлять файлы в алфавитном порядке, вам нужно добавить параметр sort-object в команду DIR (aka Get-ChildItem) (sort-object здесь не принимает никаких параметров, так как имя файла / в алфавитном порядке по умолчанию):
dir $inputfolder -r -include *.pdf -exclude $outputfile | sort-object | group DirectoryName % {& $PDFtk $.group CAT OUTPUT "$($.Name)\$outputfile" verbose}
Те, у кого есть имена файлов вида 1.pdf 2.pdf ... 10.pdf и т. Д., А не 01.pdf 02.pdf .. 10.pdf, также могут попробовать вариант этого:
pdftk *?.pdf *??.pdf *???.pdf *????.pdf cat output out.pdf
Возможно, лучше использовать пакетный сценарий. Создайте и соберите все ваши файлы PDF в формате xxxx.abcdef.pdf.
Первая часть - это так называемый пакетный тег; вторая часть - это идентификатор файла (имя файла). Теги для каждой спины похожи по длине и значению; имена файлов идут после точки.
Например, ваша первая партия состоит из 1111.3425.pdf, 1111.76501.pdf и так далее. Ваша вторая партия - 22222.1432.pdf, 22222.4398 и так далее. И так далее и тому подобное для других партий.
Затем вы можете использовать программное обеспечение автоматического слияния, которое может обрабатывать тысячи файлов, создавая отдельное слияние для каждого пакета. Я нашел это бесплатное программное обеспечение Dysprosium, которому не нужна командная строка или пакетный скрипт. Вы можете скачать его в виде портативного файла JAR. У этого есть различные автоматизированные сценарии; один описан в этом ответе как пометка, а другой как разделенная папка.
В зависимости от вашего оборудования вы можете пакетно объединить тысячи файлов в предопределенные пакеты.
Существует новый онлайновый инструмент Advanced PDF Manipulation под названием Sej-da, который все еще находится в бета-версии, с множеством функций PDF (включая возможность объединения нескольких файлов PDF). Это бесплатно и вполне может помочь вашим потребностям.
Краткий обзор его функций был проведен только пару недель назад в Revision 3:
Если вы работаете на Mac, вы можете создать скрипт Automator для решения этой задачи. Сделайте это как действие папки и просто поместите PDF-файлы в него и посмотрите, как это происходит! Если вы хотите, я могу показать вам, как вы работаете Mac?
В линуксе
Я написал эту довольно длинную командную строку
tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} dirname {} | uniq | xargs -L1 -I {} bash -c 'cd "$0" && pdftk *.pdf cat output binder.pdf' {}
Но он выполняет свою работу, я проверял это, он также работает с тем, сколько у вас уровней папок. Просто убедитесь, что вы запускаете его в корне структуры папок.
Тебе нужно pdftk
а также tree
для этого и на Ubuntu Linux вы можете установить его с помощью apt:
sudo apt install pdftk tree
Попробуйте PDFMerge. Но не используйте начальную форму, где вы должны выбрать каждый файл один за другим. Вместо этого подождите, пока сайт проверит вашу инсталляцию Java, а затем нажмите ссылку "Попробуйте PDFMerge Java Applet". Как только апплет загружен и разрешен к запуску, нажмите кнопку " Выбрать файлы", и вы сможете выбрать несколько файлов (объединить в один файл).
Слияние будет очень быстрым и сможет обрабатывать большое количество файлов, так как на сайт ничего не загружается. Все делается на вашем компьютере с помощью вашей установки Java.
PS: Извините, если вы ищете автономное программное обеспечение, которое можно настроить для создания отдельных файлов PDF в нескольких папках.