Як я можу виправити / виправити пошкоджений файл PDF?


78

Хтось має якісь рекомендації чи процедури відновлення зіпсованого PDF? Коли я відкриваю файл, я отримую повідомлення "Виникла помилка при відкритті цього документа. Файл пошкоджений і його неможливо відновити." Здається, там є безліч інструментів, але жоден, який я міг би охарактеризувати як поважний. Можливо, для цього є які-небудь рішення на основі Linux з відкритим кодом?


Боюсь, інструменти PDF з відкритими джерелами, як правило, досить хитрі. Що ви використовуєте?
Satanicpuppy

Також дивіться: superuser.com/questions/166999/…
slhck

Мені не сподобався зовнішній вигляд будь-якого з інструментів, оскільки вони виглядали як безліч "Очисників реєстру" там, які марні. Випробували Adobe Pro і щойно почали шукати, чи є у Ghostscript або PDFForge перемикачі на ремонт.
Тім Олександр

Ghostscript все в порядку, але це, звичайно, не краще, ніж Acrobat. Це зовсім голі кістки.
Satanicpuppy

6
@Satanicpuppy Я не згоден :: Я використовую ghostscript для відновлення пошкоджених або неякісних файлів pdfs, і це дуже добре.
Едді Б

Відповіді:


98

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

2
Ghostscript робить фантастичну роботу з надання pdfs ... Я регулярно використовую gs для відновлення pdfs для поліпшення якості шрифту.
Едді Б

1
/ Додрукарська робота робить якість справді хорошою порівняно з / екраном. Дякую.
Доланор

Я отримую "Під час читання таблиці XREF сталася помилка." Що це означає?
Геремія

Це означає, що у внутрішній змісті (що файли PDF повинні містити як таблиця XREF ) сталася помилка, яка вказує на неправильне зміщення байтів для об'єкта PDF. Ghostscript дуже ймовірно виправив цю помилку і вставив правильну таблицю XREF у висновок. Ви можете перевірити це, запустивши вихід через Ghostscript ще один раз і побачити, чи з’являється це повідомлення ще.
Курт Пфайфл

37

У мене був пошкоджений 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, прийнято.


3
+1 це прочитав мій кварцовий сформований PDF без нарікань і негайно почав генерувати вихід. Ghostscript, Adobe Acrobat Pro та інші наполягали на тому, щоб спочатку відновити мій pdf у розмірі 120 Гб.
Орвелофіл

Це не спрацювало принаймні для одного дивного PDF, який я натрапив, але це здається гарним початком.
Брайан Петерсон

1
Відмінно працює над PDF-файлом, за допомогою якого Ghostscript хотів видалити деякі довільні елементи на сторінках.
Андреа Лацаротто

Ghostscript не зміг прочитати документ, але це спрацювало як принадність. BTW Я зробив це в Windows за допомогою нової підсистеми Linux, так здорово!
HyLian

23

mutool( Сторінка проекту , сторінка керівництва ) буде ремонтувати зламані 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.


3
Це рішення працює "краще", ніж рішення, пропоновані вище або краще класифікується, оскільки не "друкує" PDF-файл і не підтримує активні посилання, елементи, які можна натиснути тощо. Для мене це виглядає більш елегантним рішенням, ніж використання ghostscript або Каїр.
Speredenn

1
На жаль, mutool cleanне виправлені всі можливі помилки. У мене є файл з різними помилками в потоках шрифту та вмісту, і mutool буде зберігати ці помилки.
Домінік Гоннеф

1
@DominikHonnef Ви завжди можете спробувати інструменти / рамки, які розкладають PDF і дозволяють переглядати всі частини, не надаючи їх. Це дозволяє вам безпосередньо отримувати текст, сценарії, зображення тощо. Дивіться цю відповідь для переліку інструментів: reverseengineering.stackexchange.com/q/1526/8210
jmiserez

Єдине, що працювало на мене!
jamadagni

Це спрацювало краще, оскільки це не надає pdf, який він вивчає.
riccs_0x

10

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

Рішенням було відкрити pdf за допомогою Notepad ++ та видалити весь текст після рядка

%%EOF

Так само Adobe Reader не відкривався, але рідний Mac, Chrome та Firefox PDF-плагін відображав файли PDF-файлу прекрасно. Причина також була додатково "NUL" в останньому рядку, доданому під час завантаження.
Тіло

У мене був PDF з двома %%EOF. Я видалив усе після першого %%EOFвикористання шестигранного редактора. Зараз все працює добре.
Адріан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.