PDFium Delphi Component Docs

Unidad FPdfCompress

Unidad: FPdfCompress
Reescritura y compresión de PDF a nivel de flujo, normalización de contenido, configuración de contenido opcional, limpieza, acceso al grafo de objetos, revisiones incrementales e inspección de versiones para el guardado de TPdf

Descripción

FPdfCompress contiene los transformadores de flujo públicos usados después de que PDFium serializa un documento, además de registros que configuran cada transformador e informan su resultado

Los auxiliares de reescritura completa materializan el grafo de objetos activo, preservan o reconstruyen deliberadamente las referencias cruzadas y rechazan las entradas que no se pueden reescribir con seguridad; los procedimientos basados en informes devuelven los fallos mediante Succeeded y ErrorMessage

La mayoría de las aplicaciones usan los métodos correspondientes de guardado, inspección o grafo de objetos de TPdf, mientras que los procedimientos de la unidad siguen disponibles para quienes ya poseen flujos de PDF serializados

Sintaxis

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;

Funciones y procedimientos

Función o procedimientoDescripción
TPdfTreeEditor.TryLoadCarga y valida un NameTree o NumberTree indirecto mediante búsqueda dispersa de generación exacta, devolviendo evidencia estructural sin generar excepciones por entrada mal formada
TPdfTreeEditor.LoadCarga un árbol y genera una excepción con el error de validación cuando la estructura no es segura para editar
TPdfTreeEditor.UpsertName and UpsertNumberInserta o reemplaza una entrada ordenada conservando todo su valor PDF sin procesar, incluidas las referencias indirectas y los objetos compuestos
TPdfTreeEditor.RemoveName, RemoveNumber, and ClearElimina entradas seleccionadas o vacía el árbol antes de equilibrarlo de forma determinista
TPdfTreeEditor.ValidateComprueba el orden de las claves, las claves duplicadas, los valores sin procesar, los límites de entradas y las invariantes actuales del editor
TPdfTreeEditor.BuildBalancedObjectsConstruye nodos hoja e internos acotados con /Limits exactos, conserva la identidad de la raíz y reutiliza referencias indirectas de nodos cargados compatibles cuando es posible
TPdfTreeEditor.SaveIncrementalAnexa los objetos balanceados como una revisión incremental verificada y recarga de forma independiente el resultado antes de informar éxito
TPdfOutlineEditor.TryLoad and LoadLee la jerarquía de marcadores con búsqueda dispersa de generaciones exactas, valida enlaces de padres y hermanos, detecta ciclos y conserva los destinos y acciones no compatibles como entradas opacas del diccionario
TPdfOutlineEditor.Add, Delete, and MoveEdita subárboles completos de marcadores mediante identificadores estables, manteniendo el orden de hermanos del recorrido en profundidad
TPdfOutlineEditor.SetTitle, SetStyle, SetExpanded, SetColor, and ClearColorActualiza la presentación de los marcadores sin descartar las entradas desconocidas de sus diccionarios
TPdfOutlineEditor.RetargetAsigna un destino explícito de página basado en uno como datos /Dest directos o como una acción GoTo con un sufijo de destino validado
TPdfOutlineEditor.ApplyPageMapConsume el mapeo de destinos basado en uno producido por la validación del plan de páginas, actualiza los destinos explícitos supervivientes y elimina los subárboles colgantes o los informa
TPdfOutlineEditor.SaveIncrementalReconstruye las entradas de raíz, padre, hermano, hijo, contador, estilo, color y destino, anexa una revisión incremental y recarga de forma independiente el resultado semántico antes de informar éxito
TPdfCrossDocumentGraftMap.CreateVincula mapeos reutilizables de objetos indirectos de origen a destino a una identidad de origen suministrada por quien llama
TPdfCrossDocumentGraftMap.Add and TryResolveAlmacena y resuelve pares exactos de número de objeto y generación, acepta repeticiones idénticas y rechaza destinos contradictorios
GraftPdfAcroFormImporta jerarquías de campos, widgets, apariencias, orden de cálculo, recursos predeterminados, acciones y valores en páginas de destino mapeadas, anexa una revisión incremental dispersa y recarga de forma independiente el resultado antes de informar éxito
CompressPdfStreamComprime con Flate los flujos sin comprimir elegibles y reconstruye la estructura serializada del PDF
LinearizePdfStreamReordena y renumera el grafo de objetos activo en un diseño de PDF linealizado con datos de sugerencia de primera página y de objetos compartidos
PackPdfObjectStreamsEmpaqueta los objetos que no son flujos elegibles en grupos ObjStm acotados y escribe un flujo de referencia cruzada; ambos límites de agrupación deben ser positivos
NormalizePdfDocumentContentNormaliza cada secuencia de contenido de página con TPdfContentNormalizeOptions y devuelve un TPdfContentNormalizeReport a nivel de documento
PruneUnreachablePdfStreamReescribe solo los objetos alcanzables desde el catálogo en una revisión clásica, preservando los números de objeto y generaciones supervivientes
PruneUnusedPdfResourcesExamina los operadores de contenido decodificados en ámbitos de página, heredados, Form XObject, patrón, apariencia y recursos anidados, elimina solo los nombres de recursos no usados, anexa una revisión dispersa y poda los objetos que quedaron inalcanzables
DeduplicateResourcesPdfStreamPoda los objetos inalcanzables y fusiona subgrafos de fuentes, imágenes y Form XObject idénticos byte a byte
RecompressFlatePdfStreamDecodifica y recomprime los flujos FlateDecode alcanzables cuando se cumplen ambos umbrales de ahorro solicitados
ExternaliseInlineImagesPdfStreamMueve los bloques de imágenes en línea a XObjects de imagen, actualiza los recursos de página y reescribe los flujos de contenido afectados
ReproduciblePdfStreamProduce una salida determinista de revisión única podando los objetos inalcanzables, eliminando las marcas de tiempo de Info y omitiendo el /ID del origen
AppendPdfDirtyRevisionCompara las instantáneas semánticas de línea base y actuales, anexa los objetos indirectos cambiados o nuevos a la salida previa e informa los conteos anexados
AppendEncryptedPdfDirtyRevisionAnexa los objetos indirectos cambiados o nuevos bajo el contexto de cifrado heredado y valida o renueva la autenticación de la revisión
ApplyDefaultOpenActionInyecta una open action Fit-Height de primera página cuando no existe ninguna y la versión de PDF seleccionada lo permite, usando ventanas de flujo acotadas y búsqueda diferida dispersa en revisiones clásicas, de xref-stream, híbridas y de object-stream
PageLabelledPdfStreamEscribe un árbol numérico /PageLabels del catálogo a partir de rangos basados en cero y opcionalmente reemplaza un árbol existente, usando ventanas de flujo acotadas y búsqueda dispersa del catálogo en la ruta xref normal
InspectOptionalContentPdfStreamLee los grupos de contenido opcional, las configuraciones, las membresías, los metadatos de uso y la visibilidad efectiva en un inventario
ConfigureOptionalContentPdfStreamAplica la visibilidad de grupo solicitada a una configuración seleccionada y escribe las actualizaciones de contenido opcional requeridas
SanitiseActiveContentPdfStreamElimina las entradas de contenido activo seleccionadas del catálogo y del trailer mediante búsqueda dispersa y copia acotada de rangos, y luego puede podar los objetos que quedaron inalcanzables por esa eliminación; la sobrecarga con espacio de trabajo acepta almacenamiento acotado o en disco propiedad de quien llama para la entrada de la poda
ExportPdfObjectGraphSerializa datos acotados de objetos indirectos como JSON pdf-object-graph-v1 con resúmenes SHA-256 de flujos codificados opcionales
PatchPdfObjectGraphEstablece o elimina entradas de diccionario de nivel superior por identidad de objeto y anexa una revisión incremental verificada
PostProcessSavedPdfEjecuta el manejo de la open action predeterminada, la normalización según la versión y la reparación nativa incremental de xref-stream; la sobrecarga con tres espacios de trabajo distintos y posicionables permite a quien llama aplicar su propia política de almacenamiento acotado o en disco
RepairSubsetToUnicodeCMapsReescrive los CMaps ToUnicode de fuentes subset cuyos elementos de arreglo contradicen sus entradas bfchar, usando ediciones en sitio de igual longitud (ganan los valores bfchar, un par que difiere solo en el bit alto se resuelve al punto de código menor y cualquier otro conflicto conserva el primer mapeo); los documentos sin /ToUnicode o con diseños xref-stream, hybrid u object-stream pasan intactos, y cada guardado completo no incremental de TPdf aplica la misma reparación automáticamente
ReadPdfVersionInfoLee el encabezado, la anulación del catálogo, la versión core efectiva y la información de extensiones de desarrollador de Adobe
ReadPdfSparseRevisionInfoLee datos acotados de la última revisión, bytes del catálogo, generaciones de objetos, estilo de xref, estado de cifrado, identificadores de documento y evidencia de estructura etiquetada mediante el índice disperso de objetos
ComposePdfSparseUpdateIdFormatea un /ID de trailer incremental preservando los identificadores de quien llama o del origen y derivando los valores faltantes mediante un resumen de flujo acotado
ReadPdfSparseCatalogSubDictLee un subdiccionario del catálogo directo o indirecto, como MarkInfo o ViewerPreferences, mediante el índice disperso de objetos
ReadPdfSparsePageDictionariesRecorre el árbol de páginas activo mediante búsqueda dispersa clásica, de xref-stream, híbrida y de object-stream, y devuelve los diccionarios de página en orden de páginas
TPdfSparseDictionaryReader.CreateConstruye un índice disperso reutilizable sobre un flujo de origen propiedad de quien llama e informa el éxito de la inicialización mediante Valid; el origen debe permanecer vivo mientras se usa el lector
TPdfSparseDictionaryReader.DestroyLibera los búferes del índice retenido sin liberar el flujo de origen propiedad de quien llama
TPdfSparseDictionaryReader.ReadDictionaryResuelve un número de objeto y generación exactos mediante el índice retenido y devuelve los bytes acotados del diccionario activo
TPdfSparseDictionaryReader.ReadLatestDictionaryResuelve la entrada xref activa de un número de objeto, devuelve su generación y lee su diccionario mediante el índice retenido
TPdfSparseDictionaryReader.ReadDecodedStreamLee y decodifica un flujo directo sin filtrar o con un único FlateDecode mientras hace cumplir MaximumDecodedBytes
TPdfOptionalContentConfigureOptions.DefaultSelecciona la configuración 0 y el uso View, elimina las reglas de estado automático y hace cumplir los grupos de radio
TPdfSanitiseOptions.DefaultHabilita la eliminación de open actions, acciones del catálogo, árboles de nombres, archivos asociados y objetos inalcanzables, preservando AcroForm y los metadatos
TPdfObjectGraphInspectOptions.DefaultDevuelve límites de 100000 objetos, profundidad 32, 64 MiB de salida, 1 MiB de cadenas y resúmenes de flujos habilitados

