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
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;
| Función o procedimiento | Descripción |
|---|---|
TPdfTreeEditor.TryLoad | Carga 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.Load | Carga un árbol y genera una excepción con el error de validación cuando la estructura no es segura para editar |
TPdfTreeEditor.UpsertName and UpsertNumber | Inserta o reemplaza una entrada ordenada conservando todo su valor PDF sin procesar, incluidas las referencias indirectas y los objetos compuestos |
TPdfTreeEditor.RemoveName, RemoveNumber, and Clear | Elimina entradas seleccionadas o vacía el árbol antes de equilibrarlo de forma determinista |
TPdfTreeEditor.Validate | Comprueba el orden de las claves, las claves duplicadas, los valores sin procesar, los límites de entradas y las invariantes actuales del editor |
TPdfTreeEditor.BuildBalancedObjects | Construye 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.SaveIncremental | Anexa los objetos balanceados como una revisión incremental verificada y recarga de forma independiente el resultado antes de informar éxito |
TPdfOutlineEditor.TryLoad and Load | Lee 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 Move | Edita subárboles completos de marcadores mediante identificadores estables, manteniendo el orden de hermanos del recorrido en profundidad |
TPdfOutlineEditor.SetTitle, SetStyle, SetExpanded, SetColor, and ClearColor | Actualiza la presentación de los marcadores sin descartar las entradas desconocidas de sus diccionarios |
TPdfOutlineEditor.Retarget | Asigna 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.ApplyPageMap | Consume 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.SaveIncremental | Reconstruye 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.Create | Vincula mapeos reutilizables de objetos indirectos de origen a destino a una identidad de origen suministrada por quien llama |
TPdfCrossDocumentGraftMap.Add and TryResolve | Almacena y resuelve pares exactos de número de objeto y generación, acepta repeticiones idénticas y rechaza destinos contradictorios |
GraftPdfAcroForm | Importa 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 |
CompressPdfStream | Comprime con Flate los flujos sin comprimir elegibles y reconstruye la estructura serializada del PDF |
LinearizePdfStream | Reordena 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 |
PackPdfObjectStreams | Empaqueta 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 |
NormalizePdfDocumentContent | Normaliza cada secuencia de contenido de página con TPdfContentNormalizeOptions y devuelve un TPdfContentNormalizeReport a nivel de documento |
PruneUnreachablePdfStream | Reescribe solo los objetos alcanzables desde el catálogo en una revisión clásica, preservando los números de objeto y generaciones supervivientes |
PruneUnusedPdfResources | Examina 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 |
DeduplicateResourcesPdfStream | Poda los objetos inalcanzables y fusiona subgrafos de fuentes, imágenes y Form XObject idénticos byte a byte |
RecompressFlatePdfStream | Decodifica y recomprime los flujos FlateDecode alcanzables cuando se cumplen ambos umbrales de ahorro solicitados |
ExternaliseInlineImagesPdfStream | Mueve 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 |
ReproduciblePdfStream | Produce una salida determinista de revisión única podando los objetos inalcanzables, eliminando las marcas de tiempo de Info y omitiendo el /ID del origen |
AppendPdfDirtyRevision | Compara 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 |
AppendEncryptedPdfDirtyRevision | Anexa los objetos indirectos cambiados o nuevos bajo el contexto de cifrado heredado y valida o renueva la autenticación de la revisión |
ApplyDefaultOpenAction | Inyecta 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 |
PageLabelledPdfStream | Escribe 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 |
InspectOptionalContentPdfStream | Lee los grupos de contenido opcional, las configuraciones, las membresías, los metadatos de uso y la visibilidad efectiva en un inventario |
ConfigureOptionalContentPdfStream | Aplica la visibilidad de grupo solicitada a una configuración seleccionada y escribe las actualizaciones de contenido opcional requeridas |
SanitiseActiveContentPdfStream | Elimina 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 |
ExportPdfObjectGraph | Serializa datos acotados de objetos indirectos como JSON pdf-object-graph-v1 con resúmenes SHA-256 de flujos codificados opcionales |
PatchPdfObjectGraph | Establece o elimina entradas de diccionario de nivel superior por identidad de objeto y anexa una revisión incremental verificada |
PostProcessSavedPdf | Ejecuta 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 |
RepairSubsetToUnicodeCMaps | Reescrive 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 |
ReadPdfVersionInfo | Lee el encabezado, la anulación del catálogo, la versión core efectiva y la información de extensiones de desarrollador de Adobe |
ReadPdfSparseRevisionInfo | Lee 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 |
ComposePdfSparseUpdateId | Formatea 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 |
ReadPdfSparseCatalogSubDict | Lee un subdiccionario del catálogo directo o indirecto, como MarkInfo o ViewerPreferences, mediante el índice disperso de objetos |
ReadPdfSparsePageDictionaries | Recorre 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.Create | Construye 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.Destroy | Libera los búferes del índice retenido sin liberar el flujo de origen propiedad de quien llama |
TPdfSparseDictionaryReader.ReadDictionary | Resuelve un número de objeto y generación exactos mediante el índice retenido y devuelve los bytes acotados del diccionario activo |
TPdfSparseDictionaryReader.ReadLatestDictionary | Resuelve la entrada xref activa de un número de objeto, devuelve su generación y lee su diccionario mediante el índice retenido |
TPdfSparseDictionaryReader.ReadDecodedStream | Lee y decodifica un flujo directo sin filtrar o con un único FlateDecode mientras hace cumplir MaximumDecodedBytes |
TPdfOptionalContentConfigureOptions.Default | Selecciona la configuración 0 y el uso View, elimina las reglas de estado automático y hace cumplir los grupos de radio |
TPdfSanitiseOptions.Default | Habilita la eliminación de open actions, acciones del catálogo, árboles de nombres, archivos asociados y objetos inalcanzables, preservando AcroForm y los metadatos |
TPdfObjectGraphInspectOptions.Default | Devuelve límites de 100000 objetos, profundidad 32, 64 MiB de salida, 1 MiB de cadenas y resúmenes de flujos habilitados |
| Tipo | Descripción |
|---|---|
TPdfTreeKind | Selecciona un NameTree ordenado por bytes con ptkName o un NumberTree con signo de 64 bits con ptkNumber |
TPdfTreeObjectReference | Identifica un nodo de árbol indirecto por ObjectNumber y Generation |
TPdfTreeEntry | Almacena NameKey o NumberKey más un objeto PDF completo normalizado en RawValue; TPdfTreeEntries es su arreglo dinámico |
TPdfTreeEditOptions | Acota MaxEntries, MaxNodes, MaxDepth, MaxLeafEntries y MaxKidsPerNode; Default suministra límites de producción conservadores |
TPdfTreeValidationIssue | Un problema que lleva evidencia del objeto y un Message de diagnóstico; TPdfTreeValidationIssues es su arreglo dinámico |
TPdfTreeValidationIssueKind | Valores de problema ptviInvalidRoot, ptviUnreadableNode, ptviCycle, ptviDepthLimit, ptviNodeLimit, ptviEntryLimit, ptviInvalidNodeShape, ptviInvalidKey, ptviInvalidValue, ptviInvalidLimits, ptviDuplicateKey, ptviUnsortedKey y ptviDeadlineExceeded |
TPdfTreeValidationReport | Informa NodeCount, EntryCount, MaximumDepth, Issues, evidencia de objetos, estado de éxito y texto de error |
TPdfTreeSerializedObject | Contiene una referencia de nodo balanceada, los datos completos del objeto indirecto y si la referencia fue reutilizada |
TPdfTreeEditor | Modelo de árbol ordenado mutable que preserva los valores PDF opacos y emite una jerarquía indirecta balanceada |
TPdfOutlineStyleFlag | Valores de presentación posItalic y posBold; TPdfOutlineStyle es su conjunto |
TPdfOutlineObjectReference | Identifica un objeto de esquema retenido por número de objeto y generación |
TPdfOutlineItem | Almacena 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 |
TPdfOutlineEditOptions | Acota MaxItems y la profundidad de la jerarquía, con valores predeterminados conservadores suministrados por Default |
TPdfOutlineValidationIssueKind | Valores de problema poviNone, poviInvalidCatalog, poviUnreadableItem, poviCycle, poviDepthLimit, poviItemLimit, poviInvalidParent, poviInvalidSibling, poviMissingTitle, poviInvalidDestination, poviInvalidPageMap, poviEncryptedInput, poviWriteFailure y poviVerificationFailure |
TPdfOutlineValidationReport | Informa IssueKind, evidencia de objetos, ItemCount, MaximumDepth, RemappedDestinationCount, RemovedDanglingItemCount, estado de éxito y texto de error |
TPdfOutlineEditor | Modelo de esquema mutable en profundidad con remapeo verificado del plan de páginas y persistencia incremental |
TPdfGraftObjectReference | Identifica un objeto indirecto de origen o destino por número de objeto y generación exactos |
TPdfCrossDocumentGraftMap | Mapa 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 |
TPdfGraftPageMapping | Mapea SourcePageNumber basado en uno a DestinationPageNumber basado en uno para las actualizaciones de /P de widget y de /Annots de página |
TPdfAcroFormCollisionPolicy | Selecciona pagcpReject o pagcpRename cuando un título de campo raíz de origen colisiona con un título de campo raíz de destino |
TPdfAcroFormGraftOptions | Controla CollisionPolicy, RenamePrefix, los presupuestos de objetos y de recursión y AllowSignedDestination |
TPdfAcroFormGraftReport | Informa SourceFieldCount, GraftedFieldCount, ReusedObjectCount, DestinationFieldCount, MappedPageCount, GraftedObjectCount, RenamedFieldCount, el tamaño de la salida, el estado de éxito y el texto de error |
TPdfVersionInfo | Informe de versión con HeaderVersion, CatalogVersion, CoreVersion, AdobeBaseVersion, AdobeExtensionLevel, HasCatalogVersion, HasDeveloperExtensions y HasAdobeExtension |
TPdfSparseRevisionInfo | Instantánea de la última revisión con RootObjectNumber, RootGeneration, InfoObjectNumber, InfoGeneration, SizeValue, MaximumObjectNumber, PreviousXrefOffset, UsesXrefStream, HasEncrypt, HasDocumentId, HasTaggedStructure, FirstDocumentId, CatalogDictionary y InfoDictionary |
TPdfSparseUpdateObject | Una entrada de revisión con ObjectNumber, Generation y un cuerpo Data completo que lleva los bytes N G obj ... endobj |
TPdfSparseUpdateObjects | Arreglo dinámico de entradas TPdfSparseUpdateObject anexadas por AppendPdfSparseUpdate |
TPdfSparsePageDictionary | Un objeto de página activo con ObjectNumber, Generation y bytes acotados de Dictionary |
TPdfSparsePageDictionaries | Arreglo dinámico de diccionarios de página activos en orden del árbol de páginas |
TPdfSparseDictionaryReader | Dueñ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 |
TPdfPruneReport | Resultado de alcanzabilidad con SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, Succeeded y ErrorMessage |
TPdfResourcePruneReport | Resultado de poda de recursos con ScannedScopeCount, UpdatedScopeCount, RemovedNameCount, RemovedObjectCount, conteos de flujos, totales de bytes, estado de éxito y texto de error |
TPdfDedupReport | Resultado de deduplicación con SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, MergedFontCount, MergedImageCount, MergedFormXObjectCount, Succeeded y ErrorMessage |
TPdfFlateRecompressOptions | Umbrales de reemplazo MinSavingBytes y MinSavingRatio |
TPdfFlateRecompressReport | Resultado de recompreción con SourceByteCount, OutputByteCount, RecompressedCount, SkippedCount, FailedCount, OriginalStreamBytes, RecompressedStreamBytes, Succeeded y ErrorMessage |
TPdfInlineImageExternaliseOptions | Contiene SkipUnsafePages, que preserva las páginas cuyos límites de imágenes en línea no se pueden resolver |
TPdfInlineImageExternaliseReport | Resultado de externalización con SourceByteCount, OutputByteCount, ExternalisedCount, SkippedPageCount, FailedCount, CreatedXObjectCount, Succeeded y ErrorMessage |
TPdfReproducibleReport | Resultado de reescritura determinista con SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, StrippedTimestampCount, Succeeded y ErrorMessage |
TPdfPageLabelStyle | Estilos de numeración plsNone, plsDecimal, plsUppercaseRoman, plsLowercaseRoman, plsUppercaseLetters y plsLowercaseLetters |
TPdfPageLabelRange | Un rango de etiquetas con StartPageIndex basado en cero, Style, Prefix y StartNumber |
TPdfPageLabelRanges | Arreglo dinámico de valores TPdfPageLabelRange |
TPdfPageLabelReport | Resultado de reescritura de etiquetas con SourceByteCount, OutputByteCount, AppliedRangeCount, ReplacedExistingLabels, Succeeded y ErrorMessage |
TPdfOptionalContentUsage | Contextos de visibilidad ocuView, ocuPrint, ocuExport y ocuDesign |
TPdfOptionalContentState | Estados por uso ocsUnspecified, ocsOn y ocsOff |
TPdfOptionalContentBaseState | Estados base de configuración ocbsOn, ocbsOff y ocbsUnchanged |
TPdfOptionalContentMembershipPolicy | Políticas de membresía ocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff y ocmpUnknown |
TPdfOptionalContentIntegerArray | Arreglo dinámico de enteros usado para colecciones de números de objeto de contenido opcional |
TPdfOptionalContentStringArray | Arreglo dinámico de AnsiString usado para colecciones de nombres PDF |
TPdfOptionalContentWideStringArray | Arreglo dinámico de WideString usado para texto de contenido opcional decodificado |
TPdfOptionalContentRadioGroup | Un grupo mutuamente excluyente representado por GroupObjectNumbers |
TPdfOptionalContentRadioGroups | Arreglo dinámico de valores TPdfOptionalContentRadioGroup |
TPdfOptionalContentGroup | Registro OCG con ObjectNumber, Generation, Name, Intents, ViewState, PrintState, ExportState, PageElementSubtype, Language, LanguagePreferred, UserType, UserNames, HasZoomRange, MinimumZoom, MaximumZoom, EffectiveVisible, Locked y RadioGroupIndex |
TPdfOptionalContentGroups | Arreglo dinámico de valores TPdfOptionalContentGroup |
TPdfOptionalContentConfiguration | Registro de configuración con ObjectNumber, Generation, Name, Creator, BaseState, Intents, OnGroupObjectNumbers, OffGroupObjectNumbers, LockedGroupObjectNumbers, OrderGroupObjectNumbers, RadioGroups y HasAutomaticState |
TPdfOptionalContentConfigurations | Arreglo dinámico de valores TPdfOptionalContentConfiguration |
TPdfOptionalContentMembership | Registro OCMD con ObjectNumber, Generation, GroupObjectNumbers, Policy, VisibilityExpression y EffectiveVisible |
TPdfOptionalContentMemberships | Arreglo dinámico de valores TPdfOptionalContentMembership |
TPdfOptionalContentInventory | Resultado de inspección con Usage, SelectedConfigurationIndex, Groups, Configurations, Memberships, Succeeded y ErrorMessage |
TPdfOptionalContentStateChange | Estado Visible solicitado para un GroupObjectNumber |
TPdfOptionalContentStateChanges | Arreglo dinámico de valores TPdfOptionalContentStateChange |
TPdfOptionalContentConfigureOptions | Configuración y uso seleccionados más los controles DisableAutomaticState y EnforceRadioGroups |
TPdfOptionalContentConfigureReport | Resultado de configuración con SourceByteCount, OutputByteCount, GroupCount, ChangedGroupCount, UpdatedUsageStateCount, SelectedConfigurationIndex, RemovedAutomaticState, Succeeded y ErrorMessage |
TPdfSanitiseOptions | Controles independientes StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, StripAcroForm, StripMetadata y RemoveUnreachable |
TPdfSanitiseReport | Resultado de saneamiento con SourceByteCount, OutputByteCount, StrippedEntryCount, PrunedObjectCount, el PruneReport anidado, Succeeded y ErrorMessage |
TPdfObjectGraphInspectOptions | Acota la exportación JSON con MaxObjects, MaxDepth, MaxOutputBytes, MaxStringBytes e IncludeStreamDigests |
TPdfObjectGraphReport | Resultado compartido de exportación y parche con SourceByteCount, OutputByteCount, ObjectCount, ExportedObjectCount, PatchedObjectCount, AppliedOperationCount, Truncated, Succeeded y ErrorMessage |
TPdfObjectPatchOperationKind | Acciones de parche popSet y popRemove |
TPdfObjectPatchValueKind | Tipos de valor povNull, povBoolean, povInteger, povReal, povName, povTextString y povReference |
TPdfObjectPatchValue | Valor etiquetado con Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber y ReferenceGeneration |
TPdfObjectPatchOperation | Una operación con Kind, ObjectNumber, Generation, Key y Value |
TPdfObjectPatchOperations | Arreglo dinámico de valores TPdfObjectPatchOperation |
TPdfTreeEditor, TPdfOutlineEditor y GraftPdfAcroForm rechazan la entrada cifrada porque sus serializadores independientes no heredan los parámetros de seguridad del documento, y todos los flujos de origen y destino deben permanecer posicionables durante el guardado verificadoGraftPdfAcroForm rechaza XFA, referencias colgantes, páginas de widgets sin mapear, mapeos de página duplicados y colisiones de recursos predeterminados; los destinos firmados requieren autorización explícitaTPdf de nivel superior exponen autorización explícita donde se puede aceptar entrada firmadaPatchPdfObjectGraph rechaza operaciones duplicadas, objetos faltantes, claves de diccionario mal formadas o duplicadas, claves protegidas de filtro y longitud de flujo, y objetivos de referencia faltantesAppendPdfDirtyRevision exige referencias de catálogo coincidentes entre la línea base y la salida previa, y no puede codificar un objeto indirecto que fue liberadoSanitiseActiveContentPdfStream exige tres flujos distintos y posicionables cuando RemoveUnreachable=TrueTPdfOutlineEditor.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
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
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 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;