Izmenljivi dijagnostički dokumenti i popravka

SaveLoadedDocumentDiagnostic proizvodi deterministički, raspakovan izlaz za pregled i kontrolisano uređivanje teksta, dok RepairDiagnosticDocument vraća izmenjeni fajl nazad u strukturno važeći PDF

Tok rada povratnog puta

  1. Učitajte dokument i pozovite SaveLoadedDocumentDiagnostic
  2. Izmenite rečnike objekata ili nekompresovane bajtove tokova bez pokušaja ručnog održavanja /Length, xref redova ili startxref
  3. Pozovite RepairDiagnosticDocument sa ograničenim opcijama
  4. Pregledajte THPDFDiagnosticRepairReport i koristite popravljeno odredište samo kada metod vraća True

Ugovor o popravci

Strogo odbijanje

Popravka ne uspeva zatvoreno za duplikatne brojeve objekata, višestruke ili nedostajuće Catalog objekte, pokvarene trailer reference, nekomentarne bajtove između objekata, nevažeću gramatiku objekata, ograničenja objekta ili ulaza, klasične xref pomake šire od deset cifara i stroge neuspehe validacije ponovnog učitavanja

Markeri unutar validiranih objekata se preskaču, tako da tekst nalik objektu u stringovima i kodirani sadržaji tokova ne postaju xref unos

Ograničene performanse

Skener čita prozore od 1 MiB sa kratkim prenosom, kopira opsege objekata direktno između datotečnih tokova i zadržava samo validirane metapodatke objekata plus ograničene sonde rečnika

MaxInputBytes, MaxObjectCount i MaxObjectNumber ograničavaju skeniranje, zadržane metapodatke i emitovane xref redove pre objavljivanja izlaza

Pascal primer

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