ajout système d'impression p...
|
1 |
#!/bin/bash |
2 | ||
3 |
spool='/misc/nextcloud_db/impression' |
|
4 |
test -r "$spool/__pdf__" || exit |
|
5 | ||
6 |
size=$(pdfinfo "$spool/__pdf__" | awk '/^Page size:/{ |
|
7 |
a = $3 |
|
8 |
b = $5 |
|
9 |
if (a >= 419 && a <= 421 && b >= 594 && b <= 596 ) print "a5" |
|
10 |
if (a >= 594 && a <= 596 && b >= 419 && b <= 421 ) print "a5" |
|
11 |
if (a >= 594 && a <= 596 && b >= 841 && b <= 843 ) print "a4" |
|
12 |
if (a >= 841 && a <= 843 && b >= 594 && b <= 596 ) print "a4" |
|
13 |
if (a >= 841 && a <= 843 && b >= 1189 && b <= 1191) print "a3" |
|
14 |
if (a >= 1189 && a <= 1191 && b >= 841 && b <= 843 ) print "a3" |
|
15 |
}') |
|
16 |
test -n "$size" || exit |
|
17 |
mode=__mode__ |
|
18 |
pages=$(pdfinfo "$spool/__pdf__" | awk '/Pages:/{print $2}') |
|
19 | ||
20 |
case ${mode:-normal} in |
|
21 |
massicot) |
|
22 |
output=$(mktemp --dry-run /dev/shm/XXXXXXXX.pdf) |
|
23 |
if test "${size,,}" != "a4"; then |
|
24 |
gs -o $output -sDEVICE=pdfwrite -sPAPERSIZE=a5 -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.6 "$spool/__pdf__" |
|
25 |
else |
|
26 |
cp "$spool/__pdf__" $output |
|
27 |
fi |
|
28 |
recto=$(mktemp -d /dev/shm/XXXXXXXX) |
|
29 |
verso=$(mktemp -d /dev/shm/XXXXXXXX) |
|
30 |
pdfjam --paper a4paper --nup 2x1 --landscape --outfile $recto "$output" 1 "$output" 1 |
|
31 |
if test $pages -eq 2; then |
|
32 |
pdfjam --paper a4paper --nup 2x1 --landscape --outfile $verso "$output" 2 "$output" 2 |
|
33 |
pdftk A=$(find $recto -name "*pdf") B=$(find $verso -name "*pdf") cat A B output "$output" |
|
34 |
elif test $pages -eq 1; then |
|
35 |
output=$(find $recto -name "*pdf") |
|
36 |
fi |
|
37 |
rm -fr $recto $verso $output |
|
38 |
;; |
|
39 |
livret) |
|
40 |
if test $pages -ne 4; then |
|
41 |
rm "$spool/__pdf__" |
|
42 |
/home/sebastien/scripts/smsapi "sms pour __phone__:le document __pdf__ ne contient pas strictement 4 pages nécessaire pour le mode livret, impression annulée" |
|
43 |
exit |
|
44 |
fi |
|
45 |
output=$(mktemp --dry-run /dev/shm/XXXXXXXX.pdf) |
|
46 |
recto=$(mktemp --dry-run /dev/shm/XXXXXXXX) |
|
47 |
verso=$(mktemp --dry-run /dev/shm/XXXXXXXX) |
|
48 |
if test $size = "a3"; then |
|
49 |
size="a4" |
|
50 |
gs -o $output -sDEVICE=pdfwrite -sPAPERSIZE=$size -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.6 "$spool/__pdf__" |
|
51 |
else |
|
52 |
cp "$spool/__pdf__" $output |
|
53 |
fi |
|
54 | ||
55 |
booksize="a$((${size//[^45]}-1))" |
|
56 |
pdfjam --paper ${booksize}paper --nup 2x1 --landscape --outfile $recto "$output" 1 "$output" 4 |
|
57 |
pdfjam --paper ${booksize}paper --nup 2x1 --landscape --outfile $verso "$output" 2 "$output" 3 |
|
58 |
pdftk A=$(find $recto -name "*pdf") B=$(find $verso -name "*pdf") cat A B output "$spool/__pdf__" |
|
59 |
rm -f $recto $verso $output |
|
60 |
;; |
|
61 |
normal) |
|
62 |
if test "${size,,}" != "__papersize__"; then |
|
63 |
output=$(mktemp --dry-run /dev/shm/XXXXXXXX) |
|
64 |
gs -o $output -sDEVICE=pdfwrite -sPAPERSIZE=__papersize__ -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.6 "$spool/__pdf__" |
|
65 |
mv $output "$spool/__pdf__" |
|
66 |
fi |
|
67 |
;; |
|
68 |
esac |
|
69 | ||
70 |
sync |
|
71 | ||
72 |
lp -o InputSlot=__inputslot__ -o sides=__sides__ -o ColorModel=__colormodel__ -n __qty__ "$spool/__pdf__" |
|
73 | ||
74 |
msmtp __from__ << EOM |
|
75 |
Subject: confirmation impression de __pdf__ |
|
76 | ||
77 |
Salut __prenom__, |
|
78 | ||
79 |
L'impression de __pdf__ en __qty__ exemplaires, __papersize_hr__ __sides_hr__ __colormodel_hr__ est lancée sur le bac __inputslot_hr__${mode:+, en mode ${mode}}. Merci de venir la récupérer au plus vite. |
|
80 | ||
81 |
Attention, ça ne veut pas dire que l'impression va se dérouler sans accroc: |
|
82 |
- pas assez de papier dans le bac |
|
83 |
- plus de toner |
|
84 |
- bac de récupération de toner plein |
|
85 |
- une impression précédente pas encore récupérée et la limite de 250 feuilles imprimées est dépassée |
|
86 |
- bourrage papier |
|
87 |
- ... |
|
88 | ||
89 |
État actuel de l'imprimante |
|
90 |
$(/usr/local/bin/printer) |
|
91 |
EOM |
|
92 | ||
93 |
/home/sebastien/scripts/smsapi "sms pour __phone__:impression __pdf__ (__qty__, __papersize_hr__, __colormodel_hr__, __sides_hr__, bac __inputslot_hr__${mode:+, en mode ${mode}}) lancée" |
|
94 | ||
95 |
rm -f "$spool/__pdf__" |