#!/bin/sh
#'Печать файлов pdf брошюрами на лазерном принтере с однсторонней печатью'
#Скачано с
https://forum.ubuntu.ru/index.php?topic=207187.15 и доработано
filename=a.pdf #параметры по умолчанию. Можно поставить свои.
pages=40 #максимальное количество страниц в брошюре. Зависит от толщины бумаги.
field=10 #Ширина полей. Можно поставить 0.
firstpage=1 # Номер первой страницы
allpages=1000 # количество страниц. Введите своё
endpage=$((firstpage+allpages-1)) # Номер последней страницы
if [ $# -eq 0 ]; then
echo Печать файла pdf брошюрами $0 [имя файла [номер первой распечатываемой страницы [номер последней страницы [максимальное количество страниц в одной брошюре [ширина полей вокруг листа]]]]]
# echo $0'[ filename [number of the first page [the last page number [the number of pages in the brochure [field width in pixels]]]]]'
exit
fi
ns=0
while [ $ns -lt $# ]; do
ns=$((ns+1))
case $ns in
1) filename=$1;;
2) firstpage=$2;;
3) endpage=$3;;
4) pages=$4;;
5) field=$5;;
esac
done
number_first_page=$firstpage
number_last_page=$endpage
allpages=$((((endpage-firstpage+4)/4)*4)) #количество страниц кратное 4
pages=$((4*(pages/4)))
endpage=$((4*((firstpage+allpages+2)/4)))
pms=$(((allpages+pages-1)/pages)) #количество брошюр
p0=$((4*(allpages/pms/4))) # количество страниц в меньшей брошюре
p1=$((p0+4)) # количество страниц в большей брошюре
l1=$(((allpages-(p0*pms))/4)) #количество больших брошюр
l0=$((pms-l1)) #количество меньших брошюр
if [ $l1 -gt $l0 ]; then #выбор количества страниц в первой брошюре
pp=$p1
lm0=$l0
lm1=$((l1-1))
else
pp=$p0
lm0=$((l0-1))
lm1=$l1
fi
echo страниц всего: $allpages стр. $firstpage - $endpage
if [ $l1 -eq 0 ]; then
s=$l0" x "$p0
else s=$l1" x "$p1" + "$l0" x "$p0
fi
echo Печатается файл $filename стр. $firstpage - $endpage $s с полями $field dpi
while [ $firstpage -lt $number_last_page ]; do
lastpage=$((firstpage+pp-1))
if [ $lastpage -gt $number_last_page ]; then
lastpage=$number_last_page
fi
echo после окончания печати нажмите Enter для печати $pp страниц № $firstpage ... $lastpage
if [ $firstpage -ne $number_first_page ]; then
read key
fi
#pdftops -f $firstpage -l $lastpage -paper A4 $filename - | psbook | psnup -l -pa4 -2 -m$field | psselect -o | lpr
echo дождитесь печати с одной стороны и переложите бумагу в принтере для печати оборотных сторон листов, затем нажмите Enter для продолжения
read key
#pdftops -f $firstpage -l $lastpage -paper A4 $filename - | psbook | psnup -l -pa4 -2 -m$field | psselect -e -r | lpr
firstpage=$((lastpage+1))
if [ $lm0 -gt $lm1 ]
then
pp=$p0
lm0=$((lm0-1))
elif [ $lm0 -lt $lm1 ]
then
pp=$p1
lm1=$((lm1-1))
else
if [ $pp -eq $p1 ]
then
pp=$p0
lm0=$((lm0-1))
else
pp=$p1
lm1=$((lm1-1))
fi
fi
done