PDFium Delphi Component Docs

LoadDocument policies and repaired output

Composant: TPdf  ·  Unit: PDFium
Ouvre un PDF avec une politique compatible, stricte ou de récupération et écrit éventuellement une copie réparée vérifiée indépendamment

Syntax

procedure LoadDocument;

 

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

DataPointer. Un pointeur vers les données PDF brutes en mémoire
SizeNativeUInt. La taille du tampon de données en octets
BufferedBoolean. Lorsque True (par défaut), TPdf conserve sa propre copie. Lorsque False, le tampon doit rester valide jusqu’au déchargement du document

 

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

DataTBytes. Le contenu du fichier PDF comme tableau d’octets
BufferedBoolean. Lorsque True (par défaut), TPdf conserve sa propre copie. Lorsque False, le tableau d’octets doit rester valide et inchangé jusqu’au déchargement du document

 

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

DataTBytes. Le tableau d’octets de sauvegarde qui contient la fenêtre PDF
IndexInteger. Le décalage de base 0 du premier octet PDF
CountInteger. Le nombre d’octets PDF à charger
BufferedBoolean. Lorsque True (par défaut), TPdf copie uniquement la fenêtre sélectionnée. Lorsque False, le tableau d’octets de sauvegarde doit rester valide et inchangé jusqu’au déchargement du document

 

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

DataTMemoryStream. Un TMemoryStream contenant les données PDF
BufferedBoolean. Lorsque True (par défaut), TPdf conserve sa propre copie. Lorsque False, la mémoire du flux doit rester valide jusqu’au déchargement du document

 

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;

Description

Les surcharges héritées utilisent le mode compatible et préservent leur comportement existant tout en publiant la validité xref native et l’état de récupération via LastLoadReport. La surcharge sans argument lit depuis le chemin stocké dans FileName. Les surcharges Pointer, TBytes et TMemoryStream chargent directement depuis les données en mémoire, en contournant le système de fichiers. La surcharge par plage d’octets sélectionne un PDF intégré depuis un conteneur plus grand, une trame de protocole ou un tampon de réception réutilisable sans créer une tranche TBytes temporaire

Lorsque Buffered est True (par défaut), TPdf copie les octets fournis dans son tampon conservé. Lorsque False, le tampon de l’appelant doit rester valide et inchangé jusqu’à UnloadDocument ou Active := False — cela évite une copie supplémentaire mais exige une gestion de durée de vie soigneuse

La surcharge par plage d’octets rejette les valeurs négatives, un Index au-delà de la longueur des données, ou un Count qui dépasse les octets restants. La surcharge pointeur rejette nil lorsque Size est non nul ; la surcharge TMemoryStream rejette un flux nil avant que tout état de document ne soit changé

En cas de succès, Active devient True et toutes les propriétés de page reflètent la première page (PageNumber = 1). En cas d’échec, une exception EPdfError est levée

Load policies

TPdfLoadOptions.Default fournit des valeurs par défaut bornées pour les octets source, les problèmes, les sections xref, les entrées xref et les numéros d’objet. PDFium reste l’analyseur sémantique dans tous les modes ; l’audit enveloppe existe parce que l’ABI PDFium publique rapporte la validité xref mais n’expose pas de commutateur désactivant la récupération de l’analyseur

L’audit suit les tables xref classiques, les flux xref, les révisions hybrides et les chaînes /Prev. Il rapporte les sections mal formées, les cycles, les entrées conflictuelles, les décalages d’objet endommagés, les marqueurs terminaux manquants, les filtres de flux non pris en charge, l’épuisement de budget et la récupération native. Dépasser un budget d’audit configuré met AuditComplete à False et produit un avertissement ; cela ne prétend pas en soi que les octets non vérifiés sont invalides

InspectAvailability reste la sonde de disponibilité native légère pour la linéarisation et le chargement page-en-premier ; il ne remplace pas le rapport de chargement structurel

Reports

TPdfLoadReport inclut Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, les décalages source et structurels, les compteurs de sections et d’entrées, les compteurs de conflits et de dommages, les totaux de problèmes, l’état de troncature et un tableau Issues typé. Le même rapport est stocké dans LastLoadReport

TPdfRepairReport enregistre si la source a utilisé la récupération, la taille de sortie et le nombre de pages, la validité xref de sortie, le texte d’erreur terminal et le rapport complet de vérification de chargement strict indépendant

Repaired output

SaveAsRepaired demande à PDFium d’écrire une copie complète non incrémentale, puis ouvre cette sortie dans un TPdf isolé avec plmStrict. La méthode ne délivre les octets qu’après la validité xref et la cohérence du nombre de pages. La surcharge fichier écrit via un fichier temporaire dans le même répertoire et remplace la destination de façon atomique

Une réécriture complète supprime l’historique incrémental antérieur et invalide les plages d’octets de signature existantes. Les documents signés sont rejetés sauf si AllowSignedDocument est explicitement True. La méthode répare les structures que PDFium peut charger et réécrire ; elle ne garantit pas la récupération d’un contenu endommagé arbitraire ni la préservation des signatures numériques

Example

// 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);

See Also

Active, FileName, LoadCustomDocument, SaveAs