Слияние PDF-файлов с PDFTK

У меня есть каталог с файлами PDF, который выглядит следующим образом:

2016_AAA_SomeRandomText1.pdf

2016_BBB_SomeRandomText1.pdf

2016_AAA_SomeRandomText2.pdf

2016_BBB_SomeRandomText2.pdf

2016_AAA_SomeRandomText3.pdf

2016_BBB_SomeRandomText3.pdf

так далее...

Примечание: SomeRandomText изменяется, но в парах.

Итак, я хочу просмотреть папку через интерфейс командной строки Windows с циклом FOR и сгенерировать файл PDF для каждой пары SomeRandomText с PDFTK. Итак, вывод будет таким:

2016_AAA_SomeRandomText1.pdf + 2016_BBB_SomeRandomText1.pdf = 2016_SomeRandomText1.pdf

2016_AAA_SomeRandomText2.pdf + 2016_BBB_SomeRandomText2.pdf = 2016_SomeRandomText2.pdf

2016_AAA_SomeRandomText3.pdf + 2016_BBB_SomeRandomText3.pdf = 2016_SomeRandomText3.pdf

так далее...

Вот что у меня есть (если я работаю в C:\user\pdfs):

FOR /R %I IN (*.pdf) DO pdftk 

2 ответа

Эта работа для меня, проверена:

заменять"%~dp0"на ваш «действительный» путь к"C:\user\pdfs"

      @echo off && cd /d "%~dp0"

for /f tokens^=1-3^delims^=_ %%i in ('^^^< nul where ".:*.pdf"')do if not exist "%%~i_%%~nk%%~xk" (
     "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "%%~i_*_*%%~nk%%~xk" cat output "%%~i_%%~nk%%~xk"
    )

Результаты формируют этоforпетля иifсостояние аналогичное:

      if not exist "2016_SomeRandomText1.pdf" ( 
    "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "F:\2020-SU\Q1058228\2016_*_SomeRandomText1.pdf" cat output "F:\2020-SU\Q1058228\2016_SomeRandomText1.pdf"
    ) 

Я расскажу вам, как я это сделал в bash, и, возможно, вы сможете перевести это.

я использую pdfunite (чуть более прямой, чем pdftk) но как только вы выясните синтаксис, это достаточно просто.

for AFILE in `ls 2016*AAA*.pdf`
## For each of the files starting with 2016_AAA
do
   BFILE=`echo $AFILE | sed -e 's/AAA/BBB/'`
## I use stream editor to replace the AAA with BBB and define the
## new file name.  You can probably use SUBSTITUTE in Win
   pdftk $AFILE $BFILE cat output OUTPUT-$AFILE
## This will combine $AFILE and BFILE into OUTPUT-AFILE
done

Надеюсь, это даст вам начало.

Другие вопросы по тегам