Repository Public Research preview
1#!/usr/bin/env bash2# Compile le gabarit de plan de cours (formulaire PDF remplissable).3# ./build.sh -> vierge + IMM1003 + IMM1033 dans sortie/4# ./build.sh IMM1003 -> un seul jeu de valeurs (valeurs_IMM1003.tex)5# ./build.sh valeurs_X.tex -> idem, chemin de fichier accepté6set -euo pipefail7cd "$(dirname "$0")"8mkdir -p sortie build910cibles=("$@")11[ ${#cibles[@]} -eq 0 ] && cibles=(vierge IMM1003 IMM1033)1213for c in "${cibles[@]}"; do14 c="${c##*/}"; c="${c%.tex}"; c="${c#valeurs_}"15 [ -f "valeurs_$c.tex" ] || { echo "!! valeurs_$c.tex introuvable"; exit 1; }16 job="plan_de_cours_$c"17 echo "==> $job"18 for pass in 1 2; do19 TEXINPUTS=".:" pdflatex -interaction=nonstopmode -halt-on-error \20 -output-directory=build -jobname="$job" \21 "\def\valeurs{valeurs_$c}\input{gabarit_plan_de_cours}" >/dev/null \22 || { grep -A5 '^!' "build/$job.log" | head -30; exit 1; }23 done24 cp "build/$job.pdf" "sortie/$job.pdf"25 python3 - "sortie/$job.pdf" <<'EOF'26import sys27from pypdf import PdfReader28r = PdfReader(sys.argv[1])29f = r.get_fields() or {}30rempli = sum(1 for v in f.values() if v.get("/V") not in (None, "", "/Off"))31print(f" {len(r.pages)} pages, {len(f)} champs ({rempli} préremplis)")32EOF33done34echo "PDF dans $(pwd)/sortie/"35