#!/bin/bash
# Script per convertire Markdown con Mermaid in PDF usando Docker
# Uso: ./convert.sh input.md output.pdf
set -e
if [ $# -ne 2 ]; then
echo "❌ Uso: $0 <input.md> <output.pdf>"
echo " Esempio: $0 documento.md documento.pdf"
exit 1
fi
INPUT_FILE="$1"
OUTPUT_FILE="$2"
# Verifica che il file di input esista
if [ ! -f "$INPUT_FILE" ]; then
echo "❌ Errore: File '$INPUT_FILE' non trovato!"
exit 1
fi
# Ottieni i percorsi assoluti
WORK_DIR=$(pwd)
INPUT_NAME=$(basename "$INPUT_FILE")
OUTPUT_NAME=$(basename "$OUTPUT_FILE")
# Crea una versione temporanea del file pulita per LaTeX
TEMP_INPUT="temp_$(basename "$INPUT_FILE")"
echo "📄 Conversione in corso..."
echo " Input: $INPUT_FILE"
echo " Output: $OUTPUT_FILE"
echo "🔧 Creazione file temporaneo pulito per LaTeX..."
# Sostituisci caratteri Unicode problematici con equivalenti ASCII
sed 's/├─/|--/g; s/└─/\`--/g; s/│/|/g; s/─/-/g' "$INPUT_FILE" > "$TEMP_INPUT"
echo "✅ File temporaneo creato: $TEMP_INPUT"
# Esegui la conversione con Docker con opzioni di sicurezza per Chromium
echo "🚀 Avvio container Docker per conversione..."
docker run --rm \
-v "$WORK_DIR:/data" \
-w /data \
--user 33333:33333 \
--security-opt seccomp=unconfined \
--cap-add=SYS_ADMIN \
pandoc-mermaid \
bash -c "echo 'Container avviato, inizio conversione...' && \
export PUPPETEER_ARGS='--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu' && \
echo 'Esecuzione pandoc...' && \
pandoc \"$(basename "$TEMP_INPUT")\" \
-o \"$OUTPUT_NAME\" \
--filter mermaid-filter \
--toc \
-V papersize:a4 \
--highlight-style pygments \
-N \
-V geometry:'top=2cm, bottom=1.5cm, left=2cm, right=2cm' \
-V toc-title:'Indice' \
--pdf-engine=pdflatex && \
echo 'Pandoc completato con successo!' || echo 'Errore durante pandoc!'"
CONVERSION_EXIT_CODE=$?
# Rimuovi il file temporaneo
rm -f "$TEMP_INPUT"
if [ $CONVERSION_EXIT_CODE -eq 0 ]; then
# Sposta il file dalla directory di lavoro alla destinazione finale
if [ -f "$OUTPUT_NAME" ]; then
mv "$OUTPUT_NAME" "$OUTPUT_FILE"
echo "✅ Conversione completata con successo!"
echo "📋 File PDF generato: $OUTPUT_FILE"
ls -lh "$OUTPUT_FILE"
else
echo "❌ Errore: File PDF non generato nel percorso atteso ($OUTPUT_NAME)"
exit 1
fi
else
echo "❌ Errore durante la conversione! Exit code: $CONVERSION_EXIT_CODE"
exit 1
fi