Redigerbara diagnostikdokument och reparation

SaveLoadedDocumentDiagnostic producerar deterministisk, uppackad utdata för inspektion och kontrollerad textredigering, medan RepairDiagnosticDocument förvandlar den redigerade filen tillbaka till ett strukturellt giltigt PDF

Rundturarbetsflöde

  1. Ladda in ett dokument och anropa SaveLoadedDocumentDiagnostic
  2. Redigera objektordlistor eller okomprimerade strömbytes utan att försöka underhålla /Length, xref-rader eller startxref manuellt
  3. Anropa RepairDiagnosticDocument med begränsade alternativ
  4. Inspektera THPDFDiagnosticRepairReport och använd det reparerade målet endast när metoden returnerar True

Reparationskontrakt

Strikt avvisning

Reparationen misslyckas stängt för duplicerade objektnummer, flera eller saknade Catalog-objekt, brutna trailerreferenser, icke-kommentarbytes mellan objekt, ogiltig objektgrammatik, objekt- eller indatagränser, klassiska xref-offsetar bredare än tio siffror och strikta omladdningsvalideringsfel

Markörer inuti validerade objekt hoppas över, så objektliknande text i strängar och kodade strömnyttolaster blir inte en xref-post

Begränsad prestanda

Skannern läser 1 MiB-fönster med en kort överföring, kopierar objektrangelement direkt mellan filströmmar och behåller endast validerad objektmetadata plus begränsade ordliste-prober

MaxInputBytes, MaxObjectCount och MaxObjectNumber begränsar skanning, behållen metadata och emitterade xref-rader före att utdata publiceras

Pascal-exempel

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;

Relaterad API