#!/bin/sh

set -eu
umask 077

if [ "$#" -ne 2 ]; then
    echo "Usage: $0 fichier-source.pdf fichier-pdfa.pdf" >&2
    exit 64
fi

SOURCE_FILE=$1
OUTPUT_FILE=$2

if [ ! -f "$SOURCE_FILE" ]; then
    echo "PDF source introuvable : $SOURCE_FILE" >&2
    exit 66
fi

SOURCE_DIR=$(CDPATH= cd "$(dirname "$SOURCE_FILE")" && pwd)
OUTPUT_DIR=$(CDPATH= cd "$(dirname "$OUTPUT_FILE")" && pwd)

SOURCE_FILE="$SOURCE_DIR/$(basename "$SOURCE_FILE")"
OUTPUT_FILE="$OUTPUT_DIR/$(basename "$OUTPUT_FILE")"

if [ "$SOURCE_FILE" = "$OUTPUT_FILE" ]; then
    echo "Le PDF source et le PDF de sortie doivent être différents." >&2
    exit 64
fi

SCRIPT_DIR=$(CDPATH= cd "$(dirname "$0")" && pwd)
PACKAGE_DIR=$(CDPATH= cd "$SCRIPT_DIR/.." && pwd)

GS="$PACKAGE_DIR/bin/gs"
PDFA_DEF="$PACKAGE_DIR/share/PDFA_def.ps"
TEMP_OUTPUT="${OUTPUT_FILE}.tmp.$$"

cleanup()
{
    rm -f "$TEMP_OUTPUT"
}

trap cleanup EXIT HUP INT TERM

if [ ! -x "$GS" ]; then
    echo "Ghostscript introuvable ou non exécutable : $GS" >&2
    exit 69
fi

if [ ! -r "$PDFA_DEF" ]; then
    echo "Définition PDF/A introuvable : $PDFA_DEF" >&2
    exit 69
fi

if [ -e "$TEMP_OUTPUT" ]; then
    echo "Fichier temporaire déjà présent : $TEMP_OUTPUT" >&2
    exit 73
fi

"$GS" \
    -dSAFER \
    -dBATCH \
    -dNOPAUSE \
    -dPDFA=3 \
    -dPDFACompatibilityPolicy=2 \
    -sDEVICE=pdfwrite \
    -sColorConversionStrategy=RGB \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    "-sOutputFile=$TEMP_OUTPUT" \
    "$PDFA_DEF" \
    "$SOURCE_FILE"

if [ ! -s "$TEMP_OUTPUT" ]; then
    echo "Ghostscript n'a pas produit de PDF." >&2
    exit 70
fi

mv -f "$TEMP_OUTPUT" "$OUTPUT_FILE"
trap - EXIT HUP INT TERM

exit 0
