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

  1. Učitajte dokument i pozovite SaveLoadedDocumentDiagnostic
  2. Uredite rječnike objekata ili nekomprimirane bajtove tokova bez pokušaja ručnog održavanja /Length, redaka xrefa ili startxref
  3. Pozovite RepairDiagnosticDocument s ograničenim opcijama
  4. Pregledajte THPDFDiagnosticRepairReport i koristite popravljeni cilj samo kada metoda vrati True

Ugovor o popravku

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;

Povezani API