Adobe Acrobat: Как пакетно объединить несколько файлов PDF?

10

У меня есть 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 ?!

Андрей Андре
источник
Что именно вы подразумеваете под «иметь объединенный файл этих двух файлов» ? Будет ли объединение и объединение этих двух файлов в 1 PDF для вас?
Курт Пфайфл
Adobe Acrobat или Adobe Acrobat Reader ?
wmz
@AndreiAndre Многие хорошие решения были опубликованы на ваш вопрос. Может быть, вы могли бы выбрать тот, который соответствует всем вашим потребностям и пометить его как принятый.
Никда

Ответы:

12

Вы можете сделать это с помощью короткого пакетного файла и 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»shell: 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"
nixda
источник
ОЧЕНЬ хороший ответ. Я изо всех сил пытаюсь изменить его, поэтому он сохраняет как FOLDERNAME вместо binder.pdf. Как я мог это сделать?
Чен Статс Ю
@ChenStatsYu Смотрите обновление
nixda
ВЕЛИКИЙ!! Извините, что спросил снова, не уверен, стоит ли начинать новый пост. Всего лишь один последний запрос, поскольку я повторяю это для почти 40/50 папок, можем ли мы изменить его, чтобы отправить «папку» в cmd и использовать имя папки, вместо того, чтобы выбирать какие-то pdf-файлы из папки?
Чен Статс Ю
Кроме того, я надеюсь, что он поддержит неанглийские foldernames.
Чен Статс Ю
5

Если вы работаете в 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, но я ее не тестировал.

Cacovsky
источник
1
Это работает на окнах тоже. Мне пришлось написать полный путь к исполняемому файлу ghostscript (на моем компьютере это «c: \ Program File \ gs \ gs9.07 \ bin \ gswin32c.exe»), а расширение «* .pdf» не работает, но Сам ghostscript работает отлично.
Питару,
3

Я успешно использовал вышеуказанное решение. Тем не менее, в моей системе (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
Джайлс Хадсон
источник
«вышеуказанное решение» - по-видимому, вы имеете в виду решение nixda. Если бы за ваш ответ проголосовали выше, чем за nixda, он был бы ниже
лапша
1

Существует новый онлайновый инструмент Advanced PDF Manipulation под названием Sej-da, который все еще находится в бета-версии, с множеством функций PDF (включая возможность объединения нескольких PDF-файлов). Это бесплатно и вполне может помочь вашим потребностям.

http://sejda.com/

Краткий обзор его функций был проведен только пару недель назад в Revision 3:

http://revision3.com/tzdaily/sejda-online-pdf

Саймон
источник
ОП явно способен объединять PDF-файлы, он хочет пакетного слияния с автоматизированным процессом. В вашем ответе нет подробностей о том, как использовать сейду таким образом, и это не очевидно из их сайта
лапша
1

Возможно, лучше использовать пакетный сценарий. Создайте и соберите все ваши файлы PDF в формате xxxx.abcdef.pdf.

Первая часть - это так называемый пакетный тег; вторая часть - это идентификатор файла (имя файла). Теги для каждой спины похожи по длине и значению; имена файлов идут после точки.

Например, ваша первая партия состоит из 1111.3425.pdf, 1111.76501.pdf и так далее. Ваша вторая партия - 22222.1432.pdf, 22222.4398 и так далее. И так далее и тому подобное для других партий.

Затем вы можете использовать программное обеспечение автоматического слияния, которое может обрабатывать тысячи файлов, создавая отдельное слияние для каждого пакета. Я нашел это бесплатное программное обеспечение Dysprosium , которому не нужна командная строка или пакетный скрипт. Вы можете скачать его в виде портативного файла JAR. У этого есть различные автоматизированные сценарии; один описан в этом ответе как пометка, а другой как разделенная папка.

В зависимости от вашего оборудования вы можете пакетно объединить тысячи файлов в предопределенные пакеты.

Любое Тело
источник
0

Попробуйте PDFMerge . Но не используйте начальную форму, где вы должны выбрать каждый файл один за другим. Вместо этого подождите, пока сайт проверит вашу установку Java, затем нажмите ссылку «Попробуйте PDFMerge Java Applet». После того, как апплет загружен и разрешен к запуску, нажмите кнопку « Выбрать файлы» , и вы сможете выбрать несколько файлов (объединить в один файл).

Объединение будет очень быстрым и сможет обрабатывать большое количество файлов, так как на сайт ничего не загружается. Все делается на вашем компьютере с помощью вашей установки Java.

PS: Извините, если вы ищете автономное программное обеспечение, которое можно настроить для создания отдельных файлов PDF в нескольких папках.

ADTC
источник
0

Если вы работаете на Mac, вы можете создать скрипт Automator для решения этой задачи. Сделайте это как действие папки и просто поместите PDF-файлы в него и увидите, как это происходит! Если вы хотите, я могу показать вам, как вы работаете Mac?

Хенрик Сёдерлунд
источник
0

В линуксе

Я написал эту довольно длинную командную строку

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
Эдуард Флоринеску
источник