apps / imapfilter / printscript.model /
Newer Older
95 lines | 3.638kb
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)
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__"