ฉันจะแก้ไข / ซ่อมแซมไฟล์ PDF ที่เสียหายได้อย่างไร


80

ใครบ้างมีคำแนะนำหรือขั้นตอนในการซ่อม PDF ที่เสียหาย? เมื่อฉันเปิดไฟล์ฉันได้รับ "เกิดข้อผิดพลาดในการเปิดเอกสารนี้ไฟล์เสียหายและไม่สามารถซ่อมแซมได้" ดูเหมือนว่าจะมีเครื่องมือมากมายอยู่ที่นั่น แต่ไม่มีใครสามารถอธิบายได้ว่ามีชื่อเสียง มี Linux based solutions ใด ๆ ที่เป็นไปได้หรือไม่


เครื่องมือ PDF ของโอเพนซอร์ซมีแนวโน้มที่จะเส็งเคร็งฉันกลัว คุณใช้อะไร
Satanicpuppy

ยังเห็น: superuser.com/questions/166999/...
slhck

ไม่ชอบรูปลักษณ์ของเครื่องมือใด ๆ เพราะพวกเขาดูเหมือนมากมายของ "Registry Cleaners" ออกมีที่ไร้ประโยชน์ ลองใช้ Adobe Pro และเริ่มดูว่า Ghostscript หรือ PDFForge มีสวิตช์ซ่อมแซมหรือไม่
Tim Alexander

Ghostscript ไม่เป็นไร แต่ก็ไม่ได้ดีไปกว่า Acrobat มันเป็นกระดูกที่เปลือยเปล่า
Satanicpuppy

6
@Satanicpuppy ฉันไม่เห็นด้วย :: ฉันใช้ ghostscript เพื่อสร้างไฟล์ PDF ที่เสียหายหรือคุณภาพต่ำบ่อยครั้งมากและทำงานได้ดีมาก
Eddie B

คำตอบ:


100

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 ทำงานที่ยอดเยี่ยมในการแสดงผลไฟล์ PDF ... ฉันใช้ gs เพื่อสร้างไฟล์ PDF ซ้ำเพื่อปรับปรุงคุณภาพแบบอักษร
Eddie B

1
/ prepress ทำให้คุณภาพที่ดีจริง ๆ เมื่อเทียบกับ / หน้าจอ ขอบคุณ
Dolanor

ฉันได้รับ "เกิดข้อผิดพลาดขณะอ่านตาราง XREF" นั่นหมายความว่าอย่างไร?
Geremia

หมายความว่าสารบัญภายใน(สิ่งที่ PDF ต้องมีในฐานะตารางXREF ) มีข้อผิดพลาดชี้ไปที่การชดเชยไบต์ที่ไม่ถูกต้องสำหรับวัตถุ PDF Ghostscript มีโอกาสมากที่จะซ่อมแซมข้อผิดพลาดนั้นและแทรกตาราง XREF ที่ถูกต้องลงในเอาต์พุต คุณสามารถตรวจสอบสิ่งนี้ได้ด้วยการรันเอาต์พุตผ่าน Ghostscript อีกครั้งและดูว่าข้อความนี้ยังคงปรากฏขึ้นหรือไม่
Kurt Pfeifle

37

ฉันมีไฟล์ PDF ที่เสียหายprint.pdfซึ่ง Ghostscript ไม่สามารถเปิดได้ แต่ผู้ดู Linux แบบกราฟิกแบบกราฟิกปกติ (Okular, Evince) เปิดได้ดี (ในกรณีของฉันไฟล์มีขยะเมื่อเริ่มต้นแทนที่จะเป็นส่วนหัว PDF เมื่อเปิดในโปรแกรมแก้ไขฐานสิบหก)

โปรแกรมดู PDF เหล่านี้ใช้ Poppler เป็นตัวเรนเดอร์ PDF back-end ดังนั้นคุณสามารถซ่อมแซม PDF โดยใช้เครื่องมือบรรทัดคำสั่งของ Poppler ใน Ubuntu เหล่านี้อยู่ในpoppler-utilsแพ็คเกจ ฉันใช้:

pdftocairo -pdf print.pdf print_repaired.pdf

ซึ่งสร้างไฟล์ PDF ที่มีส่วนหัวที่ถูกต้องซึ่งเครื่องมือเช่น Ghostscript ตอนนี้ได้รับการยอมรับ


3
+1 นี่อ่านควอตซ์ของฉันสร้าง PDF โดยไม่มีการร้องเรียนและเริ่มสร้างผลลัพธ์ทันที Ghostscript, Adobe Acrobat Pro และคนอื่น ๆ ยืนยันในการสร้าง 120GB pdf ของฉันใหม่ก่อน
Orwellophile

นี่ใช้งานไม่ได้กับ PDF แปลก ๆ อย่างน้อยหนึ่งอันที่ฉันเจอ แต่ดูเหมือนว่าเป็นการเริ่มต้นที่ดี
Brian Peterson

1
ทำงานอย่างสมบูรณ์แบบใน PDF ที่ Ghostscript ต้องการลบองค์ประกอบบางอย่างบนหน้าเว็บ
Andrea Lazzarotto

Ghostscript ไม่สามารถอ่านเอกสารได้ แต่ใช้งานได้ดี BTW ฉันทำสิ่งนี้บน Windows โดยใช้ระบบย่อย linux ใหม่มันเยี่ยมมาก!
HyLian

24

mutool( หน้าโครงการ , manpage ) จะซ่อมแซมไฟล์ 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 จะเก็บข้อผิดพลาดเหล่านั้นไว้
Dominik Honnef

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 ได้ดี เหตุผลก็เพิ่ม "NUL" ที่บรรทัดสุดท้ายเพิ่มในระหว่างการอัปโหลด
Tilo

ฉันมี PDF สอง%%EOFอัน ฉันลบทุกอย่างหลังจากครั้งแรกที่%%EOFใช้ตัวแก้ไข hex ตอนนี้ทุกอย่างทำงานได้ดี
Adrian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.