FPdfCompress contient les transformateurs de flux publics utilisés après que PDFium sérialise un document, plus des enregistrements qui configurent chaque transformateur et rapportent son résultat
Les assistants de réécriture complète matérialisent le graphe d’objets actif, préservent ou reconstruisent délibérément les références croisées et rejettent les entrées qui ne peuvent pas être réécrites sans risque ; les procédures à rapport renvoient les échecs via Succeeded et ErrorMessage
La plupart des applications utilisent les méthodes d’enregistrement, d’inspection ou de graphe d’objets TPdf correspondantes, tandis que les procédures de l’unité restent disponibles pour les appelants qui possèdent déjà des flux PDF sérialisés
TPdfTreeEditor = class
class function TryLoad(Source: TStream; Kind: TPdfTreeKind;
const RootReference: TPdfTreeObjectReference;
const Options: TPdfTreeEditOptions; out Editor: TPdfTreeEditor;
out Report: TPdfTreeValidationReport): Boolean; static;
class function Load(Source: TStream; Kind: TPdfTreeKind;
const RootReference: TPdfTreeObjectReference;
const Options: TPdfTreeEditOptions): TPdfTreeEditor; static;
function UpsertName(const Key, RawValue: AnsiString): Boolean;
function UpsertNumber(Key: Int64; const RawValue: AnsiString): Boolean;
function RemoveName(const Key: AnsiString): Boolean;
function RemoveNumber(Key: Int64): Boolean;
procedure Clear;
function Validate(out Report: TPdfTreeValidationReport): Boolean;
function BuildBalancedObjects(out Objects: TPdfTreeSerializedObjects;
out Report: TPdfTreeValidationReport): Boolean;
function SaveIncremental(Source, Dest: TStream;
out Report: TPdfTreeValidationReport): Boolean;
property Count: Integer;
property Entries[Index: Integer]: TPdfTreeEntry; default;
end;
TPdfOutlineEditor = class
class function TryLoad(Source: TStream;
const Options: TPdfOutlineEditOptions; out Editor: TPdfOutlineEditor;
out Report: TPdfOutlineValidationReport): Boolean; static;
class function Load(Source: TStream;
const Options: TPdfOutlineEditOptions): TPdfOutlineEditor; static;
function Add(ParentId, SiblingIndex: Integer; const Title: WideString;
PageNumber: Integer): Integer;
function Delete(Id: Integer): Boolean;
function Move(Id, NewParentId, SiblingIndex: Integer): Boolean;
procedure SetTitle(Id: Integer; const Title: WideString);
procedure SetStyle(Id: Integer; const Style: TPdfOutlineStyle);
procedure SetExpanded(Id: Integer; Expanded: Boolean);
procedure SetColor(Id: Integer; Red, Green, Blue: Single);
procedure ClearColor(Id: Integer);
procedure Retarget(Id, PageNumber: Integer;
const DestinationSuffix: AnsiString = '/Fit';
DestinationInAction: Boolean = False);
function ApplyPageMap(const NewPageNumbers: array of Integer;
DeleteDangling: Boolean; out Report: TPdfOutlineValidationReport): Boolean;
function Validate(out Report: TPdfOutlineValidationReport): Boolean;
function SaveIncremental(Source, Dest: TStream;
out Report: TPdfOutlineValidationReport): Boolean;
property Count: Integer;
property Items[Index: Integer]: TPdfOutlineItem; default;
end;
TPdfCrossDocumentGraftMap = class
constructor Create(const SourceIdentity: AnsiString);
procedure Clear;
function TryResolve(const Source: TPdfGraftObjectReference;
out Destination: TPdfGraftObjectReference): Boolean;
procedure Add(const Source, Destination: TPdfGraftObjectReference);
property Count: Integer;
property Entries[Index: Integer]: TPdfGraftMapEntry; default;
property SourceIdentity: AnsiString;
end;
TPdfSparseDictionaryReader = class
constructor Create(Source: TStream);
function ReadDictionary(ObjectNumber, Generation: Integer;
out Dictionary: AnsiString): Boolean;
function ReadLatestDictionary(ObjectNumber: Integer;
out Generation: Integer; out Dictionary: AnsiString): Boolean;
function ReadDecodedStream(ObjectNumber, Generation,
MaximumDecodedBytes: Integer; out Data: TBytes): Boolean;
property Valid: Boolean;
end;
procedure CompressPdfStream(Source, Dest: TStream);
procedure LinearizePdfStream(Source, Dest: TStream);
procedure PackPdfObjectStreams(Source, Dest: TStream;
MaxObjectsPerStream: Integer = 100;
MaxDecodedBytesPerStream: Integer = 65536);
procedure NormalizePdfDocumentContent(Source, Dest: TStream;
const Options: TPdfContentNormalizeOptions;
out Report: TPdfContentNormalizeReport);
function GraftPdfAcroForm(Source, Destination, Output: TStream;
const PageMappings: TPdfGraftPageMappings;
const Options: TPdfAcroFormGraftOptions;
GraftMap: TPdfCrossDocumentGraftMap;
out Report: TPdfAcroFormGraftReport): Boolean;
procedure PruneUnreachablePdfStream(Source, Dest: TStream;
out Report: TPdfPruneReport);
procedure PruneUnusedPdfResources(Source, Dest: TStream;
out Report: TPdfResourcePruneReport;
AllowSignedDocument: Boolean = False);
procedure DeduplicateResourcesPdfStream(Source, Dest: TStream;
out Report: TPdfDedupReport);
procedure RecompressFlatePdfStream(Source, Dest: TStream;
const Options: TPdfFlateRecompressOptions;
out Report: TPdfFlateRecompressReport);
procedure ExternaliseInlineImagesPdfStream(Source, Dest: TStream;
const Options: TPdfInlineImageExternaliseOptions;
out Report: TPdfInlineImageExternaliseReport);
procedure ReproduciblePdfStream(Source, Dest: TStream;
out Report: TPdfReproducibleReport);
procedure AppendPdfDirtyRevision(BaselineState, CurrentState,
PreviousOutput, Dest: TStream; out ChangedObjectCount: Integer;
out AppendedByteCount: Int64);
procedure ApplyDefaultOpenAction(Source, Dest: TStream;
PdfVersion: Integer = 0);
procedure PageLabelledPdfStream(Source, Dest: TStream;
const Ranges: TPdfPageLabelRanges; ReplaceExisting: Boolean;
out Report: TPdfPageLabelReport);
procedure InspectOptionalContentPdfStream(Source: TStream;
Usage: TPdfOptionalContentUsage; ConfigurationIndex: Integer;
out Inventory: TPdfOptionalContentInventory);
procedure ConfigureOptionalContentPdfStream(Source, Dest: TStream;
const Changes: TPdfOptionalContentStateChanges;
const Options: TPdfOptionalContentConfigureOptions;
out Report: TPdfOptionalContentConfigureReport);
procedure SanitiseActiveContentPdfStream(Source, Dest: TStream;
const Options: TPdfSanitiseOptions;
out Report: TPdfSanitiseReport);
procedure SanitiseActiveContentPdfStream(Source, Dest,
PruneWorkspace: TStream; const Options: TPdfSanitiseOptions;
out Report: TPdfSanitiseReport);
procedure ExportPdfObjectGraph(Source, Dest: TStream;
const Options: TPdfObjectGraphInspectOptions;
out Report: TPdfObjectGraphReport);
procedure PatchPdfObjectGraph(Source, Dest: TStream;
const Operations: TPdfObjectPatchOperations;
out Report: TPdfObjectGraphReport;
AllowSignedDocument: Boolean = False);
procedure PostProcessSavedPdf(Source, Dest: TStream;
PdfVersion: Integer = 0);
procedure PostProcessSavedPdf(Source, Dest, NormalizedWorkspace,
RepairedWorkspace, ValidationWorkspace: TStream;
PdfVersion: Integer = 0);
procedure RepairSubsetToUnicodeCMaps(Source, Dest: TStream);
function ReadPdfVersionInfo(Source: TStream; out Info: TPdfVersionInfo;
out ErrorText: string): Boolean;
function ReadPdfSparseRevisionInfo(Source: TStream;
out Info: TPdfSparseRevisionInfo): Boolean;
function ComposePdfSparseUpdateId(Source: TStream;
const Info: TPdfSparseRevisionInfo;
const DocumentId, InstanceId: TBytes): AnsiString;
function ReadPdfSparseCatalogSubDict(Source: TStream;
const Name: AnsiString; out SubDict: AnsiString): Boolean;
function ReadPdfSparsePageDictionaries(Source: TStream;
out Pages: TPdfSparsePageDictionaries): Boolean;
| Fonction ou procédure | Description |
|---|---|
TPdfTreeEditor.TryLoad | Charge et valide un NameTree ou NumberTree indirect via une recherche partielle à génération exacte, en renvoyant des preuves structurelles sans lever d’exception pour une entrée mal formée |
TPdfTreeEditor.Load | Charge un arbre et lève une exception avec l’erreur de validation lorsque la structure n’est pas sûre à modifier |
TPdfTreeEditor.UpsertName and UpsertNumber | Insèrent ou remplacent une entrée triée tout en préservant sa valeur PDF brute complète, y compris les références indirectes et les objets composés |
TPdfTreeEditor.RemoveName, RemoveNumber, and Clear | Retirent les entrées sélectionnées ou vident l’arbre avant le rééquilibrage déterministe |
TPdfTreeEditor.Validate | Vérifie l’ordre des clés, les clés dupliquées, les valeurs brutes, les limites d’entrées et les invariants courants de l’éditeur |
TPdfTreeEditor.BuildBalancedObjects | Construit des nœuds feuilles et internes bornés avec des /Limits exacts, conserve l’identité de la racine et réutilise si possible les références de nœuds indirectes chargées compatibles |
TPdfTreeEditor.SaveIncremental | Ajoute les objets équilibrés comme révision incrémentale vérifiée et recharge indépendamment le résultat avant de signaler le succès |
TPdfOutlineEditor.TryLoad and Load | Lisent une hiérarchie de signets via une recherche partielle à génération exacte, valident les liens parents et frères, détectent les cycles et préservent les destinations et actions non prises en charge comme entrées de dictionnaire opaques |
TPdfOutlineEditor.Add, Delete, and Move | Modifient des sous-arbres de signets complets par identifiants d’éléments stables tout en maintenant l’ordre frère en profondeur d’abord |
TPdfOutlineEditor.SetTitle, SetStyle, SetExpanded, SetColor, and ClearColor | Mettent à jour la présentation visible des signets sans abandonner les entrées de dictionnaire d’éléments non reconnues |
TPdfOutlineEditor.Retarget | Assigne une destination de page explicite en base 1 comme données /Dest directes ou une action GoTo avec un suffixe de destination validé |
TPdfOutlineEditor.ApplyPageMap | Consomme la correspondance de destinations en base 1 produite par la validation du plan de pages, met à jour les destinations explicites survivantes et retire ou signale les sous-arbres orphelins |
TPdfOutlineEditor.SaveIncremental | Reconstruit les entrées racine, parent, frère, enfant, compte, style, couleur et destination, ajoute une révision incrémentale et recharge indépendamment le résultat sémantique avant le succès |
TPdfCrossDocumentGraftMap.Create | Lie des correspondances réutilisables d’objets indirects source-vers-destination à une identité source fournie par l’appelant |
TPdfCrossDocumentGraftMap.Add and TryResolve | Stockent et résolvent des paires exactes de numéros d’objet et de générations, acceptent les répétitions identiques et rejettent les destinations conflictuelles |
GraftPdfAcroForm | Importe les hiérarchies de champs, widgets, apparences, ordre de calcul, ressources par défaut, actions et valeurs dans les pages de destination mappées, ajoute une révision incrémentale partielle et recharge indépendamment le résultat avant le succès |
CompressPdfStream | Compresse en Flate les flux non compressés éligibles et reconstruit la structure PDF sérialisée |
LinearizePdfStream | Réordonne et renumérote le graphe d’objets actif en mise en page PDF linéarisée avec données d’indication de première page et d’objets partagés |
PackPdfObjectStreams | Regroupe les objets hors flux éligibles en groupes ObjStm bornés et écrit un flux de références croisées ; les deux limites de regroupement doivent être positives |
NormalizePdfDocumentContent | Normalise chaque séquence de contenu de page avec TPdfContentNormalizeOptions et renvoie un TPdfContentNormalizeReport au niveau du document |
PruneUnreachablePdfStream | Réécrit uniquement les objets accessibles depuis le catalogue en une révision classique tout en préservant les numéros d’objets et générations survivants |
PruneUnusedPdfResources | Analyse les opérateurs de contenu décodés dans les portées de ressources de page, héritées, XObject de formulaire, motif, apparence et imbriquées, retire uniquement les noms de ressources inutilisés, ajoute une révision partielle et élague les objets devenus inaccessibles |
DeduplicateResourcesPdfStream | Élague les objets inaccessibles et fusionne les sous-graphes de polices, d’images et de XObject de formulaire identiques octet par octet |
RecompressFlatePdfStream | Décode et recompresse les flux FlateDecode accessibles lorsque les deux seuils de gain demandés sont atteints |
ExternaliseInlineImagesPdfStream | Déplace les blocs d’images en ligne vers des XObject d’image, met à jour les ressources de page et réécrit les flux de contenu affectés |
ReproduciblePdfStream | Produit une sortie déterministe à révision unique en élaguant les objets inaccessibles, en retirant les horodatages Info et en omettant le /ID source |
AppendPdfDirtyRevision | Compare les instantanés sémantiques de baseline et courants, ajoute les objets indirects modifiés ou nouveaux à la sortie précédente et rapporte les comptages ajoutés |
AppendEncryptedPdfDirtyRevision | Ajoute les objets indirects modifiés ou nouveaux sous le contexte de chiffrement hérité et valide ou renouvelle l’authentification de révision |
ApplyDefaultOpenAction | Injecte une action d’ouverture Fit-Height de première page lorsqu’aucune n’existe et que la version PDF sélectionnée le permet, en utilisant des fenêtres de flux bornées et une recherche partielle paresseuse à travers les révisions classiques, xref-stream, hybrides et object-stream |
PageLabelledPdfStream | Écrit un arbre de numéros /PageLabels de catalogue à partir de plages en base 0 et remplace facultativement un arbre existant, en utilisant des fenêtres de flux bornées et une recherche partielle de catalogue sur le chemin xref normal |
InspectOptionalContentPdfStream | Lit les groupes, configurations, appartenances, métadonnées d’usage et visibilité effective du contenu facultatif dans un inventaire |
ConfigureOptionalContentPdfStream | Applique la visibilité de groupe demandée à une configuration sélectionnée et écrit les mises à jour de contenu facultatif requises |
SanitiseActiveContentPdfStream | Retire les entrées de contenu actif sélectionnées du catalogue et du trailer via recherche partielle et copie de plages bornées, puis peut élager les objets rendus inaccessibles par ce retrait ; la surcharge avec espace de travail accepte un stockage borné ou sur disque détenu par l’appelant pour l’entrée d’élagage |
ExportPdfObjectGraph | Sérialise des données bornées d’objets indirects en JSON pdf-object-graph-v1 avec empreintes SHA-256 de flux encodés facultatives |
PatchPdfObjectGraph | Définit ou retire des entrées de dictionnaire de premier niveau par identité d’objet et ajoute une révision incrémentale vérifiée |
PostProcessSavedPdf | Exécute la gestion de l’action d’ouverture par défaut, la normalisation spécifique à la version et la réparation native incrémentale de xref-stream ; la surcharge avec trois espaces de travail distincts adressables permet aux appelants d’appliquer leur propre politique de stockage borné ou sur disque |
RepairSubsetToUnicodeCMaps | Réécrit les CMap ToUnicode des polices subset dont les éléments de tableau contredisent leurs entrées bfchar, via des éditions sur place d’éléments de même longueur (les valeurs bfchar gagnent, une paire ne différant que par le bit de poids fort se résout vers le plus petit point de code, tout autre conflit conserve le premier mappage) ; les documents sans /ToUnicode ou avec une structure xref-stream, hybride ou object-stream passent sans modification, et chaque sauvegarde TPdf complète non incrémentale applique automatiquement la même réparation |
ReadPdfVersionInfo | Lit l’en-tête, la substitution de catalogue, la version principale effective et les informations d’extension de développeur Adobe |
ReadPdfSparseRevisionInfo | Lit des informations bornées de dernière révision, les octets du catalogue, les générations d’objets, le style xref, l’état de chiffrement, les identifiants de document et les preuves de structure étiquetée via l’index d’objets partiel |
ComposePdfSparseUpdateId | Formate un /ID de trailer incrémental en préservant les identifiants de l’appelant ou de la source et en dérivant les valeurs manquantes par une empreinte de flux bornée |
ReadPdfSparseCatalogSubDict | Lit un sous-dictionnaire de catalogue direct ou indirect, tel que MarkInfo ou ViewerPreferences, via l’index d’objets partiel |
ReadPdfSparsePageDictionaries | Parcourt l’arbre de pages actif via une recherche partielle classique, xref-stream, hybride et object-stream et renvoie les dictionnaires de pages dans l’ordre des pages |
TPdfSparseDictionaryReader.Create | Construit un index partiel réutilisable sur un flux source détenu par l’appelant et signale le succès de l’initialisation via Valid ; la source doit rester vivante pendant l’utilisation du lecteur |
TPdfSparseDictionaryReader.Destroy | Libère les tampons d’index conservés sans libérer le flux source détenu par l’appelant |
TPdfSparseDictionaryReader.ReadDictionary | Résout un numéro d’objet et une génération exacts via l’index conservé et renvoie les octets bornés du dictionnaire actif |
TPdfSparseDictionaryReader.ReadLatestDictionary | Résout l’entrée xref active d’un numéro d’objet, renvoie sa génération et lit son dictionnaire via l’index conservé |
TPdfSparseDictionaryReader.ReadDecodedStream | Lit et décode un flux direct non filtré ou un unique flux FlateDecode en appliquant MaximumDecodedBytes |
TPdfOptionalContentConfigureOptions.Default | Sélectionne la configuration 0 et l’usage View, retire les règles d’état automatique et impose les groupes radio |
TPdfSanitiseOptions.Default | Active le retrait des actions d’ouverture, des actions de catalogue, des arbres de noms, des fichiers associés et des objets inaccessibles tout en préservant AcroForm et les métadonnées |
TPdfObjectGraphInspectOptions.Default | Renvoie des limites de 100000 objets, profondeur 32, sortie de 64 MiB, chaînes de 1 MiB et empreintes de flux activées |
| Type | Description |
|---|---|
TPdfTreeKind | Sélectionne un NameTree trié par octets avec ptkName ou un NumberTree signé 64 bits avec ptkNumber |
TPdfTreeObjectReference | Identifie un nœud d’arbre indirect par ObjectNumber et Generation |
TPdfTreeEntry | Stocke NameKey ou NumberKey plus un objet PDF complet normalisé dans RawValue ; TPdfTreeEntries est son tableau dynamique |
TPdfTreeEditOptions | Borne MaxEntries, MaxNodes, MaxDepth, MaxLeafEntries et MaxKidsPerNode ; Default fournit des limites de production conservatrices |
TPdfTreeValidationIssue | Un problème portant des preuves d’objet et un Message de diagnostic ; TPdfTreeValidationIssues est son tableau dynamique |
TPdfTreeValidationIssueKind | Valeurs de problèmes ptviInvalidRoot, ptviUnreadableNode, ptviCycle, ptviDepthLimit, ptviNodeLimit, ptviEntryLimit, ptviInvalidNodeShape, ptviInvalidKey, ptviInvalidValue, ptviInvalidLimits, ptviDuplicateKey, ptviUnsortedKey et ptviDeadlineExceeded |
TPdfTreeValidationReport | Rapporte NodeCount, EntryCount, MaximumDepth, Issues, les preuves d’objet, l’état de succès et le texte d’erreur |
TPdfTreeSerializedObject | Contient une référence de nœud équilibrée, des données complètes d’objet indirect et l’indication de savoir si la référence a été réutilisée |
TPdfTreeEditor | Modèle d’arbre trié mutable qui préserve les valeurs PDF opaques et émet une hiérarchie indirecte équilibrée |
TPdfOutlineStyleFlag | Valeurs de présentation posItalic et posBold ; TPdfOutlineStyle est leur ensemble |
TPdfOutlineObjectReference | Identifie un objet de signets conservé par numéro d’objet et génération |
TPdfOutlineItem | Stocke l’identité stable, l’identité parent, le titre, la destination explicite, la forme d’action, IsOpen, le style, HasColor, ColorRed, ColorGreen, ColorBlue et la référence d’objet conservée ; TPdfOutlineItems est son tableau dynamique |
TPdfOutlineEditOptions | Borne MaxItems et la profondeur de hiérarchie, avec des valeurs par défaut conservatrices fournies par Default |
TPdfOutlineValidationIssueKind | Valeurs de problèmes poviNone, poviInvalidCatalog, poviUnreadableItem, poviCycle, poviDepthLimit, poviItemLimit, poviInvalidParent, poviInvalidSibling, poviMissingTitle, poviInvalidDestination, poviInvalidPageMap, poviEncryptedInput, poviWriteFailure et poviVerificationFailure |
TPdfOutlineValidationReport | Rapporte IssueKind, les preuves d’objet, ItemCount, MaximumDepth, RemappedDestinationCount, RemovedDanglingItemCount, l’état de succès et le texte d’erreur |
TPdfOutlineEditor | Modèle de signets mutable en profondeur d’abord avec remappage vérifié du plan de pages et persistance incrémentale |
TPdfGraftObjectReference | Identifie un objet indirect source ou destination par numéro d’objet et génération exacts |
TPdfCrossDocumentGraftMap | Correspondance d’objets réutilisable liée à une identité source adossée à TPdfGraftMapEntries qui préserve les cycles et les références partagées et annule les entrées ajoutées par une greffe échouée |
TPdfGraftPageMapping | Mappe un SourcePageNumber en base 1 vers un DestinationPageNumber en base 1 pour les mises à jour /P de widget et /Annots de page |
TPdfAcroFormCollisionPolicy | Sélectionne pagcpReject ou pagcpRename lorsqu’un titre de champ racine source entre en collision avec un titre de champ racine de destination |
TPdfAcroFormGraftOptions | Contrôle CollisionPolicy, RenamePrefix, les budgets d’objets et de récursion et AllowSignedDestination |
TPdfAcroFormGraftReport | Rapporte SourceFieldCount, GraftedFieldCount, ReusedObjectCount, DestinationFieldCount, MappedPageCount, GraftedObjectCount, RenamedFieldCount, la taille de sortie, l’état de succès et le texte d’erreur |
TPdfVersionInfo | Rapport de version avec HeaderVersion, CatalogVersion, CoreVersion, AdobeBaseVersion, AdobeExtensionLevel, HasCatalogVersion, HasDeveloperExtensions et HasAdobeExtension |
TPdfSparseRevisionInfo | Instantané de dernière révision avec RootObjectNumber, RootGeneration, InfoObjectNumber, InfoGeneration, SizeValue, MaximumObjectNumber, PreviousXrefOffset, UsesXrefStream, HasEncrypt, HasDocumentId, HasTaggedStructure, FirstDocumentId, CatalogDictionary et InfoDictionary |
TPdfSparseUpdateObject | Une entrée de révision avec ObjectNumber, Generation et un corps Data complet portant les octets N G obj ... endobj |
TPdfSparseUpdateObjects | Tableau dynamique d’entrées TPdfSparseUpdateObject ajoutées par AppendPdfSparseUpdate |
TPdfSparsePageDictionary | Un objet de page actif avec ObjectNumber, Generation et des octets de Dictionary bornés |
TPdfSparsePageDictionaries | Tableau dynamique de dictionnaires de pages actifs dans l’ordre de l’arbre de pages |
TPdfSparseDictionaryReader | Propriétaire réutilisable d’un index partiel classique, xref-stream, hybride et object-stream pour des recherches répétées de dictionnaires à génération exacte sans allocation à la taille de la source |
TPdfPruneReport | Résultat d’accessibilité avec SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, Succeeded et ErrorMessage |
TPdfResourcePruneReport | Résultat d’élagage de ressources avec ScannedScopeCount, UpdatedScopeCount, RemovedNameCount, RemovedObjectCount, les comptages de flux, les totaux d’octets, l’état de succès et le texte d’erreur |
TPdfDedupReport | Résultat de déduplication avec SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, MergedFontCount, MergedImageCount, MergedFormXObjectCount, Succeeded et ErrorMessage |
TPdfFlateRecompressOptions | Seuils de remplacement MinSavingBytes et MinSavingRatio |
TPdfFlateRecompressReport | Résultat de recompression avec SourceByteCount, OutputByteCount, RecompressedCount, SkippedCount, FailedCount, OriginalStreamBytes, RecompressedStreamBytes, Succeeded et ErrorMessage |
TPdfInlineImageExternaliseOptions | Contient SkipUnsafePages, qui préserve les pages dont les frontières d’images en ligne ne peuvent pas être résolues |
TPdfInlineImageExternaliseReport | Résultat d’externalisation avec SourceByteCount, OutputByteCount, ExternalisedCount, SkippedPageCount, FailedCount, CreatedXObjectCount, Succeeded et ErrorMessage |
TPdfReproducibleReport | Résultat de réécriture déterministe avec SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, StrippedTimestampCount, Succeeded et ErrorMessage |
TPdfPageLabelStyle | Styles de numérotation plsNone, plsDecimal, plsUppercaseRoman, plsLowercaseRoman, plsUppercaseLetters et plsLowercaseLetters |
TPdfPageLabelRange | Une plage d’étiquettes avec StartPageIndex en base 0, Style, Prefix et StartNumber |
TPdfPageLabelRanges | Tableau dynamique de valeurs TPdfPageLabelRange |
TPdfPageLabelReport | Résultat de réécriture d’étiquettes avec SourceByteCount, OutputByteCount, AppliedRangeCount, ReplacedExistingLabels, Succeeded et ErrorMessage |
TPdfOptionalContentUsage | Contextes de visibilité ocuView, ocuPrint, ocuExport et ocuDesign |
TPdfOptionalContentState | États par usage ocsUnspecified, ocsOn et ocsOff |
TPdfOptionalContentBaseState | États de base de configuration ocbsOn, ocbsOff et ocbsUnchanged |
TPdfOptionalContentMembershipPolicy | Politiques d’appartenance ocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff et ocmpUnknown |
TPdfOptionalContentIntegerArray | Tableau d’entiers dynamique utilisé pour les collections de numéros d’objets de contenu facultatif |
TPdfOptionalContentStringArray | Tableau AnsiString dynamique utilisé pour les collections de noms PDF |
TPdfOptionalContentWideStringArray | Tableau WideString dynamique utilisé pour le texte de contenu facultatif décodé |
TPdfOptionalContentRadioGroup | Un groupe mutuellement exclusif représenté par GroupObjectNumbers |
TPdfOptionalContentRadioGroups | Tableau dynamique de valeurs TPdfOptionalContentRadioGroup |
TPdfOptionalContentGroup | Enregistrement OCG avec ObjectNumber, Generation, Name, Intents, ViewState, PrintState, ExportState, PageElementSubtype, Language, LanguagePreferred, UserType, UserNames, HasZoomRange, MinimumZoom, MaximumZoom, EffectiveVisible, Locked et RadioGroupIndex |
TPdfOptionalContentGroups | Tableau dynamique de valeurs TPdfOptionalContentGroup |
TPdfOptionalContentConfiguration | Enregistrement de configuration avec ObjectNumber, Generation, Name, Creator, BaseState, Intents, OnGroupObjectNumbers, OffGroupObjectNumbers, LockedGroupObjectNumbers, OrderGroupObjectNumbers, RadioGroups et HasAutomaticState |
TPdfOptionalContentConfigurations | Tableau dynamique de valeurs TPdfOptionalContentConfiguration |
TPdfOptionalContentMembership | Enregistrement OCMD avec ObjectNumber, Generation, GroupObjectNumbers, Policy, VisibilityExpression et EffectiveVisible |
TPdfOptionalContentMemberships | Tableau dynamique de valeurs TPdfOptionalContentMembership |
TPdfOptionalContentInventory | Résultat d’inspection avec Usage, SelectedConfigurationIndex, Groups, Configurations, Memberships, Succeeded et ErrorMessage |
TPdfOptionalContentStateChange | État Visible demandé pour un GroupObjectNumber |
TPdfOptionalContentStateChanges | Tableau dynamique de valeurs TPdfOptionalContentStateChange |
TPdfOptionalContentConfigureOptions | Configuration et usage sélectionnés plus contrôles DisableAutomaticState et EnforceRadioGroups |
TPdfOptionalContentConfigureReport | Résultat de configuration avec SourceByteCount, OutputByteCount, GroupCount, ChangedGroupCount, UpdatedUsageStateCount, SelectedConfigurationIndex, RemovedAutomaticState, Succeeded et ErrorMessage |
TPdfSanitiseOptions | Contrôles indépendants StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, StripAcroForm, StripMetadata et RemoveUnreachable |
TPdfSanitiseReport | Résultat d’assainissement avec SourceByteCount, OutputByteCount, StrippedEntryCount, PrunedObjectCount, le PruneReport imbriqué, Succeeded et ErrorMessage |
TPdfObjectGraphInspectOptions | Borne l’export JSON avec MaxObjects, MaxDepth, MaxOutputBytes, MaxStringBytes et IncludeStreamDigests |
TPdfObjectGraphReport | Résultat partagé d’export et de correctif avec SourceByteCount, OutputByteCount, ObjectCount, ExportedObjectCount, PatchedObjectCount, AppliedOperationCount, Truncated, Succeeded et ErrorMessage |
TPdfObjectPatchOperationKind | Actions de correctif popSet et popRemove |
TPdfObjectPatchValueKind | Types de valeurs povNull, povBoolean, povInteger, povReal, povName, povTextString et povReference |
TPdfObjectPatchValue | Valeur étiquetée avec Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber et ReferenceGeneration |
TPdfObjectPatchOperation | Une opération avec Kind, ObjectNumber, Generation, Key et Value |
TPdfObjectPatchOperations | Tableau dynamique de valeurs TPdfObjectPatchOperation |
TPdfTreeEditor, TPdfOutlineEditor et GraftPdfAcroForm rejettent les entrées chiffrées car leurs sérialiseurs autonomes n’héritent pas des paramètres de sécurité du document, et tous les flux sources et de destination doivent rester adressables pendant l’enregistrement vérifiéGraftPdfAcroForm rejette XFA, les références orphelines, les pages de widgets non mappées, les correspondances de pages dupliquées et les collisions de ressources par défaut ; les destinations signées exigent une autorisation expliciteTPdf de plus haut niveau exposent une autorisation explicite là où une entrée signée peut être acceptéePatchPdfObjectGraph refuse les opérations dupliquées, les objets manquants, les clés de dictionnaire mal formées ou dupliquées, les clés de filtre et de longueur de flux protégées et les cibles de références manquantesAppendPdfDirtyRevision exige des références de catalogue correspondantes entre baseline et sortie précédente et ne peut encoder un objet indirect qui a été libéréSanitiseActiveContentPdfStream exige trois flux adressables distincts lorsque RemoveUnreachable=TrueTPdfOutlineEditor.SetUri remplace une destination par une action URI UTF-8 et encode correctement les délimiteurs littéraux ; la vérification après enregistrement ignore l’état développé des feuilles, le PDF n’y enregistrant pas de Count de branche
La surcharge de GraftPdfAcroForm avec options accepte pagcpReject, pagcpRename, pagcpNamespace et la réunion des champs terminaux de texte/choix compatibles, avec élagage des widgets sélectionnés, ressources isolées, apparences et ordre de calcul ; consultez FPdfFormMerge pour les politiques et l’intégration transactionnelle
TPdfAcroFormGraftOptions.NamespacePrefix nomme le parent inséré par la politique d’espace de noms ; TPdfAcroFormCollisionPolicy.pagcpMergeCompatible réunit les champs terminaux de texte ou de choix compatibles pris en charge
TPdfAcroFormGraftReport.FilteredFieldCount et TPdfAcroFormGraftReport.FilteredWidgetCount comptent les entrées source retirées par le filtrage des pages ; TPdfAcroFormGraftReport.ResourceRenameCount compte les noms de ressources par défaut isolés et TPdfAcroFormGraftReport.MergedFieldCount les champs compatibles réunis à un propriétaire existant
CapturePdfNavigation et WritePdfNavigation capturent et réassocient les destinations nommées et annotations de lien selon une correspondance explicite des pages propriétaires ; consultez FPdfMerge pour les clés brutes, paramètres de destination, limites et transactions
TPdfNavigationNamedDestination= record
// Keep the original PDF string bytes, including a UTF-16 BOM when present
NameKey: AnsiString;
// Absolute one-based page number; zero denotes an unresolved target
PageNumber: Integer;
// Exact destination mode and parameters, including null values
DestinationSuffix: AnsiString;
end;
TPdfNavigationNamedDestinations= array of TPdfNavigationNamedDestination;
TPdfNavigationPageLink= record
// Owner page is one-based; annotation and link-only ordinals are zero-based
PageNumber, AnnotationIndex, LinkIndex: Integer;
HasDestination, HasGotoAction: Boolean;
DestinationPageNumber, ActionPageNumber: Integer;
DestinationSuffix, ActionSuffix: AnsiString;
end;
TPdfNavigationPageLinks= array of TPdfNavigationPageLink;
ReadPdfActiveObjects renvoie les dernières valeurs actives avec leurs numéros de génération exacts et la révision active du catalogue, en résolvant les tables xref classiques, flux xref, révisions incrémentales et membres des flux d’objets compressés
Body exclut l’en-tête d’objet indirect et endobj ; les flux ordinaires gardent leur dictionnaire et charge encodée, les membres compressés sont matérialisés comme valeurs ordinaires, et l’infrastructure xref/flux d’objets est exclue du résultat
La position source est restaurée ; un échec renvoie une collection vide avec diagnostics ; les entrées chiffrées sont refusées, mais les signatures peuvent être inspectées sans altérer leurs octets
Les limites par défaut sont de 256 MiB de source, 64 MiB par corps matérialisé, 256 MiB de corps cumulés, 64 MiB par flux d’objets décodé, 256 MiB de caches décodés cumulés et 1,000,000 emplacements de numéros d’objet
Les limites de corps sont vérifiées avant chaque copie et comptent aussi les corps d’infrastructure temporaires ; les limites distinctes des caches décodés arrêtent le décodage avant dépassement du budget de l’appelant
Ces limites concernent les tampons logiques, pas toute la mémoire du processus : copies source, flux de préparation des objets directs, tampons de parcours, mémoire de travail du décodeur et métadonnées demandent des allocations bornées supplémentaires ; les tampons peuvent dupliquer des corps conservés
type
TPdfActiveObject = record
ObjectNumber, Generation: Integer;
Body: TBytes;
end;
TPdfActiveObjects = array of TPdfActiveObject;
TPdfActiveObjectReadOptions = record
MaxSourceBytes, MaxObjectBytes, MaxTotalObjectBytes: Int64;
MaxDecodedObjectStreamBytes, MaxTotalDecodedObjectStreamBytes: Int64;
MaxObjects: Integer;
class function Default: TPdfActiveObjectReadOptions; static;
end;
function ReadPdfActiveObjects(Source: TStream;
const Options: TPdfActiveObjectReadOptions; out Objects: TPdfActiveObjects;
out Revision: TPdfSparseRevisionInfo; out ErrorText: string): Boolean;