Перейти к содержимому
PulsarKit

Почему «починенный» PDF все равно не проходит архивную проверку

Исправить PDF, который не открывается, и сделать его пригодным для долговременного хранения — два разных стандарта. Успех по одному ничего не говорит о другом.

Автор: PulsarKit · ·

Большинство повреждений — структурные, и их можно исправить

Подавляющее большинство повреждений PDF, когда файл отказывается открываться или открывается с заметными ошибками, сводится к поломанной таблице перекрестных ссылок или поврежденному трейлеру. Чаще всего это результат прерванной загрузки или сбоя диска в момент сохранения файла. Такой вид повреждений полностью исправим: если восстановить внутреннюю структуру файла (в этом случае «Восстановить PDF» больше ничего делать и не нужно), он возвращается к своему исходному состоянию, без каких-либо потерь. Содержимое страниц при этом не пострадало. Повреждена только «карта», которая описывает, где внутри файла его искать.

Повреждение содержимого страницы — другая проблема

Поврежденный поток содержимого на конкретной странице — другой класс проблем по сравнению с поломанным индексом. В этом случае в файле отсутствуют векторный текст и команды отрисовки для этой страницы, а не только сведения о том, где они лежат. Никакой ремонт структуры не восстановит данные, которых в файле физически больше нет. Разумный подход здесь такой: отрисовать все, что еще можно извлечь с этой страницы, в изображение и прогнать по нему «OCR PDF», чтобы вернуть читаемый текст. На всех остальных, не затронутых страницах документа исходное векторное содержимое остается нетронутым.

Исправляемость и соответствие PDF/A — разные критерии

PDF, который теперь без ошибок открывается во всех просмотрщиках, с чистым текстом и без заметных артефактов, все равно может полностью провалить проверку на соответствие архивному стандарту PDF/A — для этой отдельной задачи и существует «PDF в PDF/A». Одно другому не противоречит. Это другой, намного более строгий набор требований, и проверяет он совсем иное: каждый шрифт встроен в файл, а не указан по имени; цвета привязаны к заданному профилю; нигде нет зависимости от внешних ресурсов или программ, которые у читателя могут быть недоступны через десятилетия. Исправление сломанной структуры и не должно было гарантировать выполнение этих условий. Восстановление и архивное соответствие отвечают на два разных вопроса про один и тот же файл.

Почему настоящий провал валидатора полезнее, чем ложный успех

Построить структуру PDF/A без опоры на Ghostscript (он здесь осознанно не используется из-за его лицензии) значит собирать нужные элементы напрямую, а не идти по стандартному пути конвертации, на который опирается большинство инструментов. Поэтому результат здесь — добросовестная попытка, а не гарантия. Каждая конвертация прогоняется через veraPDF, эталонный валидатор, на который опираются архивы и суды, и на странице показывается его вердикт, а не успокаивающая галочка. О провале сообщают потому, что он настоящий, а не потому, что так проще. Это куда полезнее, чем инструмент, который заявляет об успехе, которого нет.

Конкретное описание ошибки полезнее, чем «прошел / не прошел»

Проверка, которая перечисляет нарушенные правила (шрифт не встроен, цветовое пространство не объявлено), дает результат, с которым можно работать. Обычный индикатор «прошел / не прошел» ничего подобного не дает. Файл можно скачать независимо от результата проверки и посмотреть, что именно не прошло и по какому правилу. Тогда документ, который на девяносто пять процентов уже соответствует требованиям, не окажется в одной корзине с файлом, где почти ничего еще не сделано. Набор нарушенных правил прямо показывает, что именно нужно исправить, вместо того чтобы начинать работу с документом заново и целиком.

Как выбрать стратегию восстановления и уровень PDF/A

Каждый инструмент перед стартом задает один вопрос, и неверный ответ стоит лишнего прогона. У «Восстановить PDF» три стратегии. «Авто», вариант по умолчанию, восстанавливает структуру и прибегает к изображению с OCR только на страницах, где поврежден поток содержимого. «Только структура» так не делает никогда: поврежденная страница возвращается пустой, и это лучший выбор, когда на каждой уцелевшей странице должен остаться настоящий выделяемый текст. «Растеризовать и OCR» перерисовывает все страницы, включая читаемые, как изображения с распознанным текстом и подходит файлу, в котором вместо слов видна абракадабра. Экран результата называет страницы, восстановленные как изображения, так что прочитайте его, прежде чем передавать файл дальше.

«PDF в PDF/A» спрашивает уровень. 2b подходит почти всему, что создано после 2010 года, и сохраняет прозрачность; 1b сводит любую страницу с прозрачностью или слоями в плоское изображение, что современному файлу редко нужно; 3b лишь добавляет право вложить другой файл, например исходную таблицу к счету. Две вещи важнее уровня: стандарт запрещает шифрование, поэтому защищенный файл сначала нужно пропустить через «Снять пароль», а скан без включенной опции OCR останется без поиска. Результат обычно на 10–40% больше: невстроенные шрифты заменяются метрически совместимыми Liberation или Noto, а цвета привязываются к sRGB.

Инструменты из этой статьи

Читать дальше