Утилита pdfunite
, кажется, делает то, что вы ищете (в Debian -, как и в дистрибутивах Linux, она является частью пакета poppler-utils
.
$ pdfunite a.pdf b.pdf c.pdf combined.pdf
Другой вариант — GhostScript:
$ gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite =sOutputFile=combined.pdf a.pdf b.pdf c.pdf
ImageMagick также говорит на языке GhostScript, поэтому, если вы уже знакомы с ним:
$ convert a.pdf b.pdf c.pdf combined.pdf
Python также предоставляет библиотеку PDF,pdftools
:
$ python3 pdftools/pdfmerge.py -o combined.pdf -d a.pdf b.pdf c.pdf
Независимо от того, какой инструмент вы используете, нам также нужен способ объединения файлов в пары на основе описанных вами критериев. Эта фигурная скобка -расширенная глобус должна получить первую из каждой пары:
SI-T-*{0..9}.pdf
Таким образом, мы можем перебрать это:
for pdf in SI-T-*{0..9}.pdf; do
stuff
done
Мы можем процедурно определить, какое второе имя файла будет основано на первом:
$ pdf1='SI-T-xxxxxx.pdf'
$ pdf2="$(basename "$pdf1".pdf)-sol.pdf"
$ printf "%s %s" "$pdf1" "$pdf2"
$ SI-T-xxxxxx.pdf SI-T-xxxxxx-sol.pdf
Давайте включим это в наш цикл:
for pdf1 in SI-T-*{0..9}.pdf; do
pdf2="$(basename "$pdf1".pdf)-sol.pdf"
pdf3="$(basename "$pdf1".pdf)-combined.pdf"
if ! [[ -r "$pdf2" ]]; then
printf "%s not found to merge with %s; skipping" "$pdf2" "$pdf1" >&2
else
convert "$pdf1" "$pdf2" "$pdf3"
fi
done
Некоторые вещи существуют только потому, что они :кто-то решил, что так и должно быть.
If -o is supplied with no option-name, the values of the
current options are printed. If +o is supplied with no
option-name, a series of set commands to recreate the
current option settings is displayed on the standard
output.
Если вы последуете за +o
или -o
аргументом, тогда -
и +
будут иметь разное значение.