Bearbeitbare Diagnosedokumente und Reparatur

SaveLoadedDocumentDiagnostic erzeugt deterministische, entpackte Ausgabe zur Prüfung und kontrollierten Textbearbeitung, während RepairDiagnosticDocument die bearbeitete Datei wieder in ein strukturell gültiges PDF überführt

Round-Trip-Arbeitsablauf

  1. Ein Dokument laden und SaveLoadedDocumentDiagnostic aufrufen
  2. Objektwörterbücher oder unkomprimierte Stream-Bytes bearbeiten, ohne /Length, xref-Zeilen oder startxref manuell pflegen zu müssen
  3. RepairDiagnosticDocument mit begrenzten Optionen aufrufen
  4. THPDFDiagnosticRepairReport prüfen und das reparierte Ziel nur verwenden, wenn die Methode True zurückgibt

Reparaturvertrag

Strenge Zurückweisung

Die Reparatur schlägt geschlossen fehl bei doppelten Objektnummern, mehreren oder fehlenden Catalog-Objekten, defekten Trailer-Referenzen, Nicht-Kommentar-Bytes zwischen Objekten, ungültiger Objektgrammatik, Objekt- oder Eingabegrenzen, klassischen xref-Offsets mit mehr als zehn Ziffern und Fehlern bei der strengen Neuladungsvalidierung

Markierungen in validierten Objekten werden übersprungen, sodass objektähnlicher Text in Zeichenfolgen und kodierten Stream-Nutzdaten keinen xref-Eintrag erzeugt

Begrenzte Leistung

Der Scanner liest 1-MiB-Fenster mit einem kurzen Übertrag, kopiert Objektbereiche direkt zwischen Dateistreams und behält nur validierte Objektmetadaten sowie begrenzte Wörterbuchproben

MaxInputBytes, MaxObjectCount und MaxObjectNumber begrenzen Prüfung, gespeicherte Metadaten und ausgegebene xref-Zeilen vor der Veröffentlichung der Ausgabe

Pascal-Beispiel

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;

Verwandte API