diff --git a/create-badge.sh b/create-badge.sh index bee0df0..286d117 100755 --- a/create-badge.sh +++ b/create-badge.sh @@ -1,13 +1,19 @@ #!/bin/bash -#set -x +set -euo pipefail number="$1" name="$2" pseudo="$3" key="$4" -recto_out=recto-out.jpeg -verso_out=verso-out.jpeg +unset tmpdir +cleanup () { + if [ -n "$tmpdir" ] && [ -d "$tmpdir" ]; then + rm -fr "$tmpdir" + fi +} +trap cleanup EXIT +tmpdir=$(mktemp -d) text_to_image () { text="$1" @@ -29,20 +35,39 @@ text_to_qrcode () { convert "$output" -resize "$width"x "$output" } +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[*]}" +} + # 1. name -> image -text_to_image "$number" 42 470 number.jpeg -text_to_image "$name" 42 470 name.jpeg -text_to_image "$pseudo" 42 470 pseudo.jpeg -text_to_image "$key" 36 950 key.jpeg -text_to_qrcode "$key" 276 qrcode.png +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 convert verso.jpeg \ - number.jpeg -geometry +535+96 -composite \ - name.jpeg -geometry +535+260 -composite \ - pseudo.jpeg -geometry +535+413 -composite \ - key.jpeg -geometry +47+577 -composite \ - $verso_out + "$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 convert recto.jpeg \ - qrcode.png -geometry +693+339 -composite \ - $recto_out + "$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 diff --git a/generate-all-badges-from-member-list.sh b/generate-all-badges-from-member-list.sh index d19f07c..841e1ef 100755 --- a/generate-all-badges-from-member-list.sh +++ b/generate-all-badges-from-member-list.sh @@ -7,24 +7,6 @@ normalize_name () { echo $* | sed -e 's/[^ -]\+/\L\u&/g' -e 's/ De / de /g' } -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[*]}" -} - -mkdir -p badges - while read line; do eval member=( $line ) if [ "${member[0]}" = "Clef AXIOM" ]; then @@ -37,5 +19,4 @@ while read line; do key="${member[4]}" ./create-badge.sh "$number" "$lastname $firstname" "$nickname" "$key" - convert_jpeg_to_pdf recto-out.jpeg verso-out.jpeg badges/"${number//\//_}.pdf" done < <(xlsx2csv -q all -d ' ' "$spreadsheet" | tail +3)