#!/usr/bin/bash

# CUPS backend interfész
# Menti a nyomtatási adatokat fájlba, és opcionálisan PDF-be konvertálja.
#
# Az eredeti USB nyomtató letiltása
# Először le kell tiltani az USB-s nyomtatót, hogy az adatok ne a fizikai eszközre menjenek.

# Listázd ki a nyomtatókat és az eszköz elérési útját:
# lpstat -v
# Ez valami ilyesmit ad vissza:
# device for HP_DeskJet: usb://HP/DeskJet_2130?serial=123456789
# Itt az URL: usb://HP/DeskJet_2130?serial=123456789

#Tiltsd le a nyomtatót (opcionális, ha nem akarod, hogy kinyomtassa az adatokat is):
# cupsdisable HP_DeskJet

# Új nyomtató regisztrálása 
# lpadmin -p HP_Save -v printoutdebug:/tmp/print_output.prn -E -m raw
#
# Nyomtatás az új "HP_Save" nyomtatóra:
# lp -d HP_Save dokumentum.pdf
# Ellenőrizd a fájlokat:
# 
# Nyomtatási nyers adat: /tmp/print_output.prn
# PDF verzió (ha engedélyezve van): /tmp/print_output.pdf

OUTPUT_FILE="/tmp/print_output.prn"
OUTPUT_PDF="/tmp/print_output.pdf"
# Konverziós opció (ha true, PDF-re alakítja a kimenetet)
CONVERT_TO_PDF=true  # Itt állíthatod át false-ra, ha nem kell a PDF konverzió

if [ -f "$OUTPUT_FILE" ];then
 logger -t PrintOutDebug "Remove $OUTPUT_FILE"
 rm -f "$OUTPUT_FILE"
fi

if [ -f "$OUTPUT_PDF" ];then 
 logger -t PrintOutDebug "Remove: $OUTPUT_PDF"
 rm -f "$OUTPUT_PDF"
fi


# CUPS paraméterek kezelése
if [ "$1" == "direct" ]; then
    logger -t PrintOutDebug "Direct print: exiting"
    exit 0
fi

if [ "$1" == "probe" ]; then
    echo "direct saveprint \"Save to File\" \"Print to File\""
    logger -t PrintOutDebug "Direct saveprint 'Save to File': exiting"
    exit 0
fi

# Nyomtatási adat mentése fájlba
cat - > "$OUTPUT_FILE"
echo "Nyomtatási adat mentve: $OUTPUT_FILE" >&2
logger -t PrintOutDebug "Nyomtatási adat mentve: $OUTPUT_FILE"
# Ha a PDF konverzió engedélyezve van, alakítsa át
if [ "$CONVERT_TO_PDF" == "true" ] && [ -x "$(which ps2pdf)" ]; then
    if file "$OUTPUT_FILE" | grep -q "PostScript"; then
        echo "PostScript fájl észlelve, konvertálás PDF-re..." >&2
        logger -t PrintOutDebug "PostScript fájl észlelve, konvertálás PDF-re..."
        ps2pdf "$OUTPUT_FILE" "$OUTPUT_PDF"
    elif file "$OUTPUT_FILE" | grep -q "PCL"; then
        echo "PCL fájl észlelve, konvertálás PDF-re..." >&2
        logger -t PrintOutDebug "PCL fájl észlelve, konvertálás PDF-re..."
        pcl6 -o output.ps -sDEVICE=ps2write "$OUTPUT_FILE"
        ps2pdf output.ps "$OUTPUT_PDF"
    else
        echo "Ismeretlen formátum, nem lehet PDF-re konvertálni." >&2
        logger -t PrintOutDebug "Ismeretlen formátum, nem lehet PDF-re konvertálni."
    fi

    echo "PDF konverzió kész: $OUTPUT_PDF" >&2
    logger -t PrintOutDebug "PDF konverzió kész: $OUTPUT_PDF"
fi

if [ -f "$OUTPUT_FILE" ];then
 chmod 666 "$OUTPUT_FILE" 2>/dev/null
 logger -t PrintOutDebug "Jogok beállítása: $OUTPUT_FILE"
fi

if [ -f "$OUTPUT_PDF" ];then 
chmod 666 "$OUTPUT_PDF" 2>/dev/null
 logger -t PrintOutDebug "Jogok beállítása: $OUTPUT_PDF"
fi

exit 0

