procedure LoadDocument;
procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);
| Data | Pointer. Un puntatore ai dati PDF grezzi in memoria |
| Size | NativeUInt. La dimensione del buffer dati in byte |
| Buffered | Boolean. Quando True (predefinito), TPdf conserva la propria copia. Quando False, il buffer deve restare valido fino allo scaricamento del documento |
procedure LoadDocument(const Data: TBytes; Buffered: Boolean = True);
| Data | TBytes. Il contenuto del file PDF come array di byte |
| Buffered | Boolean. Quando True (predefinito), TPdf conserva la propria copia. Quando False, l'array di byte deve restare valido e invariato fino allo scaricamento del documento |
procedure LoadDocument(const Data: TBytes; Index, Count: Integer; Buffered: Boolean = True);
| Data | TBytes. L'array di byte sottostante che contiene la finestra PDF |
| Index | Integer. L'offset in base zero del primo byte PDF |
| Count | Integer. Il numero di byte PDF da caricare |
| Buffered | Boolean. Quando True (predefinito), TPdf copia solo la finestra selezionata. Quando False, l'array di byte sottostante deve restare valido e invariato fino allo scaricamento del documento |
procedure LoadDocument(Data: TMemoryStream; Buffered: Boolean = True);
| Data | TMemoryStream. Un TMemoryStream contenente i dati PDF |
| Buffered | Boolean. Quando True (predefinito), TPdf conserva la propria copia. Quando False, la memoria dello stream deve restare valida fino allo scaricamento del documento |
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;
Gli overload tradizionali usano la modalità compatible e preservano il comportamento esistente pubblicando allo stesso tempo la validità xref nativa e lo stato di recovery tramite LastLoadReport. L'overload senza argomenti legge dal
percorso memorizzato in FileName. Gli overload Pointer, TBytes
e TMemoryStream caricano direttamente da dati in memoria, aggirando
il file system. L'overload a intervallo di byte seleziona un PDF incorporato
da un contenitore più grande, da una frame di protocollo o da un buffer di
ricezione riutilizzabile senza creare una porzione temporanea di
TBytes
Quando Buffered è True (predefinito), TPdf
copia i byte forniti nel proprio buffer trattenuto. Quando False, il buffer del
chiamante deve restare valido e invariato fino a UnloadDocument o
Active := False — questo evita una copia supplementare ma richiede un'attenta
gestione della durata
L'overload a intervallo di byte rifiuta valori negativi, un Index oltre la lunghezza dei dati o un Count che eccede i byte rimanenti. L'overload a puntatore rifiuta nil quando Size è diverso da zero; l'overload TMemoryStream rifiuta uno stream nil prima che qualsiasi stato del documento venga modificato
In caso di successo, Active diventa True e tutte le proprietà di pagina
riflettono la prima pagina (PageNumber = 1). In caso di fallimento viene sollevata un'eccezione
EPdfError
TPdfLoadOptions.Default fornisce valori predefiniti delimitati per byte della sorgente, problemi, sezioni xref, voci xref e numeri di oggetto. PDFium resta il parser semantico in ogni modalità; la verifica del wrapper esiste perché l'ABI pubblico di PDFium riporta la validità xref ma non espone un'opzione che disabiliti il recovery del parser
plmCompatible accetta il recovery di PDFium e registra il risultato senza modificare il comportamento di caricamento tradizionaleplmStrict rifiuta una sorgente quando PDFium ha ricostruito il suo xref o la verifica delimitata trova errori strutturaliplmRecovery accetta esplicitamente un caricamento recuperato e ne restituisce il percorso diagnostico e l'evidenzaLa verifica segue le tabelle xref classiche, gli xref stream, le revisioni ibride e le catene /Prev. Riporta sezioni malformate, cicli, voci in conflitto, offset di oggetto danneggiati, marker terminali mancanti, filtri di stream non supportati, esaurimento del budget e recovery nativo. Il superamento di un budget di verifica configurato imposta AuditComplete a False e produce un avviso; di per sé non afferma che i byte non verificati siano invalidi
InspectAvailability resta la sonda nativa leggera di disponibilità per la linearizzazione e il caricamento page-first; non sostituisce il report strutturale di caricamento
TPdfLoadReport include Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, offset della sorgente e strutturali, contatori di sezioni e voci, contatori di conflitti e danni, totali dei problemi, stato di troncamento e un array tipizzato Issues. Lo stesso report è memorizzato in LastLoadReport
TPdfRepairReport registra se la sorgente ha usato il recovery, la dimensione dell'output e il numero di pagine, la validità xref dell'output, il testo dell'errore terminale e il report completo della verifica indipendente con caricamento strict
SaveAsRepaired chiede a PDFium di scrivere una copia completa non incrementale, quindi apre quell'output in un TPdf isolato con plmStrict. Il metodo consegna i byte solo dopo il superamento della validità xref e della coerenza del numero di pagine. L'overload su file scrive tramite un file temporaneo nella stessa directory e sostituisce atomicamente la destinazione
Una riscrittura completa rimuove la cronologia incrementale precedente e invalida gli intervalli di byte delle firme esistenti. I documenti firmati vengono rifiutati a meno che AllowSignedDocument non sia esplicitamente True. Il metodo ripara le strutture che PDFium può caricare e riscrivere con successo; non garantisce il recupero di contenuti danneggiati arbitrari né la preservazione delle firme digitali
// 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);