Перейти к содержимому
pdftools.kz
Организация

PDF повреждён — как восстановить

Повреждённый PDF почти всегда цел по содержанию и сломан по адресам: таблица перекрёстных ссылок указывает на смещения, которых больше нет. Восстановление игнорирует эту таблицу, проходит файл насквозь, находит объекты по их собственным заголовкам и записывает свежий документ с новой, согласованной таблицей. Дополнительных ключей для этого не требуется: обычный проход через qpdf и есть починка, а отключается она отдельным флагом.

Сервер · удаление сразудо 50 МБбез регистрации

Коротко о цифрах

Что перестраивается
таблица ссылок, трейлер, длина потоков, дерево страниц
Код возврата 3
предупреждения были, файл записан целиком — это успех, а не отказ
Код возврата 2
разбирать нечего: годных объектов не нашлось
Худшая находка
поток не восстановлен — страница выйдет пустой
Пределы прохода
файл до 50 МБ, не дольше 60 секунд

Что именно ломается

Самая частая поломка — смещение в конце файла. В хвосте PDF записано, где начинается таблица ссылок, и если файл дописывали, обрезали или пересохраняли посреди записи, это число указывает в пустоту. Документ при этом полностью цел, но программа не знает, откуда начинать чтение, и сообщает об ошибке через доли секунды после открытия.

Вторая по частоте — неверная длина потока. У каждого потока объявлен размер в байтах, и если он разошёлся с фактическим, читатель уезжает мимо конца данных. Третья — обрыв файла: передача прервалась, и последние объекты просто отсутствуют. Первые две чинятся полностью, третья — настолько, насколько успело дойти.

Что показывает результат

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

Порядок действий

  1. Загрузите файл — он проверяется на подпись %PDF в первом килобайте, а не строго в нулевом байте: у документа со сбитым заголовком она смещена, и отказывать ему было бы неправильно.
  2. Дождитесь окончания прохода: на предельные 50 МБ отводится не больше минуты.
  3. Прочитайте список находок до того, как открывать результат: он объясняет, что именно было не так.
  4. Откройте восстановленный файл и пролистайте его целиком, особенно если среди находок есть потеря данных потока.
  5. Сравните число страниц с оригиналом — расхождение означает, что часть дерева страниц собрать не удалось.

Чего восстановление не делает

  • Не дописывает недостающие байты: если передача оборвалась на середине, второй половины документа не существует.
  • Не снимает шифрование — зашифрованный файл возвращается с отдельной пометкой, ему нужен пароль, а не починка.
  • Не возвращает текст странице, чей поток не собрался: пустая страница останется пустой.
  • Не улучшает качество и не меняет вид документа — задача ровно одна: сделать файл читаемым.

Частые вопросы

Почему инструмент пишет об успехе, но перечисляет предупреждения?

Потому что предупреждение здесь — это и есть результат работы. Код возврата 3 у qpdf означает «нашлись проблемы, файл записан полностью», и трактовать его как отказ значит не отдать пользователю уже восстановленный документ.

Файл открылся, но одна страница пустая. Это можно исправить?

Нет. Пустая страница означает, что поток её содержимого не удалось собрать даже сплошным просмотром файла. Данные этой страницы физически отсутствуют, и вернуть их может только исходник, из которого документ выгружали.

Насколько результат отличается от оригинала?

Содержимое переносится как есть, меняется только служебная часть: адреса объектов, таблица ссылок и порядок записи. Размер файла может немного измениться в любую сторону, а внешний вид страниц остаётся прежним.

Что делать, если восстановление отказало?

Проверьте, не зашифрован ли файл, и сравните его размер с исходным. Если размер совпадает, а отказ остаётся, попросите отправителя выгрузить документ заново — в загруженных байтах не осталось распознаваемой структуры.

Рядом

Частые задачи с этим инструментом