procedure LoadDocument;
procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);
| Data | Pointer. Un pointeur vers les données PDF brutes en mémoire |
| Size | NativeUInt. La taille du tampon de données en octets |
| Buffered | Boolean. 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);
| Data | TBytes. Le contenu du fichier PDF comme tableau d’octets |
| Buffered | Boolean. 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);
| Data | TBytes. Le tableau d’octets de sauvegarde qui contient la fenêtre PDF |
| Index | Integer. Le décalage de base 0 du premier octet PDF |
| Count | Integer. Le nombre d’octets PDF à charger |
| Buffered | Boolean. 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);
| Data | TMemoryStream. Un TMemoryStream contenant les données PDF |
| Buffered | Boolean. 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;
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
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
plmCompatible accepte la récupération PDFium et enregistre le résultat sans changer le comportement de chargement héritéplmStrict rejette une source lorsque PDFium a reconstruit sa table xref ou que l’audit borné trouve des erreurs structurellesplmRecovery accepte explicitement un chargement récupéré et renvoie son chemin de diagnostic et ses preuvesL’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
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
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
// 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);