Uredljivi dijagnostički dokumenti i popravak
SaveLoadedDocumentDiagnostic proizvodi deterministički, neraspakirani izlaz za pregled i kontrolirano uređivanje teksta, dok RepairDiagnosticDocument vraća uređenu datoteku natrag u strukturno valjani PDF
Radni tijek okruglog puta
- Učitajte dokument i pozovite
SaveLoadedDocumentDiagnostic - Uredite rječnike objekata ili nekomprimirane bajtove tokova bez pokušaja ručnog održavanja
/Length, redaka xrefa ilistartxref - Pozovite
RepairDiagnosticDocuments ograničenim opcijama - Pregledajte
THPDFDiagnosticRepairReporti koristite popravljeni cilj samo kada metoda vratiTrue
Ugovor o popravku
- Izvor mora započeti PDF zaglavljem i nositi oznaku
%QDF-1.0koju emitira HotPDF - Potvrđeni neizravni objekti kopiraju se u fizičkom redoslijedu bez ponovnog kodiranja nizova, rječnika ili korisnih sadržaja tokova
- Izravne, neizravne, nedostajuće i zastarjele vrijednosti
/Lengthtoka zamjenjuju se izmjerenom duljinom korisnog sadržaja - Klasična xref tablica, kanonsko zaglavlje i točan pomak
startxrefponovno se grade iz izmjerenih izlaznih pozicija - Zaglavlje čuva valjane vrijednosti
/Info,/IDi/Encrypti veže/Rootna jedinstveni potvrđeni Catalog - Cilj se upisuje kroz sestrinsku privremenu datoteku i zamjenjuje traženi put tek nakon što sve provjere uspiju
Strogo odbijanje
Popravak ne uspijeva zatvoreno za duplikate brojeva objekata, više ili nedostajućih Catalog objekata, prekinute reference zaglavlja, nekomenarne bajtove između objekata, nevaljanu gramatiku objekata, ograničenja objekata ili ulaza, klasične pomake xrefa šire od deset znamenki i stroge kvarove provjere ponovnog učitavanja
Oznake unutar potvrđenih objekata preskaču se, tako tekst sličan objektu u nizovima i kodirani korisni sadržaji tokova ne postaju unos xrefa
Ograničene performanse
Skeniranje čita prozore od 1 MiB s kratkim prenošenjem, kopira opsege objekata izravno između tokova datoteka i zadržava samo potvrđene metapodatke objekata plus ograničene sonde rječnika
MaxInputBytes, MaxObjectCount i MaxObjectNumber ograničavaju skeniranje, zadržane metapodatke i emitirane retke xrefa prije objave izlaza
Pascal primjer
var
Options: THPDFDiagnosticRepairOptions;
Report: THPDFDiagnosticRepairReport;
begin
Options := THPDFDiagnosticRepairOptions.Default;
Options.MaxInputBytes := Int64(16) * 1024 * 1024 * 1024;
if not THotPDF.RepairDiagnosticDocument(
'edited-diagnostic.pdf',
'repaired.pdf',
Options,
Report
) then
raise Exception.Create(string(Report.Diagnostic));
end;