Two kinds of damaged, and only one is fixable
The first kind still parses. The file loads in a reader, pages appear, and something underneath is slightly wrong: an object nothing points at, a cross reference table with a stale offset, a stream whose declared length doesn’t match what follows it. Readers tolerate these for years, and then one stricter program refuses.
The second kind is structurally dead. The file was truncated partway through a transfer, or the marker at the end that says where the table of contents lives is missing, or the object bytes themselves were damaged. A parser can’t get far enough to begin.
What the rebuild actually rewrites
The tool parses the file from the beginning and writes it out again. The cross reference table is rebuilt, objects nothing refers to are dropped, and streams are recompressed. The content itself isn’t reinterpreted. Text stays text, and nothing is rasterised or re-flowed.
The side effect is usually a smaller file, because the debris of however many editing sessions went into it’s gone. On a 20 page document we measured 17.5 KB before and 12.8 KB after.
The four damages we tested against
Rather than describe the boundary in the abstract, we built four broken files and ran each one through this exact build.
- A file truncated partway, so the final object never finished.
- A file whose end marker points at an offset that no longer holds the cross reference table.
- A file with damaged bytes inside an object.
- A file whose stream declares a length that doesn’t match what follows.
What a run tells you, in three states
The tool works in three steps and reports each one: a check of the file as it arrived, the rebuild itself, and a check of what came out. Every step ends in one of three states. No problems found, warnings only, or errors.
Warnings are worth more than a shrug. A file that rebuilds with warnings is a file that was repaired, but the warning names a structure the engine had to work around. If the same file keeps producing warnings, go back to the source and export it again.
What a repaired file is, and is not
- File structure
- Rewritten. Table rebuilt, unreferenced objects gone, streams recompressed.
- Page content
- Copied through, not re-encoded. Text remains selectable and searchable.
- Fonts and layout
- Untouched. Nothing is re-rendered, so nothing shifts.
- File size
- Usually smaller, sometimes identical. Growth is possible and isn’t an error.
- Metadata
- Kept as it was. Cleaning it’s a separate job.
When it says the file cannot be rebuilt
Then the damage is in the second category, and the honest answer is that no local engine recovers it. Not this one, not a paid one. Truncated files and files that have lost the pointer to their own structure are beyond repair by parsing, and parsing is what every repair tool does.
The way out is to stop repairing and regenerate instead. Ask whoever sent it to send it again, because an incomplete transfer is the single most common cause. If you hold the original document, export it once more. A file exported again from a working source isn’t a repaired file; it’s a correct one.
