Mesclar arquivos PDF com nomes de arquivos relacionados automaticamente

Mesclar arquivos PDF com nomes de arquivos relacionados automaticamente

Preciso mesclar/combinar vários arquivos PDF.

O que tenho são vários arquivos PDF em uma pasta. Os PDFs que precisam ser agrupados/combinados teriam um nome de arquivo parcial em comum; por exemplo:

123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf 

O nome do arquivo começaria com números, sublinhado e depois o nome do arquivo. Terei centenas de PDFs semelhantes e estou procurando uma maneira de mesclar automaticamente esses arquivos usando um script em lote, VBA no Excel ou qualquer outra coisa.

A saída do novo arquivo deve estar em uma pasta separada com o nome 123456.pdf. Eu uso um sistema operacional Windows. Tenho Adobe Reader, PDF995 e CutePDFwriter instalados em meu sistema.

Consigo colocar todos os PDFs em uma pasta principal. Essa pasta teria vários PDFs como abaixo.

123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf
111111_ABCD.pdf
111111_EFGH.pdf
222222_IJKL.pdf
222222_WXYZ.pdf

Neste cenário, os PDFs que espero na pasta de saída são:

123456.pdf
111111.pdf
222222.pdf

Responder1

(Não testado)

  1. Downloadpdftk(link direto aqui).
  2. Extraia em algum lugar.
  3. Coloque pdftk.exe e o lote juntos.
  4. Em seguida, abra cmdonde o lote está localizado* e execute-o.
    *(shift + RightClic abre o prompt de comando aqui)

O script deve funcionar se a estrutura de pastas for assim:

|
+---111111
|       111111_ABCD.pdf
|       111111_EFGH.pdf
|
+---123456
|       123456_ABCD.pdf
|       123456_EFGH.pdf
|       123456_IJKL.pdf
|
\---222222
        222222_IJKL.pdf
        222222_WXYZ.pdf

E não em uma única pasta onde estão todos os arquivos.

@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"
)

Remova echose achar que o lote está bom.

Resposta amplamente inspirada poresse

Atualizar: Existem duas respostas que complementam minha postagem

informação relacionada