Продолжаем мини-цикл посвященный формату файлов 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%) |
История создания данного скрипта:
[su_spoiler title=»История и мотивация (Google Translate)» style=»fancy» icon=»plus-circle»]
Этот скрипт был рожден как необходимость, когда мне пришлось конвертировать PDF-файл моей дипломной работы, подготовленный LaTeX, в PDF/A-1B.
Давным-давно поставку дипломной работы нужно было выполнять вручную, записав компакт-диск с PDF дипломной работы. Мне не нужно говорить, что это было очень старомодно и неэффективно, так как вы должны были лично доставить компакт-диск в секретариат. Наконец, в 2015 году мой университет решил активировать онлайн-подачу PDF: вам просто нужно было загрузить свой PDF, и все готово, совершенно без проблем.
Затем, год назад, какой-то просвещенный ум, который знает, что такое административный офис, решил, что обычный PDF не достаточно прост.
Другими словами университет начал требовать гораздо более сатанинской PDF/A-1B.
Конечно, они должны были предоставить набор инструкций для нас, простых смертных, чтобы мы могли создавать действительные файлы PDF/A-1B.
И действительно они это сделали, загрузив фантастический документ.
Если вы взяли (щелчок) наживку и читать PDF (не PDF/A-1b, а!) Инструкции на предыдущей связанной странице, вы, возможно, заметили абсолютную полноту информации, содержащейся в нем: есть инструкции по преобразованию PDF в PDF/A-1B с помощью бесплатной программы только для Windows (да, я знаю) или устаревшего плагина OpenOffice, который больше не работает или платный, коммерческие программы, которые работают максимум только на Windows и MacOS. Нет свободной, кроссплатформенной альтернативы, потому что эй, все любят Windows!
Естественно, вы можете напрямую создать PDF/A-1B версию своей диссертации. В этом документе перечислены некоторые простые инструкции для прямого экспорта в PDF / A-1B из Microsoft Word (или из Excel, потому что есть люди, которые, конечно, пишут свои диссертации в Excel) или из OpenOffice. Потому что все на Земле, особенно люди, которые занимаются физикой или математикой, пишут свои диссертации в Microsoft Word … они выглядят ооочень красиво , особенно когда вам нужно поместить сноски, цитаты, оглавление, когда Word распространяет текст на странице в стиле зебры, и когда вы пишете те удивительные уравнения в Comic Sans, которые отображаются в формате JPEG с разрешением 10 DPI. «А люди, которые используют LaTeX»? «Латекс? Какой латекс? Я не занимаюсь грязным сексом»! — сказал бы парень, который написал этот документ.
Таким образом, вы могли бы представить меня и моих друзей в последний доступный день для доставки тезисов, все еще изо всех сил пытаясь выяснить, как конвертировать. Есть хороший сайт, который конвертирует PDF в PDF/A-1B файлы, но есть некоторые моменты:
- Ваш диплом заполняется метаданными с этого сайта
- Ограничение размера файла составляет 10 Мб
- Решение зависит от чужих ресурсов
- Работает только онлайн
- Отправка своих данных на неизвестный сайт
- Нет гарантии целостности файла
Покопавшись в Google, вы можете найти людей, которые говорят, что вы можете выполнить преобразование через Ghostscript, просто включив пару переключателей; к сожалению, это не работает (онлайн-система Esse3 продолжает утверждать, что файл недействителен).
Поэтому этот вопрос немного сложнее и плохо документирован.
Ошибка при создании действительного PDF / A-1B связана со сложным набором необходимых требований, особенно встраивание шрифта, метаданных и цветового пространства. Этот скрипт представляет собой просто набор всего, что необходимо для получения (в большинстве случаев) действительного документа PDF / A-1B из обычного файла PDF.
Прежде всего в надежде, что он упростит весь процесс. Он также содержит бесплатный валидатор с открытым исходным кодом это может проверить полученный файл (этот валидатор не был включен в официальные инструкции, на которые я ссылался ранее, которые вместо этого указывают на платные коммерческие продукты).
В некоторых случаях этот сценарий создает действительные файлы PDF/A-1B, которые отклоняются системой, поскольку они «слишком сложны», а валидатор, используемый Esse3 (нашей онлайновой системой в стиле 80-х, запрограммированной Topo Gigio ), отключается по таймауту. К сожалению, мы не можем найти решение, так как это проблема сервера. Подозревается, что они используют коммерческую версию онлайнового валидатора (который, кажется, единственный бесплатный, все еще работающий), который имеет ту же проблему тайм-аута при проверке «слишком сложных» PDF-файлов. Этот небольшой скрипт вместо этого показывает, что
- вам просто нужно пару строк для реализации сценария преобразования
- университет может просто потребовать обычный файл PDF и выполнить преобразование с помощью двух команд Ghostscript, без проблем для студентов
- этот процесс будет бесплатным , так как Ghostscript является открытым исходным кодом
- включение валидатора тривиально, и включенный здесь бесплатный валидатор с открытым исходным кодом (в отличие от используемого ими валидатора, который, вероятно, является коммерческим решением), может легко обрабатывать «слишком сложные» PDF-файлы без тайм-аута
[/su_spoiler]
На этом все:)