2023-03-10 16:06:20 +01:00
|
|
|
#!/bin/bash
|
2023-06-12 17:28:08 +02:00
|
|
|
set -euo pipefail
|
2023-03-10 16:06:20 +01:00
|
|
|
|
|
|
|
number="$1"
|
|
|
|
name="$2"
|
|
|
|
pseudo="$3"
|
|
|
|
key="$4"
|
|
|
|
|
2023-06-12 17:28:08 +02:00
|
|
|
unset tmpdir
|
|
|
|
cleanup () {
|
|
|
|
if [ -n "$tmpdir" ] && [ -d "$tmpdir" ]; then
|
|
|
|
rm -fr "$tmpdir"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
tmpdir=$(mktemp -d)
|
2023-03-10 16:06:20 +01:00
|
|
|
|
|
|
|
text_to_image () {
|
|
|
|
text="$1"
|
|
|
|
fontsize="$2"
|
2023-03-10 22:27:10 +01:00
|
|
|
maxwidth="$3"
|
|
|
|
output="$4"
|
|
|
|
convert -size $((${#text} * $fontsize))x$((2 * $fontsize)) xc:white -gravity center -font "Cantarell-Extra-Bold" -pointsize "$fontsize" -fill black -draw 'text 0,0 "'"$text"'"' "$output"
|
2023-03-10 16:06:20 +01:00
|
|
|
convert "$output" -trim "$output"
|
2023-03-10 22:27:10 +01:00
|
|
|
if [ "$(identify -format "%w" "$output")" -gt "$maxwidth" ]; then
|
|
|
|
convert "$output" -resize "$maxwidth"x "$output"
|
|
|
|
fi
|
2023-03-10 16:06:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
text_to_qrcode () {
|
|
|
|
text="$1"
|
2023-03-10 22:27:10 +01:00
|
|
|
width="$2"
|
|
|
|
output="$3"
|
2023-03-10 16:17:47 +01:00
|
|
|
qrencode -t PNG -m 1 -s 9 "$text" -o "$output"
|
2023-03-10 22:27:10 +01:00
|
|
|
convert "$output" -resize "$width"x "$output"
|
2023-03-10 16:06:20 +01:00
|
|
|
}
|
|
|
|
|
2023-06-12 17:28:08 +02:00
|
|
|
viewjpeg="$(ls /usr/share/ghostscript/*/lib/viewjpeg.ps | tail -1)"
|
|
|
|
convert_jpeg_to_pdf () {
|
|
|
|
declare -a jpeg_stanza
|
|
|
|
while [ $# -gt 1 ]; do
|
|
|
|
jpeg_stanza+=( "($1) viewJPEG showpage" )
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
gs \
|
|
|
|
-dNOSAFER \
|
|
|
|
-sDEVICE=pdfwrite \
|
|
|
|
-o "$1" \
|
|
|
|
-g1051x678 \
|
|
|
|
$viewjpeg \
|
|
|
|
-c "${jpeg_stanza[*]}"
|
|
|
|
}
|
|
|
|
|
2023-03-10 16:06:20 +01:00
|
|
|
# 1. name -> image
|
2023-06-12 17:28:08 +02:00
|
|
|
text_to_image "$number" 42 470 "$tmpdir"/number.jpeg
|
|
|
|
text_to_image "$name" 42 470 "$tmpdir"/name.jpeg
|
|
|
|
text_to_image "$pseudo" 42 470 "$tmpdir"/pseudo.jpeg
|
|
|
|
text_to_image "$key" 36 950 "$tmpdir"/key.jpeg
|
|
|
|
text_to_qrcode "$key" 276 "$tmpdir"/qrcode.png
|
2023-03-10 16:06:20 +01:00
|
|
|
|
|
|
|
convert verso.jpeg \
|
2023-06-12 17:28:08 +02:00
|
|
|
"$tmpdir"/number.jpeg -geometry +535+96 -composite \
|
|
|
|
"$tmpdir"/name.jpeg -geometry +535+260 -composite \
|
|
|
|
"$tmpdir"/pseudo.jpeg -geometry +535+413 -composite \
|
|
|
|
"$tmpdir"/key.jpeg -geometry +47+577 -composite \
|
|
|
|
"$tmpdir"/verso.jpeg
|
2023-03-10 16:06:20 +01:00
|
|
|
|
|
|
|
convert recto.jpeg \
|
2023-06-12 17:28:08 +02:00
|
|
|
"$tmpdir"/qrcode.png -geometry +693+339 -composite \
|
|
|
|
"$tmpdir"/recto.jpeg
|
|
|
|
|
|
|
|
[ -d badges ] || mkdir badges
|
|
|
|
convert_jpeg_to_pdf "$tmpdir"/recto.jpeg "$tmpdir"/verso.jpeg badges/"${number//\//_}".pdf
|