Преобразовать PDF в PDF/A

Время на прочтение: 2 минут(ы)

Чтобы преобразовать PDF в PDF/A, можно использовать утилиты, такие как ghostscript или pdftk, которые легко интегрируются в ваш скрипт. В этом примере будет использоваться ghostscript, так как он часто предустановлен на системах Linux.

Дополните ваш скрипт следующим образом, чтобы добавить преобразование PDF в PDF/A:

Полный скрипт с преобразованием в PDF/A

#!/bin/sh

# Директория для обработки файлов
DIRECTORY="/path/to/directory"
# Расширение файлов для обработки
EXTENSION=".pdf"
# Скрипт, который будет применяться
SCRIPT_TO_RUN="./process.sh"
# Email для отправки
EMAIL="your_email@example.com"

# Получение текущей даты и времени для создания папки
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
DESTINATION_DIR="$DIRECTORY/processed_$TIMESTAMP"

# Создание папки для сохранения обработанных файлов
mkdir -p "$DESTINATION_DIR"

# Проверка существования директории
if [ -d "$DIRECTORY" ]; then
    # Перебор файлов с указанным расширением
    for file in "$DIRECTORY"/*"$EXTENSION"; do
        if [ -f "$file" ]; then
            echo "Обработка файла: $file"
            
            # Преобразование PDF в PDF/A
            OUTPUT_FILE="$DESTINATION_DIR/$(basename "$file" .pdf)_pdfa.pdf"
            gs -dPDFA=1 -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$OUTPUT_FILE" "$file"
            
            # Проверка успешности преобразования
            if [ $? -eq 0 ]; then
                echo "Преобразование $file в $OUTPUT_FILE успешно."
            else
                echo "Ошибка при преобразовании $file в PDF/A."
                continue
            fi
        fi
    done

    # Проверка наличия обработанных файлов
    if [ "$(ls -A "$DESTINATION_DIR")" ]; then
        echo "Отправка файлов на $EMAIL"
        
        # Получение текущей даты и времени для имени ZIP-архива
        ZIP_TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
        ZIP_FILE="processed_files_$ZIP_TIMESTAMP.zip"

        # Создание ZIP-архива обработанных файлов
        cd "$DESTINATION_DIR" || exit
        zip -r "$ZIP_FILE" *

        # Отправка email с вложением
        if command -v mutt >/dev/null 2>&1; then
            echo "Файлы из $DESTINATION_DIR" | mutt -a "$ZIP_FILE" -s "Обработанные файлы" -- "$EMAIL"
        elif command -v mail >/dev/null 2>&1; then
            echo "Файлы из $DESTINATION_DIR" | mail -a "$ZIP_FILE" -s "Обработанные файлы" "$EMAIL"
        else
            echo "Ошибка: ни mutt, ни mail не установлены. Установите один из них."
            rm "$ZIP_FILE"  # Удалить архив после проверки
            exit 1
        fi

        echo "Письмо отправлено!"
        rm "$ZIP_FILE"  # Удалить архив после отправки
    else
        echo "Нет обработанных файлов для отправки."
    fi
else
    echo "Директория $DIRECTORY не существует."
    exit 1
fi

Инструкции:

  1. Замените "/path/to/directory" на путь к вашей директории.
  2. Замените ".pdf" на нужное расширение файлов для обработки (в данном случае используется PDF).
  3. Замените "./process.sh" на путь к вашему скрипту (если он используется).
  4. Укажите ваш email в переменной EMAIL.
  5. Убедитесь, что у вас установлен ghostscript:
   sudo apt-get install ghostscript
  1. Убедитесь, что оба скрипта (apply_script.sh и process.sh) имеют разрешение на исполнение:
   chmod +x apply_script.sh
   chmod +x process.sh
  1. Убедитесь, что в системе установлены и настроены утилиты mutt или mail для отправки писем:
   sudo apt-get install mutt mailutils zip
  1. Запустите ваш скрипт:
   ./apply_script.sh

Описание изменений

  • С использованием ghostscript происходит преобразование PDF в PDF/A с помощью команды gs. В случае успешного преобразования создается выходной файл с добавлением суффикса _pdfa к имени исходного файла.
  • Обрабатываются и отправляются только файлы с расширением .pdf.

Теперь ваш скрипт сможет обрабатывать PDF файлы, преобразовывать их в PDF/A, архивировать и отправлять на указанный email.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x