Làm cách nào để sửa / sửa một tệp PDF bị hỏng?


80

Có ai có bất kỳ khuyến nghị hoặc thủ tục để sửa chữa một PDF bị hỏng? Khi tôi mở tệp, tôi nhận được "Có lỗi khi mở tài liệu này. Tệp bị hỏng và không thể sửa chữa được." Dường như có vô số công cụ ngoài kia nhưng không có công cụ nào tôi có thể mô tả là có uy tín. Có bất kỳ giải pháp dựa trên linux mã nguồn mở cho điều này có thể?


Các công cụ PDF nguồn mở có xu hướng khá nhảm nhí, tôi sợ. Bạn đang dùng gì?
Satanicpuppy


không thích giao diện của bất kỳ công cụ nào vì chúng trông giống như vô số "Công cụ dọn dẹp registry" ngoài kia vô dụng. Đã dùng thử Adobe Pro và mới bắt đầu tìm kiếm nếu Ghostscript hoặc PDFForge có bất kỳ công tắc sửa chữa nào.
Tim Alexander

Ghostscript không sao, nhưng chắc chắn nó không tốt hơn Acrobat. Nó hoàn toàn trơ xương.
Satanicpuppy

6
@Satanicpuppy Tôi không đồng ý :: Tôi sử dụng ghostscript để xây dựng lại các tệp pdf bị hỏng hoặc chất lượng thấp khá thường xuyên và nó hoạt động rất tốt.
Eddie B

Câu trả lời:


100

Ghostscript sẽ tự động sửa lỗi PDF bị hỏng của bạn ... nếu nó có thể mở nó ở nơi đầu tiên (nghĩa là, nếu nó không bị hỏng sau khi sửa chữa). Nhưng sau đó bạn vẫn cần kiểm tra lại kết quả ...

Trên Linux, hãy thử lệnh này:

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

Trên Windows, hãy thử cái này:

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

2
Ghostscript thực hiện công việc tuyệt vời trong việc hiển thị pdf ... Tôi thường xuyên sử dụng gs để xây dựng lại pdf để cải thiện chất lượng phông chữ.
Eddie B

1
/ Prepress làm cho chất lượng thực sự tốt so với / màn hình. Cảm ơn.
Dolanor

Tôi nhận được "Đã xảy ra lỗi khi đọc bảng XREF." Điều đó nghĩa là gì?
Lão máu

Điều đó có nghĩa là mục lục bên trong (những gì PDF phải chứa dưới dạng bảng XREF ) đã có lỗi, chỉ ra một sai lệch byte cho một đối tượng PDF. Ghostscript rất có thể đã sửa lỗi đó và chèn một bảng XREF chính xác vào đầu ra. Bạn có thể kiểm tra điều này bằng cách chạy đầu ra thông qua Ghostscript một lần nữa và xem thông báo này có còn xuất hiện không.
Kurt Pfeifle

37

Tôi đã có một tệp PDF bị hỏng print.pdf, Ghostscript không thể mở được, nhưng trình xem PDF đồ họa thông thường của Linux (Okular, Evince) đã mở tốt. (Trong trường hợp của tôi, tệp có rác khi bắt đầu thay vì tiêu đề PDF, khi được mở trong trình chỉnh sửa hex.)

Những người xem PDF này sử dụng Poppler làm trình kết xuất PDF phía sau. Vì vậy, bạn có thể sửa chữa PDF bằng các công cụ dòng lệnh của Poppler's. Trong Ubuntu, đây là trong poppler-utilsgói. Tôi đã sử dụng:

pdftocairo -pdf print.pdf print_repaired.pdf

đã tạo một tệp PDF với các tiêu đề chính xác, những công cụ như Ghostscript hiện đã được chấp nhận.


3
+1 này đọc PDF được tạo ra của tôi mà không có khiếu nại, và ngay lập tức bắt đầu tạo đầu ra. Ghostscript, Adobe Acrobat Pro và những người khác khăng khăng đòi xây dựng lại bản pdf 120GB của tôi trước tiên.
Orwellophile

Điều này đã không làm việc cho ít nhất một PDF kỳ lạ mà tôi đã gặp, nhưng có vẻ như đó là một khởi đầu tốt.
Brian Peterson

1
Hoạt động hoàn hảo trên một tệp PDF mà Ghostscript muốn xóa một số thành phần tùy ý trên các trang.
Andrea Lazzarotto

Ghostscript không đọc được tài liệu nhưng điều này hoạt động như một cơ duyên. BTW Tôi đã làm điều này trên Windows bằng cách sử dụng hệ thống con linux mới, thật tuyệt!
HyLian

24

mutool( trang dự án , trang chủ ) sẽ sửa chữa các tệp PDF bị hỏng mà không in chúng .

  • Cài đặt, ví dụ như trên Ubuntu: sudo apt-get install mupdf-tools
  • Chạy nó như thế này: 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.

Ngoài ra, có một vài công cụ và khung có thể phân tách / dịch ngược các tệp PDF thành các thành phần của chúng mà không hiển thị chúng. Chúng có thể hữu ích để trích xuất văn bản, tập lệnh và hình ảnh. Xem câu trả lời này để biết danh sách các công cụ như vậy: https://reverseengineering.stackexchange.com/q/1526/8210 . Ví dụ: bạn có thể thử Origami câu trả lời hàng đầu hiện tại , nó có trình xem dựa trên GTK.


3
Giải pháp này hoạt động "tốt hơn" so với các giải pháp được cung cấp ở trên hoặc được xếp hạng tốt hơn, vì nó không "in" tệp PDF và giữ cho các liên kết, các mục có thể nhấp, v.v ... Đối với tôi, nó nghe có vẻ là một giải pháp thanh lịch hơn so với sử dụng ghostscript hoặc cairo.
Speredenn

1
Thật không may, mutool cleankhông sửa tất cả các lỗi có thể. Tôi có một tệp có nhiều lỗi về phông chữ và luồng nội dung và mutool sẽ giữ các lỗi đó.
Dominik Honnef

1
@DominikHonnef Bạn luôn có thể thử các công cụ / khung phân tách tệp PDF và cho phép bạn xem tất cả các phần mà không hiển thị chúng. Điều đó sẽ cho phép bạn có được văn bản, kịch bản, hình ảnh, vv trực tiếp. Xem câu trả lời này cho một danh sách các công cụ: reverseengineering.stackexchange.com/q/1526/8210
jmiserez

Chỉ có điều làm việc cho tôi!
jamadagni

Điều này làm việc tốt hơn vì điều này không làm cho pdf nó kiểm tra tài liệu.
riccs_0x

10

Tôi đã có một tệp pdf bị hỏng, vì tệp php được sử dụng để tải xuống đã lặp lại một số lỗi (trong HTML) và các ký tự NUL ở cuối.

Giải pháp là mở pdf bằng Notepad ++ và xóa tất cả văn bản sau dòng

%%EOF

giống nhau, Adobe Reader không mở nhưng plugin Mac, Chrome và Firefox PDF gốc hiển thị tệp PDF tốt. Lý do cũng là thêm "NUL" ở dòng cuối cùng được thêm vào trong quá trình tải lên.
Tilo

Tôi đã có một bản PDF với hai %%EOF. Tôi đã xóa mọi thứ sau lần đầu tiên %%EOFbằng trình soạn thảo hex. Bây giờ mọi thứ hoạt động tốt.
Adrian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.