Мне нужно объединить несколько PDF-файлов.
У меня есть несколько файлов PDF в одной папке. PDF-файлы, которые нужно объединить вместе, будут иметь общее частичное имя файла; например:
123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf
Имя файла будет начинаться с цифр, затем подчеркивание, а затем имя файла. У меня будут сотни похожих PDF-файлов, и я ищу способ автоматически объединить эти файлы с помощью пакетного скрипта, VBA в Excel или чего-то еще.
Вывод нового файла должен быть в отдельной папке с именем 123456.pdf
. Я использую ОС Windows. В моей системе установлены Adobe Reader, PDF995 и CutePDFwriter.
Я могу собрать все pdf в одной главной папке. В этой папке будет несколько pdf, как показано ниже.
123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf
111111_ABCD.pdf
111111_EFGH.pdf
222222_IJKL.pdf
222222_WXYZ.pdf
В этом сценарии я ожидаю увидеть в выходной папке следующие PDF-файлы:
123456.pdf
111111.pdf
222222.pdf
решение1
(Не проверено)
- Скачатьpdftk(прямая ссылка здесь).
- Извлеките его куда-нибудь.
- Соедините pdftk.exe и пакет.
- Затем откройте
cmd
место, где находится партия*, и запустите ее.
*(Shift+Правая кнопка мыши открывает командную строку)
Скрипт должен работать, если структура папок выглядит следующим образом:
|
+---111111
| 111111_ABCD.pdf
| 111111_EFGH.pdf
|
+---123456
| 123456_ABCD.pdf
| 123456_EFGH.pdf
| 123456_IJKL.pdf
|
\---222222
222222_IJKL.pdf
222222_WXYZ.pdf
И не в одной папке, где все файлы.
@echo off
setlocal enabledelayedexpansion
rem source root folder where to crawl pdfs.
set "source=c:\mydoc\pdf"
rem destination folder
set "destination=c:\mydoc\merged"
for /f "delims=" %%a in ('dir /b /s /ad /o:n "%source%"') do (
set _pdffiles=
for /f "delims=" %%i in ('dir /b /a-d /o:n "%%a\*.pdf"') do (
set _pdffiles=!_pdffiles! "%%i"
set "_outputpdf=%%~ni"
)
echo pdftk.exe !_pdffiles! cat output "%destination%\!_outputpdf:~0,6!.pdf"
)
Удалите echo
, если считаете, что партия в порядке.
Ответ во многом вдохновленэтот
Обновлять: Есть два ответа, которые дополняют мой пост