PDFium Delphi Component Docs

Unité FPdfCompress

Unité : FPdfCompress
Réécriture PDF au niveau des flux, compression, normalisation de contenu, configuration du contenu facultatif, assainissement, accès au graphe d’objets, révisions incrémentales et inspection de version utilisés par le pipeline d’enregistrement de TPdf

Description

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

Syntaxe

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;

Fonctions et procédures

Fonction ou procédureDescription
TPdfTreeEditor.TryLoadCharge 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.LoadCharge un arbre et lève une exception avec l’erreur de validation lorsque la structure n’est pas sûre à modifier
TPdfTreeEditor.UpsertName and UpsertNumberInsè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 ClearRetirent les entrées sélectionnées ou vident l’arbre avant le rééquilibrage déterministe
TPdfTreeEditor.ValidateVé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.BuildBalancedObjectsConstruit 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.SaveIncrementalAjoute 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 LoadLisent 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 MoveModifient 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 ClearColorMettent à jour la présentation visible des signets sans abandonner les entrées de dictionnaire d’éléments non reconnues
TPdfOutlineEditor.RetargetAssigne une destination de page explicite en base 1 comme données /Dest directes ou une action GoTo avec un suffixe de destination validé
TPdfOutlineEditor.ApplyPageMapConsomme 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.SaveIncrementalReconstruit 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.CreateLie des correspondances réutilisables d’objets indirects source-vers-destination à une identité source fournie par l’appelant
TPdfCrossDocumentGraftMap.Add and TryResolveStockent 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
GraftPdfAcroFormImporte 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
CompressPdfStreamCompresse en Flate les flux non compressés éligibles et reconstruit la structure PDF sérialisée
LinearizePdfStreamRé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
PackPdfObjectStreamsRegroupe 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
NormalizePdfDocumentContentNormalise chaque séquence de contenu de page avec TPdfContentNormalizeOptions et renvoie un TPdfContentNormalizeReport au niveau du document
PruneUnreachablePdfStreamRéé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
PruneUnusedPdfResourcesAnalyse 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
RecompressFlatePdfStreamDécode et recompresse les flux FlateDecode accessibles lorsque les deux seuils de gain demandés sont atteints
ExternaliseInlineImagesPdfStreamDé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
ReproduciblePdfStreamProduit une sortie déterministe à révision unique en élaguant les objets inaccessibles, en retirant les horodatages Info et en omettant le /ID source
AppendPdfDirtyRevisionCompare 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
AppendEncryptedPdfDirtyRevisionAjoute les objets indirects modifiés ou nouveaux sous le contexte de chiffrement hérité et valide ou renouvelle l’authentification de révision
ApplyDefaultOpenActionInjecte 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
InspectOptionalContentPdfStreamLit les groupes, configurations, appartenances, métadonnées d’usage et visibilité effective du contenu facultatif dans un inventaire
ConfigureOptionalContentPdfStreamApplique la visibilité de groupe demandée à une configuration sélectionnée et écrit les mises à jour de contenu facultatif requises
SanitiseActiveContentPdfStreamRetire 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
ExportPdfObjectGraphSérialise des données bornées d’objets indirects en JSON pdf-object-graph-v1 avec empreintes SHA-256 de flux encodés facultatives
PatchPdfObjectGraphDé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
PostProcessSavedPdfExé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
RepairSubsetToUnicodeCMapsRéé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
ReadPdfVersionInfoLit l’en-tête, la substitution de catalogue, la version principale effective et les informations d’extension de développeur Adobe
ReadPdfSparseRevisionInfoLit 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
ComposePdfSparseUpdateIdFormate 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
ReadPdfSparseCatalogSubDictLit un sous-dictionnaire de catalogue direct ou indirect, tel que MarkInfo ou ViewerPreferences, via l’index d’objets partiel
ReadPdfSparsePageDictionariesParcourt 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.CreateConstruit 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.DestroyLibère les tampons d’index conservés sans libérer le flux source détenu par l’appelant
TPdfSparseDictionaryReader.ReadDictionaryRé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.ReadLatestDictionaryRé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.ReadDecodedStreamLit et décode un flux direct non filtré ou un unique flux FlateDecode en appliquant MaximumDecodedBytes
TPdfOptionalContentConfigureOptions.DefaultSélectionne la configuration 0 et l’usage View, retire les règles d’état automatique et impose les groupes radio
TPdfSanitiseOptions.DefaultActive 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.DefaultRenvoie des limites de 100000 objets, profondeur 32, sortie de 64 MiB, chaînes de 1 MiB et empreintes de flux activées

