Чтобы преобразовать 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
Инструкции:
- Замените
"/path/to/directory"
на путь к вашей директории. - Замените
".pdf"
на нужное расширение файлов для обработки (в данном случае используется PDF). - Замените
"./process.sh"
на путь к вашему скрипту (если он используется). - Укажите ваш email в переменной
EMAIL
. - Убедитесь, что у вас установлен
ghostscript
:
sudo apt-get install ghostscript
- Убедитесь, что оба скрипта (
apply_script.sh
иprocess.sh
) имеют разрешение на исполнение:
chmod +x apply_script.sh
chmod +x process.sh
- Убедитесь, что в системе установлены и настроены утилиты
mutt
илиmail
для отправки писем:
sudo apt-get install mutt mailutils zip
- Запустите ваш скрипт:
./apply_script.sh
Описание изменений
- С использованием
ghostscript
происходит преобразование PDF в PDF/A с помощью командыgs
. В случае успешного преобразования создается выходной файл с добавлением суффикса_pdfa
к имени исходного файла. - Обрабатываются и отправляются только файлы с расширением
.pdf
.
Теперь ваш скрипт сможет обрабатывать PDF файлы, преобразовывать их в PDF/A, архивировать и отправлять на указанный email.