Tipos

TipoDescripción
TPdfTreeKindSelecciona un NameTree ordenado por bytes con ptkName o un NumberTree con signo de 64 bits con ptkNumber
TPdfTreeObjectReferenceIdentifica un nodo de árbol indirecto por ObjectNumber y Generation
TPdfTreeEntryAlmacena NameKey o NumberKey más un objeto PDF completo normalizado en RawValue; TPdfTreeEntries es su arreglo dinámico
TPdfTreeEditOptionsAcota MaxEntries, MaxNodes, MaxDepth, MaxLeafEntries y MaxKidsPerNode; Default suministra límites de producción conservadores
TPdfTreeValidationIssueUn problema que lleva evidencia del objeto y un Message de diagnóstico; TPdfTreeValidationIssues es su arreglo dinámico
TPdfTreeValidationIssueKindValores de problema ptviInvalidRoot, ptviUnreadableNode, ptviCycle, ptviDepthLimit, ptviNodeLimit, ptviEntryLimit, ptviInvalidNodeShape, ptviInvalidKey, ptviInvalidValue, ptviInvalidLimits, ptviDuplicateKey, ptviUnsortedKey y ptviDeadlineExceeded
TPdfTreeValidationReportInforma NodeCount, EntryCount, MaximumDepth, Issues, evidencia de objetos, estado de éxito y texto de error
TPdfTreeSerializedObjectContiene una referencia de nodo balanceada, los datos completos del objeto indirecto y si la referencia fue reutilizada
TPdfTreeEditorModelo de árbol ordenado mutable que preserva los valores PDF opacos y emite una jerarquía indirecta balanceada
TPdfOutlineStyleFlagValores de presentación posItalic y posBold; TPdfOutlineStyle es su conjunto
TPdfOutlineObjectReferenceIdentifica un objeto de esquema retenido por número de objeto y generación
TPdfOutlineItemAlmacena identidad estable, identidad del padre, título, destino explícito, forma de acción, IsOpen, estilo, HasColor, ColorRed, ColorGreen, ColorBlue y la referencia del objeto retenido; TPdfOutlineItems es su arreglo dinámico
TPdfOutlineEditOptionsAcota MaxItems y la profundidad de la jerarquía, con valores predeterminados conservadores suministrados por Default
TPdfOutlineValidationIssueKindValores de problema poviNone, poviInvalidCatalog, poviUnreadableItem, poviCycle, poviDepthLimit, poviItemLimit, poviInvalidParent, poviInvalidSibling, poviMissingTitle, poviInvalidDestination, poviInvalidPageMap, poviEncryptedInput, poviWriteFailure y poviVerificationFailure
TPdfOutlineValidationReportInforma IssueKind, evidencia de objetos, ItemCount, MaximumDepth, RemappedDestinationCount, RemovedDanglingItemCount, estado de éxito y texto de error
TPdfOutlineEditorModelo de esquema mutable en profundidad con remapeo verificado del plan de páginas y persistencia incremental
TPdfGraftObjectReferenceIdentifica un objeto indirecto de origen o destino por número de objeto y generación exactos
TPdfCrossDocumentGraftMapMapa de objetos reutilizable vinculado a la identidad de origen, respaldado por TPdfGraftMapEntries, que preserva ciclos y referencias compartidas y revierte las entradas agregadas por un injerto fallido
TPdfGraftPageMappingMapea SourcePageNumber basado en uno a DestinationPageNumber basado en uno para las actualizaciones de /P de widget y de /Annots de página
TPdfAcroFormCollisionPolicySelecciona pagcpReject o pagcpRename cuando un título de campo raíz de origen colisiona con un título de campo raíz de destino
TPdfAcroFormGraftOptionsControla CollisionPolicy, RenamePrefix, los presupuestos de objetos y de recursión y AllowSignedDestination
TPdfAcroFormGraftReportInforma SourceFieldCount, GraftedFieldCount, ReusedObjectCount, DestinationFieldCount, MappedPageCount, GraftedObjectCount, RenamedFieldCount, el tamaño de la salida, el estado de éxito y el texto de error
TPdfVersionInfoInforme de versión con HeaderVersion, CatalogVersion, CoreVersion, AdobeBaseVersion, AdobeExtensionLevel, HasCatalogVersion, HasDeveloperExtensions y HasAdobeExtension
TPdfSparseRevisionInfoInstantánea de la última revisión con RootObjectNumber, RootGeneration, InfoObjectNumber, InfoGeneration, SizeValue, MaximumObjectNumber, PreviousXrefOffset, UsesXrefStream, HasEncrypt, HasDocumentId, HasTaggedStructure, FirstDocumentId, CatalogDictionary y InfoDictionary
TPdfSparseUpdateObjectUna entrada de revisión con ObjectNumber, Generation y un cuerpo Data completo que lleva los bytes N G obj ... endobj
TPdfSparseUpdateObjectsArreglo dinámico de entradas TPdfSparseUpdateObject anexadas por AppendPdfSparseUpdate
TPdfSparsePageDictionaryUn objeto de página activo con ObjectNumber, Generation y bytes acotados de Dictionary
TPdfSparsePageDictionariesArreglo dinámico de diccionarios de página activos en orden del árbol de páginas
TPdfSparseDictionaryReaderDueño reutilizable de un índice disperso clásico, de xref-stream, híbrido y de object-stream para búsquedas repetidas de diccionarios por generación exacta sin asignaciones del tamaño del origen
TPdfPruneReportResultado de alcanzabilidad con SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, Succeeded y ErrorMessage
TPdfResourcePruneReportResultado de poda de recursos con ScannedScopeCount, UpdatedScopeCount, RemovedNameCount, RemovedObjectCount, conteos de flujos, totales de bytes, estado de éxito y texto de error
TPdfDedupReportResultado de deduplicación con SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, MergedFontCount, MergedImageCount, MergedFormXObjectCount, Succeeded y ErrorMessage
TPdfFlateRecompressOptionsUmbrales de reemplazo MinSavingBytes y MinSavingRatio
TPdfFlateRecompressReportResultado de recompreción con SourceByteCount, OutputByteCount, RecompressedCount, SkippedCount, FailedCount, OriginalStreamBytes, RecompressedStreamBytes, Succeeded y ErrorMessage
TPdfInlineImageExternaliseOptionsContiene SkipUnsafePages, que preserva las páginas cuyos límites de imágenes en línea no se pueden resolver
TPdfInlineImageExternaliseReportResultado de externalización con SourceByteCount, OutputByteCount, ExternalisedCount, SkippedPageCount, FailedCount, CreatedXObjectCount, Succeeded y ErrorMessage
TPdfReproducibleReportResultado de reescritura determinista con SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, StrippedTimestampCount, Succeeded y ErrorMessage
TPdfPageLabelStyleEstilos de numeración plsNone, plsDecimal, plsUppercaseRoman, plsLowercaseRoman, plsUppercaseLetters y plsLowercaseLetters
TPdfPageLabelRangeUn rango de etiquetas con StartPageIndex basado en cero, Style, Prefix y StartNumber
TPdfPageLabelRangesArreglo dinámico de valores TPdfPageLabelRange
TPdfPageLabelReportResultado de reescritura de etiquetas con SourceByteCount, OutputByteCount, AppliedRangeCount, ReplacedExistingLabels, Succeeded y ErrorMessage
TPdfOptionalContentUsageContextos de visibilidad ocuView, ocuPrint, ocuExport y ocuDesign
TPdfOptionalContentStateEstados por uso ocsUnspecified, ocsOn y ocsOff
TPdfOptionalContentBaseStateEstados base de configuración ocbsOn, ocbsOff y ocbsUnchanged
TPdfOptionalContentMembershipPolicyPolíticas de membresía ocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff y ocmpUnknown
TPdfOptionalContentIntegerArrayArreglo dinámico de enteros usado para colecciones de números de objeto de contenido opcional
TPdfOptionalContentStringArrayArreglo dinámico de AnsiString usado para colecciones de nombres PDF
TPdfOptionalContentWideStringArrayArreglo dinámico de WideString usado para texto de contenido opcional decodificado
TPdfOptionalContentRadioGroupUn grupo mutuamente excluyente representado por GroupObjectNumbers
TPdfOptionalContentRadioGroupsArreglo dinámico de valores TPdfOptionalContentRadioGroup
TPdfOptionalContentGroupRegistro OCG con ObjectNumber, Generation, Name, Intents, ViewState, PrintState, ExportState, PageElementSubtype, Language, LanguagePreferred, UserType, UserNames, HasZoomRange, MinimumZoom, MaximumZoom, EffectiveVisible, Locked y RadioGroupIndex
TPdfOptionalContentGroupsArreglo dinámico de valores TPdfOptionalContentGroup
TPdfOptionalContentConfigurationRegistro de configuración con ObjectNumber, Generation, Name, Creator, BaseState, Intents, OnGroupObjectNumbers, OffGroupObjectNumbers, LockedGroupObjectNumbers, OrderGroupObjectNumbers, RadioGroups y HasAutomaticState
TPdfOptionalContentConfigurationsArreglo dinámico de valores TPdfOptionalContentConfiguration
TPdfOptionalContentMembershipRegistro OCMD con ObjectNumber, Generation, GroupObjectNumbers, Policy, VisibilityExpression y EffectiveVisible
TPdfOptionalContentMembershipsArreglo dinámico de valores TPdfOptionalContentMembership
TPdfOptionalContentInventoryResultado de inspección con Usage, SelectedConfigurationIndex, Groups, Configurations, Memberships, Succeeded y ErrorMessage
TPdfOptionalContentStateChangeEstado Visible solicitado para un GroupObjectNumber
TPdfOptionalContentStateChangesArreglo dinámico de valores TPdfOptionalContentStateChange
TPdfOptionalContentConfigureOptionsConfiguración y uso seleccionados más los controles DisableAutomaticState y EnforceRadioGroups
TPdfOptionalContentConfigureReportResultado de configuración con SourceByteCount, OutputByteCount, GroupCount, ChangedGroupCount, UpdatedUsageStateCount, SelectedConfigurationIndex, RemovedAutomaticState, Succeeded y ErrorMessage
TPdfSanitiseOptionsControles independientes StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, StripAcroForm, StripMetadata y RemoveUnreachable
TPdfSanitiseReportResultado de saneamiento con SourceByteCount, OutputByteCount, StrippedEntryCount, PrunedObjectCount, el PruneReport anidado, Succeeded y ErrorMessage
TPdfObjectGraphInspectOptionsAcota la exportación JSON con MaxObjects, MaxDepth, MaxOutputBytes, MaxStringBytes e IncludeStreamDigests
TPdfObjectGraphReportResultado compartido de exportación y parche con SourceByteCount, OutputByteCount, ObjectCount, ExportedObjectCount, PatchedObjectCount, AppliedOperationCount, Truncated, Succeeded y ErrorMessage
TPdfObjectPatchOperationKindAcciones de parche popSet y popRemove
TPdfObjectPatchValueKindTipos de valor povNull, povBoolean, povInteger, povReal, povName, povTextString y povReference
TPdfObjectPatchValueValor etiquetado con Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber y ReferenceGeneration
TPdfObjectPatchOperationUna operación con Kind, ObjectNumber, Generation, Key y Value
TPdfObjectPatchOperationsArreglo dinámico de valores TPdfObjectPatchOperation

