apps / imapfilter / printscript.model /
Newer Older
96 lines | 3.671kb
ajout système d'impression p...
seb authored on 2019-12-22
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)
ne redimensionne que si néce...
Sébastien authored on 2022-08-20
23
		if test "${size,,}" != "a5"; then
ajout système d'impression p...
seb authored on 2019-12-22
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
rend possible l'impression e...
Sébastien authored on 2022-08-20
37
		mv $output "$spool/__pdf__"
ajout système d'impression p...
seb authored on 2019-12-22
38
		rm -fr $recto $verso $output
39
	;;
40
	livret)
41
		if test $pages -ne 4; then
42
			rm "$spool/__pdf__"
43
			/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"
44
			exit	
45
		fi
46
		output=$(mktemp --dry-run /dev/shm/XXXXXXXX.pdf)
47
		recto=$(mktemp --dry-run /dev/shm/XXXXXXXX)
48
		verso=$(mktemp --dry-run /dev/shm/XXXXXXXX)
49
		if test $size = "a3"; then
50
			size="a4"
51
			gs -o $output -sDEVICE=pdfwrite -sPAPERSIZE=$size -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.6 "$spool/__pdf__"
52
		else
53
			cp "$spool/__pdf__" $output
54
		fi
55

            
56
		booksize="a$((${size//[^45]}-1))"
57
		pdfjam --paper ${booksize}paper --nup 2x1 --landscape --outfile $recto "$output" 1 "$output" 4
58
		pdfjam --paper ${booksize}paper --nup 2x1 --landscape --outfile $verso "$output" 2 "$output" 3
59
		pdftk A=$(find $recto -name "*pdf") B=$(find $verso -name "*pdf") cat A B output "$spool/__pdf__"
60
		rm -f $recto $verso $output
61
	;;
62
	normal)
63
		if test "${size,,}" != "__papersize__"; then
64
			output=$(mktemp --dry-run /dev/shm/XXXXXXXX)
65
			gs -o $output -sDEVICE=pdfwrite -sPAPERSIZE=__papersize__ -dFIXEDMEDIA -dPDFFitPage -dCompatibilityLevel=1.6 "$spool/__pdf__"
66
			mv $output "$spool/__pdf__"
67
		fi
68
	;;
69
esac
70

            
71
sync
72

            
attend que l'impression soit...
seb authored on 2020-01-04
73
lp -c -o InputSlot=__inputslot__ -o sides=__sides__ -o ColorModel=__colormodel__ -n __qty__ "$spool/__pdf__"
ajout système d'impression p...
seb authored on 2019-12-22
74

            
75
msmtp __from__ << EOM
76
Subject: confirmation impression de __pdf__
77

            
78
Salut __prenom__,
79

            
80
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.
81

            
82
Attention, ça ne veut pas dire que l'impression va se dérouler sans accroc:
83
- pas assez de papier dans le bac
84
- plus de toner
85
- bac de récupération de toner plein
86
- une impression précédente pas encore récupérée et la limite de 250 feuilles imprimées est dépassée
87
- bourrage papier
88
- ...
89

            
90
État actuel de l'imprimante
91
$(/usr/local/bin/printer)
92
EOM
93

            
94
/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"
95

            
96
rm -f "$spool/__pdf__"