У кого-нибудь есть какие-либо рекомендации или процедуры для восстановления поврежденного PDF? Когда я открываю файл, я получаю сообщение «Произошла ошибка при открытии этого документа. Файл поврежден и не может быть восстановлен». Кажется, существует множество инструментов, но ни один из них я бы не назвал заслуживающим доверия. Есть ли какие-либо решения на основе Linux с открытым исходным кодом для этого, возможно?
4 ответа
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
У меня был поврежденный файл 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, принимаются.
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.
У меня был поврежденный pdf-файл, потому что php-файл, используемый для его загрузки, отражал некоторые ошибки (в HTML) и символы NUL в конце.
Решением было открыть PDF-файл с помощью Notepad++ и удалить весь текст после строки
%%EOF