#!/bin/sh
# Универсальный фильтр CUPS для конвертации офисных документов в PDF

LO_BIN="/pkg/gnu/libreoffice/core/lib/libreoffice/program/soffice"
LOG_FILE="/tmp/office-to-pdf-debug.log"

echo "=== Filter started at $(date) ===" > "$LOG_FILE"
echo "Arguments: $@" >> "$LOG_FILE"
echo "Input file arg (\$6): $6" >> "$LOG_FILE"

if [ $# -lt 5 ]; then
    echo "ERROR: $0 job-id user title copies options [file]" >&2
    exit 1
fi

TEMP_DIR=$(mktemp -d)
# Гарантируем очистку временной директории при завершении скрипта
trap "rm -rf '$TEMP_DIR'" EXIT

if [ -n "$6" ]; then
    INPUT_FILE="$6"
else
    INPUT_FILE="$TEMP_DIR/input"
    cat > "$INPUT_FILE"
fi

USER_PROFILE="$TEMP_DIR/user_profile"
mkdir -p "$USER_PROFILE"

echo "Running LibreOffice..." >> "$LOG_FILE"

# Запуск с HOME во временной папке и флагами, предотвращающими зависания
HOME="$TEMP_DIR" "$LO_BIN" --headless --invisible --norestore --nofirststartwizard "-env:UserInstallation=file://$USER_PROFILE" --convert-to pdf --outdir "$TEMP_DIR" "$INPUT_FILE" >> "$LOG_FILE" 2>&1
EXIT_CODE=$?

echo "LibreOffice exit code: $EXIT_CODE" >> "$LOG_FILE"
echo "Contents of TEMP_DIR:" >> "$LOG_FILE"
ls -la "$TEMP_DIR" >> "$LOG_FILE"

# ИСПРАВЛЕНИЕ: Ищем созданный PDF файл, так как LO использует имя исходного файла
OUTPUT_FILE=$(find "$TEMP_DIR" -maxdepth 1 -name "*.pdf" -type f | head -n 1)

if [ -n "$OUTPUT_FILE" ] && [ -f "$OUTPUT_FILE" ]; then
    echo "SUCCESS: PDF created at $OUTPUT_FILE" >> "$LOG_FILE"
    # Передаем содержимое PDF в CUPS
    cat "$OUTPUT_FILE"
    exit 0
else
    echo "ERROR: LibreOffice conversion failed (No PDF found in temp dir)" >> "$LOG_FILE"
    echo "ERROR: LibreOffice conversion failed" >&2
    exit 1
fi
