Как сделать пакет документов Merger PDF - PullRequest
0 голосов
/ 18 августа 2011

Я ищу либо пакетный файл, либо vbscript, который будет сливаться как имена файлов pdf.Файлы, которые должны быть объединены, будут иметь одно и то же имя вплоть до первого "."У меня есть целые папки, которые содержат около 4000 файлов.Расширения файлов соответствуют следующему формату

1111111111111111.22222222.pdf ==> 1 - любые 16 цифр 0-9, а 2 - любые 8 цифр 0-9

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

Пример: 1111111111111111.25484686.pdf должен объединиться с 1111111111111111.54874568, в то время как 5555555555555555.78468767 должен объединиться с 5555555555555555.48687654 и 55555555555555.48687654 и 55555555555555555589894582

не может быть выдан

.Новое имя файла после его вывода не имеет значения, пока оно работает.

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

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Поиск Google найден http://www.pdfsam.org/ - сайт, который предлагает бесплатную утилиту слияния PDF, которая имеет интерфейс командной строки (а также графический интерфейс).Я понятия не имею, насколько хорошо это работает.Убедитесь, что вы получаете бесплатную утилиту, предлагаемую этим сайтом, а не решение конкурента, рекламируемое на том же сайте.

Существует множество других утилит, большинство из которых за плату.

Как только вы поймете, как использовать интерфейс командной строки выбранной вами утилиты, вы можете использовать пакетный файл, подобный приведенному ниже, для динамического построения списка файлов для слияния.(Этот пакетный код не проверен. Концепция определенно будет работать, но может потребоваться некоторая отладка)

@echo off
setlocal enableDelayedExpansion

:: This initial loop determines which files need to be merged
:: and then calls :merge for each unique set of files. This top
:: loop should work no matter what utility you choose.
set "current="
set cnt=0
:: for current directory, LOC should be empty (or .\)
:: for any other path, LOC should include \ at end
set "LOC="
for %%F in ("%LOC%*.*.pdf") do (
  for /f "tokens=1,* delims=." %%A in ("%%~nF") do (
    if "%%A" neq "!current!" (
      if defined current call :merge
      set cnt=0
      set current=%%A
    )
    set /a cnt+=1
    set pdf.!cnt!=%%~fF
  )
exit /b


:merge
:: This routine should build the command line to merge the current
:: file list contained in pdf.1 through pdf.!cnt!
::
:: Below is code to build a hypothetical file list to be used on
:: the merge command line. This will obviously need to be modified
:: based on the syntax of your chosen merge utility.
::
  set "list="
  for /l %%N in (1 1 !cnt!) do set list=!list! -f "!pdf.%%N!"
::
::
:: The rest is up to you!
::
exit /b
0 голосов
/ 12 марта 2014

Это программное обеспечение, Диспрозий , может выполнять пакетное слияние без необходимости записи командного файла и без перетаскивания, и его можно свободно получать и использовать.Достаточно поместить все партии в одну папку, как и ожидалось.Но вам нужно иметь аппаратные ресурсы, пропорциональные размеру файлов в вашем пакете.

Это простой легкий "JAR" файл, переносимый без установки в операционной системе.

Поскольку это программное обеспечение на основе Java, вам также необходимо увеличить объем памяти Java, доступной для времени выполнения Java.Java должна захватить часть физической памяти для рендеринга больших файлов PDF.Это wiki объясняет, как вы можете увеличить время выполнения Java.

(ИМХО) С готовым программным обеспечением вы не можете объединять пакеты PDF, которые имеют общий размер больше, чем 3 ГБ-3,5 ГБ.

...