Слияние 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
Надеюсь, это даст вам начало.