Seguridad y límites

TPdfOutlineEditor.SetUri reemplaza un destino con una acción URI UTF-8 y codifica los delimitadores literales de forma segura; la verificación del guardado ignora el estado expandido de los elementos hoja, ya que PDF omite su Count de rama

La sobrecarga con opciones de GraftPdfAcroForm admite pagcpReject, pagcpRename, pagcpNamespace y la unión de campos terminales compatibles de texto o selección, con filtrado de widgets seleccionados, recursos aislados, apariencias y orden de cálculo; consulte FPdfFormMerge para las políticas y la integración transaccional con el documento

Informes de colisiones de AcroForm

TPdfAcroFormGraftOptions.NamespacePrefix da nombre al padre insertado por la política de namespace; TPdfAcroFormCollisionPolicy.pagcpMergeCompatible une campos terminales compatibles de texto o selección admitidos

TPdfAcroFormGraftReport.FilteredFieldCount y TPdfAcroFormGraftReport.FilteredWidgetCount cuentan las entradas del origen eliminadas por el filtro de páginas seleccionadas; TPdfAcroFormGraftReport.ResourceRenameCount cuenta los nombres de recursos predeterminados aislados y TPdfAcroFormGraftReport.MergedFieldCount cuenta los campos compatibles unidos a un propietario existente