Types

TypeDescription
TPdfTreeKindSélectionne un NameTree trié par octets avec ptkName ou un NumberTree signé 64 bits avec ptkNumber
TPdfTreeObjectReferenceIdentifie un nœud d’arbre indirect par ObjectNumber et Generation
TPdfTreeEntryStocke NameKey ou NumberKey plus un objet PDF complet normalisé dans RawValue ; TPdfTreeEntries est son tableau dynamique
TPdfTreeEditOptionsBorne MaxEntries, MaxNodes, MaxDepth, MaxLeafEntries et MaxKidsPerNode ; Default fournit des limites de production conservatrices
TPdfTreeValidationIssueUn problème portant des preuves d’objet et un Message de diagnostic ; TPdfTreeValidationIssues est son tableau dynamique
TPdfTreeValidationIssueKindValeurs de problèmes ptviInvalidRoot, ptviUnreadableNode, ptviCycle, ptviDepthLimit, ptviNodeLimit, ptviEntryLimit, ptviInvalidNodeShape, ptviInvalidKey, ptviInvalidValue, ptviInvalidLimits, ptviDuplicateKey, ptviUnsortedKey et ptviDeadlineExceeded
TPdfTreeValidationReportRapporte NodeCount, EntryCount, MaximumDepth, Issues, les preuves d’objet, l’état de succès et le texte d’erreur
TPdfTreeSerializedObjectContient 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
TPdfTreeEditorModèle d’arbre trié mutable qui préserve les valeurs PDF opaques et émet une hiérarchie indirecte équilibrée
TPdfOutlineStyleFlagValeurs de présentation posItalic et posBold ; TPdfOutlineStyle est leur ensemble
TPdfOutlineObjectReferenceIdentifie un objet de signets conservé par numéro d’objet et génération
TPdfOutlineItemStocke 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
TPdfOutlineEditOptionsBorne MaxItems et la profondeur de hiérarchie, avec des valeurs par défaut conservatrices fournies par Default
TPdfOutlineValidationIssueKindValeurs de problèmes poviNone, poviInvalidCatalog, poviUnreadableItem, poviCycle, poviDepthLimit, poviItemLimit, poviInvalidParent, poviInvalidSibling, poviMissingTitle, poviInvalidDestination, poviInvalidPageMap, poviEncryptedInput, poviWriteFailure et poviVerificationFailure
TPdfOutlineValidationReportRapporte IssueKind, les preuves d’objet, ItemCount, MaximumDepth, RemappedDestinationCount, RemovedDanglingItemCount, l’état de succès et le texte d’erreur
TPdfOutlineEditorModèle de signets mutable en profondeur d’abord avec remappage vérifié du plan de pages et persistance incrémentale
TPdfGraftObjectReferenceIdentifie un objet indirect source ou destination par numéro d’objet et génération exacts
TPdfCrossDocumentGraftMapCorrespondance 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
TPdfGraftPageMappingMappe un SourcePageNumber en base 1 vers un DestinationPageNumber en base 1 pour les mises à jour /P de widget et /Annots de page
TPdfAcroFormCollisionPolicySélectionne pagcpReject ou pagcpRename lorsqu’un titre de champ racine source entre en collision avec un titre de champ racine de destination
TPdfAcroFormGraftOptionsContrôle CollisionPolicy, RenamePrefix, les budgets d’objets et de récursion et AllowSignedDestination
TPdfAcroFormGraftReportRapporte SourceFieldCount, GraftedFieldCount, ReusedObjectCount, DestinationFieldCount, MappedPageCount, GraftedObjectCount, RenamedFieldCount, la taille de sortie, l’état de succès et le texte d’erreur
TPdfVersionInfoRapport de version avec HeaderVersion, CatalogVersion, CoreVersion, AdobeBaseVersion, AdobeExtensionLevel, HasCatalogVersion, HasDeveloperExtensions et HasAdobeExtension
TPdfSparseRevisionInfoInstantané de dernière révision avec RootObjectNumber, RootGeneration, InfoObjectNumber, InfoGeneration, SizeValue, MaximumObjectNumber, PreviousXrefOffset, UsesXrefStream, HasEncrypt, HasDocumentId, HasTaggedStructure, FirstDocumentId, CatalogDictionary et InfoDictionary
TPdfSparseUpdateObjectUne entrée de révision avec ObjectNumber, Generation et un corps Data complet portant les octets N G obj ... endobj
TPdfSparseUpdateObjectsTableau dynamique d’entrées TPdfSparseUpdateObject ajoutées par AppendPdfSparseUpdate
TPdfSparsePageDictionaryUn objet de page actif avec ObjectNumber, Generation et des octets de Dictionary bornés
TPdfSparsePageDictionariesTableau dynamique de dictionnaires de pages actifs dans l’ordre de l’arbre de pages
TPdfSparseDictionaryReaderProprié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
TPdfPruneReportRésultat d’accessibilité avec SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, Succeeded et ErrorMessage
TPdfResourcePruneReportRé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
TPdfDedupReportRésultat de déduplication avec SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, MergedFontCount, MergedImageCount, MergedFormXObjectCount, Succeeded et ErrorMessage
TPdfFlateRecompressOptionsSeuils de remplacement MinSavingBytes et MinSavingRatio
TPdfFlateRecompressReportRésultat de recompression avec SourceByteCount, OutputByteCount, RecompressedCount, SkippedCount, FailedCount, OriginalStreamBytes, RecompressedStreamBytes, Succeeded et ErrorMessage
TPdfInlineImageExternaliseOptionsContient SkipUnsafePages, qui préserve les pages dont les frontières d’images en ligne ne peuvent pas être résolues
TPdfInlineImageExternaliseReportRésultat d’externalisation avec SourceByteCount, OutputByteCount, ExternalisedCount, SkippedPageCount, FailedCount, CreatedXObjectCount, Succeeded et ErrorMessage
TPdfReproducibleReportRésultat de réécriture déterministe avec SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, StrippedTimestampCount, Succeeded et ErrorMessage
TPdfPageLabelStyleStyles de numérotation plsNone, plsDecimal, plsUppercaseRoman, plsLowercaseRoman, plsUppercaseLetters et plsLowercaseLetters
TPdfPageLabelRangeUne plage d’étiquettes avec StartPageIndex en base 0, Style, Prefix et StartNumber
TPdfPageLabelRangesTableau dynamique de valeurs TPdfPageLabelRange
TPdfPageLabelReportRésultat de réécriture d’étiquettes avec SourceByteCount, OutputByteCount, AppliedRangeCount, ReplacedExistingLabels, Succeeded et ErrorMessage
TPdfOptionalContentUsageContextes 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
TPdfOptionalContentMembershipPolicyPolitiques d’appartenance ocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff et ocmpUnknown
TPdfOptionalContentIntegerArrayTableau d’entiers dynamique utilisé pour les collections de numéros d’objets de contenu facultatif
TPdfOptionalContentStringArrayTableau AnsiString dynamique utilisé pour les collections de noms PDF
TPdfOptionalContentWideStringArrayTableau WideString dynamique utilisé pour le texte de contenu facultatif décodé
TPdfOptionalContentRadioGroupUn groupe mutuellement exclusif représenté par GroupObjectNumbers
TPdfOptionalContentRadioGroupsTableau dynamique de valeurs TPdfOptionalContentRadioGroup
TPdfOptionalContentGroupEnregistrement OCG avec ObjectNumber, Generation, Name, Intents, ViewState, PrintState, ExportState, PageElementSubtype, Language, LanguagePreferred, UserType, UserNames, HasZoomRange, MinimumZoom, MaximumZoom, EffectiveVisible, Locked et RadioGroupIndex
TPdfOptionalContentGroupsTableau dynamique de valeurs TPdfOptionalContentGroup
TPdfOptionalContentConfigurationEnregistrement de configuration avec ObjectNumber, Generation, Name, Creator, BaseState, Intents, OnGroupObjectNumbers, OffGroupObjectNumbers, LockedGroupObjectNumbers, OrderGroupObjectNumbers, RadioGroups et HasAutomaticState
TPdfOptionalContentConfigurationsTableau dynamique de valeurs TPdfOptionalContentConfiguration
TPdfOptionalContentMembershipEnregistrement OCMD avec ObjectNumber, Generation, GroupObjectNumbers, Policy, VisibilityExpression et EffectiveVisible
TPdfOptionalContentMembershipsTableau dynamique de valeurs TPdfOptionalContentMembership
TPdfOptionalContentInventoryRésultat d’inspection avec Usage, SelectedConfigurationIndex, Groups, Configurations, Memberships, Succeeded et ErrorMessage
TPdfOptionalContentStateChangeÉtat Visible demandé pour un GroupObjectNumber
TPdfOptionalContentStateChangesTableau dynamique de valeurs TPdfOptionalContentStateChange
TPdfOptionalContentConfigureOptionsConfiguration et usage sélectionnés plus contrôles DisableAutomaticState et EnforceRadioGroups
TPdfOptionalContentConfigureReportRésultat de configuration avec SourceByteCount, OutputByteCount, GroupCount, ChangedGroupCount, UpdatedUsageStateCount, SelectedConfigurationIndex, RemovedAutomaticState, Succeeded et ErrorMessage
TPdfSanitiseOptionsContrôles indépendants StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, StripAcroForm, StripMetadata et RemoveUnreachable
TPdfSanitiseReportRésultat d’assainissement avec SourceByteCount, OutputByteCount, StrippedEntryCount, PrunedObjectCount, le PruneReport imbriqué, Succeeded et ErrorMessage
TPdfObjectGraphInspectOptionsBorne l’export JSON avec MaxObjects, MaxDepth, MaxOutputBytes, MaxStringBytes et IncludeStreamDigests
TPdfObjectGraphReportRésultat partagé d’export et de correctif avec SourceByteCount, OutputByteCount, ObjectCount, ExportedObjectCount, PatchedObjectCount, AppliedOperationCount, Truncated, Succeeded et ErrorMessage
TPdfObjectPatchOperationKindActions de correctif popSet et popRemove
TPdfObjectPatchValueKindTypes de valeurs povNull, povBoolean, povInteger, povReal, povName, povTextString et povReference
TPdfObjectPatchValueValeur étiquetée avec Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber et ReferenceGeneration
TPdfObjectPatchOperationUne opération avec Kind, ObjectNumber, Generation, Key et Value
TPdfObjectPatchOperationsTableau dynamique de valeurs TPdfObjectPatchOperation

Sécurité et limites

TPdfOutlineEditor.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

Rapports de collision AcroForm

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

Enregistrements de capture de navigation

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;

Lecture des valeurs d’objet actives

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;

Voir aussi

FPdfContentNormalize, TPdf.SaveAs, TPdf.SaveAsNormalizedContent, TPdf.InspectOptionalContent, TPdf.ObjectGraph, ReadPdfVersionInfo