Fix a PDF that other apps refuse to open or open with errors, for example after an interrupted download, by rewriting it with
sumatrapdf-tool clean.Available in pre-release 3.7
Run
sumatrapdf-tool clean damaged.pdf repaired.pdf. At a glance:- Repair:
cleanrebuilds a broken cross-reference table (the index of objects in the file) and writes a new, well-formed PDF. - Check: run
pages,infoordraw -F txton the result. - Save what’s left: keep only the pages that survived with a page list.
Use
sumatrapdf-tool.exe, or SumatraPDF.exe clean with the same arguments.Repair a PDF #
sumatrapdf-tool clean damaged.pdf repaired.pdf
For a damaged file it prints messages like these:
format error: cannot find startxref
warning: trying to repair broken xref
warning: repairing PDF document
They mean the file’s index was missing or wrong, so it was rebuilt by scanning the whole file. The command still succeeds (exit code
0) and writes repaired.pdf. For an undamaged file clean prints nothing.- Without an output file name, the result is written to
out.pdf. - For a password-protected PDF, add
-p <password>.
Note: SumatraPDF uses the same repair code when it opens a PDF, so a damaged file may open in SumatraPDF but not in other apps. The repaired file opens in other apps too.
Check the result #
List the pages and their sizes:
sumatrapdf-tool pages repaired.pdf
Print the text of every page:
sumatrapdf-tool draw -F txt repaired.pdf
If these commands print no
error or warning lines, the repair worked. draw prints a page repaired.pdf 1 line for each page; those are progress messages, not errors.Save the pages that survived #
If part of the file is gone,
clean still writes a file, but pages whose data was lost come out blank, and tools warn when they read it:format error: non-page object in page tree
warning: Page tree load failed. Falling back to slow lookup
pages shows a lost page with no size:<page pagenum="3">
</page>
Keep only the good pages:
sumatrapdf-tool clean damaged.pdf good.pdf 1-2
good.pdf has pages 1 and 2 and opens without warnings. The page list works as in Extract pages from PDF: 1-5,7,9-N, where N is the last page.Garbage collection (-g) #
-g, -gg, -ggg and -gggg remove unused objects and make the file smaller (see sumatrapdf-tool clean).Repair without
-g first. In a test with a lost page, plain clean made a blank page 3, but clean -g made a file that failed on page 3 with format error: cycle in page tree. Once you have a good file, compress it:sumatrapdf-tool clean -gggg -e 100 -f -i -t -Z good.pdf good-small.pdf
What can’t be fixed #
cleancan’t recover data that isn’t in the file. Text, images and pages that were cut off are lost; get the file again if you can.- Some damage stops the repair.
cleanthen prints an error such assyntax error: invalid key in dict, exits with code1and writes no file.
Tips #
- Keep the damaged original. Write the repaired file under a new name.
- If a download was interrupted, download it again before you try to repair it.
- Use
sumatrapdf-tool info repaired.pdfto see the page count, fonts and images of the result (see See PDF info). - To repair a whole folder, see Process many PDFs at once.
See also #
- sumatrapdf-tool clean — all options
- Compress a PDF
- sumatrapdf-tool pages and sumatrapdf-tool info — check the result
- All cmd-line tools