Продолжаем мини-цикл посвященный формату файлов PDF.
В этой заметке я расскажу как можно конвертировать файлы PDF в архивный формат PDF/A используя Ghostscripn с дополнительной оберткой PDF2ARCHIVE.
Это третий материал в данном цикле.
До этого были материалы:
Почему я выбрал такое решение, а не генерацию напрямую в Ghostscript.
На это было несколько причин:
- Нестабильные результаты в Ghostscript
- Рандомные ошибки на принимающей стороне (ФЗ-278)
- Универсальность решения
- Количество обращений на stackoverflow.com о PDF/A (1, 2)
PDF2ARCHIVE — является обычным Bash скриптом в 368 строк, который в режиме работы создает нужные для корректной конвертации файлы (ps, icc).
Кроме того имеется возможность сжатия PDF.
Проверка с использованием veraPDF (для этого на вашем сервере должна быть установлена Java).
Установка PDF2ARCHIVE
Собственно заключается в скачивании архива с github — страница PDF2ARCHIVE и его распаковке и назначения атрибутов исполнения скрипта pdf2archive.
Если Git не установлен — ставим:
# pkg install git
Клонируем репозиторий:
# git clone https://github.com/matteosecli/pdf2archive.git
Создадим ссылку на pdf2archive:
# ln -s /home/vladimir/pdf2archive/pdf2archive /usr/local/bin/pdf2archive
Использование PDF2ARCHIVE:
pdf2archive [опции] input.pdf output.pdf
Можно не указывать выходной файл, при этом файл PDF/A создастся в директории входного файла как input-PDFA.pdf
Дополнительные опции (аргументы):
-h, --help - показать справку --quality=<значение> - Установка качества (сжатия), доступны два параметра: high и low high - лучшее качество соответствует установке в Ghostscript как /press low - низкое качество соответствует установке в Ghostscript как /ebook --title=<значение> - Установить заголовок в метаданных PDF --author=<значение> - Указать автора в метаданных PDF --subject=<значение> - Заполнить одноименное поле в метаданных --cleanmetadata - Удалить все метаданные --validate - Проверка созданного файла с помощью программы veraPDF, для этого должна быть установлена Java --debug - Дебаг) --v - Вывести версию PDF2ARCHIVE
Самый простой пример использования:
pdf2archive input.pdf output.pdf
Пользуюсь этим решением больше года, при чем в автоматическом режиме, полученные с помощью него файлы всегда проходят проверку.
У автора есть страница с результатами тестирования:
GS Version | PASS | FAIL | ERROR |
---|---|---|---|
9.14 | 716 (93.72%) | 48 (6.28%) | 0 (0%) |
9.15 | 716 (93.72%) | 48 (6.28%) | 0 (0%) |
9.16 | 715 (93.59%) | 49 (6.41%) | 0 (0%) |
9.18 | 715 (93.59%) | 49 (6.41%) | 0 (0%) |
9.19 | 715 (93.59%) | 49 (6.41%) | 0 (0%) |
9.20 | 715 (93.59%) | 49 (6.41%) | 0 (0%) |
9.21 | 715 (93.59%) | 49 (6.41%) | 0 (0%) |
9.22 | 715 (93.59%) | 49 (6.41%) | 0 (0%) |
История создания данного скрипта:
На этом все:)