PDFium Delphi Component Docs

LoadDocument-Richtlinien und reparierte Ausgabe

Komponente: TPdf  ·  Unit: PDFium
Öffnet ein PDF mit kompatibler, strenger oder Wiederherstellungs-Richtlinie und schreibt optional eine unabhängig verifizierte reparierte Kopie

Syntax

procedure LoadDocument;

 

procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);

DataPointer. Ein Zeiger auf die rohen PDF-Daten im Speicher
SizeNativeUInt. Die Größe des Datenpuffers in Bytes
BufferedBoolean. Bei True (Standard) behält TPdf eine eigene Kopie. Bei False muss der Puffer gültig bleiben, bis das Dokument entladen wird

 

procedure LoadDocument(const Data: TBytes; Buffered: Boolean = True);

DataTBytes. Der PDF-Dateiinhalt als Byte-Array
BufferedBoolean. Bei True (Standard) behält TPdf eine eigene Kopie. Bei False muss das Byte-Array gültig und unverändert bleiben, bis das Dokument entladen wird

 

procedure LoadDocument(const Data: TBytes; Index, Count: Integer; Buffered: Boolean = True);

DataTBytes. Das zugrunde liegende Byte-Array, das das PDF-Fenster enthält
IndexInteger. Der nullbasierte Offset des ersten PDF-Bytes
CountInteger. Die Anzahl der zu ladenden PDF-Bytes
BufferedBoolean. Bei True (Standard) kopiert TPdf nur das ausgewählte Fenster. Bei False muss das zugrunde liegende Byte-Array gültig und unverändert bleiben, bis das Dokument entladen wird

 

procedure LoadDocument(Data: TMemoryStream; Buffered: Boolean = True);

DataTMemoryStream. Ein TMemoryStream mit den PDF-Daten
BufferedBoolean. Bei True (Standard) behält TPdf eine eigene Kopie. Bei False muss der Stromspeicher gültig bleiben, bis das Dokument entladen wird

 

procedure LoadDocument(const Options: TPdfLoadOptions; out Report: TPdfLoadReport);

procedure LoadDocument(Data: Pointer; Size: NativeUInt; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

procedure LoadDocument(const Data: TBytes; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

procedure LoadDocument(const Data: TBytes; Index, Count: Integer; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

 

function SaveAsRepaired(Stream: TStream; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsRepaired(const FileName: string; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;

Beschreibung

Die klassischen Überladungen verwenden den kompatiblen Modus und bewahren ihr bestehendes Verhalten, während sie die native XRef-Gültigkeit und den Wiederherstellungsstatus über LastLoadReport veröffentlichen. Die parameterlose Überladung liest aus dem in FileName gespeicherten Pfad. Die Pointer-, TBytes- und TMemoryStream-Überladungen laden direkt aus Speicherdaten und umgehen dabei das Dateisystem. Die Bytebereich-Überladung wählt ein eingebettetes PDF aus einem größeren Container, Protokollrahmen oder wiederverwendbaren Empfangspuffer aus, ohne eine temporäre TBytes-Kopie zu erzeugen

Ist Buffered gleich True (Standard), kopiert TPdf die übergebenen Bytes in seinen eigenen Puffer. Bei False muss der Puffer des Aufrufers gültig und unverändert bleiben, bis UnloadDocument oder Active := False — das vermeidet eine zusätzliche Kopie, erfordert aber sorgfältige Lebensdauerverwaltung

Die Bytebereich-Überladung weist negative Werte, einen Index jenseits der Datenlänge oder einen Count, der über die verbleibenden Bytes hinausreicht, zurück. Die Zeiger-Überladung weist nil zurück, wenn Size ungleich null ist; die TMemoryStream-Überladung weist einen nil-Strom zurück, bevor irgendein Dokumentzustand verändert wird

Bei Erfolg wird Active gleich True, und alle Seiteneigenschaften spiegeln die erste Seite wider (PageNumber = 1). Bei Fehlschlag wird eine EPdfError-Ausnahme ausgelöst

Laderichtlinien

TPdfLoadOptions.Default liefert begrenzte Standardwerte für Quellbytes, Feststellungen, XRef-Abschnitte, XRef-Einträge und Objektnummern. PDFium bleibt in jedem Modus der semantische Parser; das Wrapper-Audit existiert, weil die öffentliche PDFium-ABI die XRef-Gültigkeit meldet, aber keinen Schalter anbietet, der die Parser-Wiederherstellung deaktiviert

Das Audit folgt klassischen XRef-Tabellen, XRef-Streams, hybriden Revisionen und /Prev-Ketten. Es meldet fehlerhafte Abschnitte, Zyklen, widersprüchliche Einträge, beschädigte Objekt-Offsets, fehlende Abschlussmarken, nicht unterstützte Stromfilter, ausgeschöpfte Budgets und die native Wiederherstellung. Das Überschreiten eines konfigurierten Audit-Budgets setzt AuditComplete auf False und erzeugt eine Warnung; es behauptet nicht von sich aus, dass ungeprüfte Bytes ungültig sind

InspectAvailability bleibt die leichte native Verfügbarkeitsprüfung für Linearisierung und seitenfirstes Laden; sie ersetzt nicht den strukturellen Ladebericht

Berichte

TPdfLoadReport umfasst Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, Quell- und Struktur-Offsets, Abschnitts- und Eintragszähler, Konflikt- und Beschädigungszähler, Gesamtzahlen der Feststellungen, den Kürzungsstatus und ein typisiertes Issues-Array. Derselbe Bericht wird in LastLoadReport gespeichert

TPdfRepairReport zeichnet auf, ob die Quelle die Wiederherstellung nutzte, Ausgabegröße und Seitenzahl, die XRef-Gültigkeit der Ausgabe, den Fehlertext am Ende sowie den vollständigen unabhängigen Verifizierungsbericht des strikten Ladens

Reparierte Ausgabe

SaveAsRepaired bittet PDFium, eine vollständige nicht-inkrementelle Kopie zu schreiben, und öffnet diese Ausgabe dann in einem isolierten TPdf mit plmStrict. Die Methode liefert Bytes erst, nachdem XRef-Gültigkeit und Seitenzahl-Konsistenz bestanden sind. Die Datei-Überladung schreibt über eine temporäre Datei im selben Verzeichnis und ersetzt das Ziel atomar

Eine vollständige Neuschreibung entfernt die bisherige inkrementelle Historie und macht bestehende Signatur-Bytebereiche ungültig. Signierte Dokumente werden abgelehnt, sofern AllowSignedDocument nicht ausdrücklich True ist. Die Methode repariert Strukturen, die PDFium erfolgreich laden und neu schreiben kann; sie garantiert weder die Wiederherstellung beliebiger beschädigter Inhalte noch den Erhalt digitaler Signaturen

Beispiel

// From file
Pdf.FileName := 'C:\docs\file.pdf';
Pdf.LoadDocument;

// From TBytes
var Bytes: TBytes;
Bytes := TFile.ReadAllBytes('file.pdf');
Pdf.LoadDocument(Bytes);

// From a PDF embedded in a larger byte array
Pdf.LoadDocument(Container, PdfOffset, PdfLength);

// From TMemoryStream (unbuffered)
Pdf.LoadDocument(FStream, False);

// Reject hidden parser recovery
Options := TPdfLoadOptions.Default(plmStrict);
Pdf.LoadDocument(Options, Report);

// Rewrite and independently verify a recovered document
Pdf.SaveAsRepaired('C:\docs\repaired.pdf', RepairReport);

Siehe auch

Active, FileName, LoadCustomDocument, SaveAs