CapturePdfNavigation y WritePdfNavigation capturan y reasignan destinos con nombre y anotaciones de enlace de página mediante mapeos explícitos de páginas propietarias; consulte FPdfMerge para la semántica de claves sin procesar, los parámetros de destino, los límites y la integración transaccional

Registros de captura de navegación

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;

Lectura de valores de objetos activos

ReadPdfActiveObjects devuelve los valores de los últimos objetos activos con sus números de generación exactos y la revisión activa del catálogo, resolviendo tablas xref clásicas, flujos xref, revisiones incrementales y miembros comprimidos de flujos de objetos

Body excluye el encabezado del objeto indirecto y el marcador endobj; los flujos comunes conservan su diccionario y carga codificada, mientras que los miembros comprimidos se materializan como valores comunes, y la infraestructura xref y de flujos de objetos se excluye de la colección devuelta

Se restaura la posición del origen y, ante un error, se devuelve una colección vacía con diagnósticos; se rechaza la entrada cifrada, pero las firmas pueden inspeccionarse sin alterar sus bytes

Los valores predeterminados permiten 256 MiB de bytes de origen, 64 MiB por cuerpo materializado, 256 MiB de cuerpos acumulados, 64 MiB por flujo de objetos decodificado, 256 MiB de cachés acumuladas de flujos de objetos decodificados y 1,000,000 posiciones de números de objeto

Los límites de cuerpos se comprueban antes de cada copia e incluyen tanto los cuerpos temporales de infraestructura como los valores devueltos; los límites independientes de caché decodificada detienen la decodificación de flujos de objetos antes de exceder el presupuesto de quien llama

Estos límites acotan los búferes lógicos, no la memoria total del proceso: las copias del origen, el flujo intermedio de objetos directos, los búferes de exploración, la memoria de trabajo del decoder y los metadatos de objetos requieren asignaciones adicionales acotadas, y los búferes de exploración pueden duplicar cuerpos retenidos

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;

Ver también

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