73

У кого-нибудь есть какие-либо рекомендации или процедуры для восстановления поврежденного PDF? Когда я открываю файл, я получаю сообщение «Произошла ошибка при открытии этого документа. Файл поврежден и не может быть восстановлен». Кажется, существует множество инструментов, но ни один из них я бы не назвал заслуживающим доверия. Есть ли какие-либо решения на основе Linux с открытым исходным кодом для этого, возможно?

4 ответа4

92

Ghostscript восстановит ваш поврежденный PDF-файл автоматически ... если он может открыть его в первую очередь (то есть, если он не поврежден и не подлежит восстановлению). Но после этого вам все равно придется перепроверить результат ...

В Linux попробуйте эту команду:

 gs \
  -o repaired.pdf \
  -sDEVICE=pdfwrite \
  -dPDFSETTINGS=/prepress \
   corrupted.pdf

В Windows попробуйте это:

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf
32

У меня был поврежденный файл PDF, print.pdf , который Ghostscript не мог открыть, но обычные графические программы просмотра PDF в Linux (Okular, Evince) открылись нормально. (В моем случае файл имел мусор в начале вместо заголовка PDF, когда открывался в шестнадцатеричном редакторе.)

Эти средства просмотра PDF используют Poppler в качестве внутреннего рендера PDF. Таким образом, вы можете восстановить PDF, используя инструменты командной строки Poppler. В Ubuntu они находятся в poppler-utils . Я использовал:

pdftocairo -pdf print.pdf print_repaired.pdf

который сгенерировал файл PDF с правильными заголовками, и теперь такие инструменты, как Ghostscript, принимаются.

19

mutool (страница проекта, man-страница) будет восстанавливать испорченные PDF-файлы без их распечатки.

  • Установка, например, в Ubuntu: sudo apt-get install mupdf-tools
  • Запустите его так: mutool clean input.pdf output.pdf
mutool clean [options] input.pdf [output.pdf] [pages]

  The clean command pretty prints and rewrites the syntax of a PDF file.
   It can be used to repair broken files, expand compressed streams,
   filter out a range of pages, etc.
  If no output file is specified, it will write the cleaned PDF to
   "out.pdf" in the current directory.

В качестве альтернативы, есть несколько инструментов и структур, которые могут разбивать / декомпилировать PDF-файлы в их компоненты без их рендеринга. Они могут быть полезны для извлечения текста, сценариев и изображений. Посмотрите этот ответ для списка таких инструментов: https://reverseengineering.stackexchange.com/q/1526/8210. Например, вы можете попробовать текущий топ-ответ Origami, у него есть просмотрщик на основе GTK.

9

У меня был поврежденный pdf-файл, потому что php-файл, используемый для его загрузки, отражал некоторые ошибки (в HTML) и символы NUL в конце.

Решением было открыть PDF-файл с помощью Notepad++ и удалить весь текст после строки

%%EOF

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .