procedure LoadDocument;
procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);
| Data | Pointer. Ein Zeiger auf die rohen PDF-Daten im Speicher |
| Size | NativeUInt. Die Größe des Datenpuffers in Bytes |
| Buffered | Boolean. 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);
| Data | TBytes. Der PDF-Dateiinhalt als Byte-Array |
| Buffered | Boolean. 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);
| Data | TBytes. Das zugrunde liegende Byte-Array, das das PDF-Fenster enthält |
| Index | Integer. Der nullbasierte Offset des ersten PDF-Bytes |
| Count | Integer. Die Anzahl der zu ladenden PDF-Bytes |
| Buffered | Boolean. 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);
| Data | TMemoryStream. Ein TMemoryStream mit den PDF-Daten |
| Buffered | Boolean. 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;
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
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
plmCompatible akzeptiert die PDFium-Wiederherstellung und zeichnet das Ergebnis auf, ohne das klassische Ladeverhalten zu ändernplmStrict weist eine Quelle zurück, wenn PDFium ihr XRef neu aufgebaut hat oder das begrenzte Audit strukturelle Fehler findetplmRecovery akzeptiert ausdrücklich eine wiederhergestellte Ladung und liefert ihren Diagnoseweg und ihre NachweiseDas 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
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
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
// 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);