9

У меня есть 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 ответов8

12

Вы можете сделать это с помощью короткого пакетного файла и pdftk.exe (не pdftk Builder, который является версией GUI).
Там нет необходимости устанавливать что-либо.

подготовка

  • скачать и извлечь pdftk с UniExtract
  • Откройте ..\pdftk\bin * и скопируйте pdftk.exe и libiconv2.dll в папку по вашему выбору
  • создайте новый текстовый файл и вставьте следующий код

    @echo off 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"
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, но я ее не тестировал.

3

Я успешно использовал вышеуказанное решение. Тем не менее, в моей системе (Windows 7 64-bit) код как таковой добавляет PDF-файлы в (очевидно) случайном порядке, а не в алфавитном порядке по имени файла.

Чтобы заставить его добавлять файлы в алфавитном порядке, вам нужно добавить параметр sort-object в команду DIR (он же 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
1

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

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

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

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

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

1

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

http://sejda.com/

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

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

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
0

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .