Aanpasbare diagnose-documenten en -reparatie

SaveLoadedDocumentDiagnostic produceert deterministische, uitgepakte uitvoer voor inspectie en gecontroleerde tekstbewerking, terwijl RepairDiagnosticDocument het bewerkte bestand terugzet naar een structureel geldige PDF

Round-trip-werkstroom

  1. Laad een document en roep SaveLoadedDocumentDiagnostic aan
  2. Bewerk objectwoordenlijsten of niet-gecomprimeerde stroombytes zonder te proberen /Length, xref-rijen of startxref handmatig te onderhouden
  3. Roep RepairDiagnosticDocument aan met begrensde opties
  4. Inspecteer THPDFDiagnosticRepairReport en gebruik het gerepareerde doel alleen wanneer de methode True retourneert

Reparatiecontract

Strikte afwijzing

De reparatie faalt veilig bij dubbele objectnummers, meerdere of ontbrekende Catalogi, gebroken trailerverwijzingen, niet-commentaire bytes tussen objecten, ongeldige objectgrammatica, object- of invoerlimieten, klassieke xref-offsets breder dan tien cijfers en strikte herlaadvalidatiefouten

Markeringen binnen gevalideerde objecten worden overgeslagen, dus objectachtige tekst in strings en gecodeerde stroompayloads wordt geen xref-vermelding

Begrensde prestaties

De scanner leest vensters van 1 MiB met een korte carry, kopieert objectbereiken rechtstreeks tussen bestandsstromen en behoudt alleen gevalideerde objectmetagegevens plus begrensde woordenlijstsondes

MaxInputBytes, MaxObjectCount en MaxObjectNumber begrenzen scannen, behouden metagegevens en uitgezonden xref-rijen vóór uitvoer wordt gepubliceerd

Pascal-voorbeeld

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;

Gerelateerde API