FPdfCompress contém os transformadores de stream públicos usados depois que o PDFium serializa um documento, além de records que configuram cada transformador e relatam seu resultado
Os auxiliares de regravação completa materializam o grafo de objetos ativo, preservam ou reconstruem deliberadamente as referências cruzadas e rejeitam entradas que não podem ser regravadas com segurança; os procedimentos baseados em relatório retornam falhas por meio de Succeeded e ErrorMessage
A maioria dos aplicativos usa os métodos correspondentes de salvamento, inspeção ou grafo de objetos de TPdf, enquanto os procedimentos da unidade permanecem disponíveis para quem já possui streams 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;
| Callable | Description |
|---|---|
TPdfTreeEditor.TryLoad | Carrega e valida uma NameTree ou NumberTree indireta por meio de busca esparsa por geração exata, retornando evidências estruturais sem disparar exceções para entrada malformada |
TPdfTreeEditor.Load | Carrega uma árvore e dispara uma exceção com o erro de validação quando a estrutura não é segura para edição |
TPdfTreeEditor.UpsertName e UpsertNumber | Insere ou substitui uma entrada ordenada preservando seu valor PDF bruto completo, incluindo referências indiretas e objetos compostos |
TPdfTreeEditor.RemoveName, RemoveNumber e Clear | Removem entradas selecionadas ou esvaziam a árvore antes do rebalanceamento determinístico |
TPdfTreeEditor.Validate | Verifica a ordenação de chaves, chaves duplicadas, valores brutos, limites de entradas e os invariantes atuais do editor |
TPdfTreeEditor.BuildBalancedObjects | Constrói nós folha e internos limitados com /Limits exatos, retém a identidade da raiz e reutiliza referências indiretas de nós carregadas compatíveis sempre que possível |
TPdfTreeEditor.SaveIncremental | Anexa os objetos balanceados como uma revisão incremental verificada e recarrega o resultado de forma independente antes de relatar sucesso |
TPdfOutlineEditor.TryLoad e Load | Leem uma hierarquia de outline por meio de busca esparsa por geração exata, validam os links de pai e de irmão, detectam ciclos e preservam destinos e ações não suportados como entradas de dicionário opacas |
TPdfOutlineEditor.Add, Delete e Move | Editam subárvores de outline completas por identificadores estáveis de itens, mantendo a ordem depth-first de irmãos |
TPdfOutlineEditor.SetTitle, SetStyle, SetExpanded, SetColor e ClearColor | Atualizam a apresentação visível do outline sem descartar entradas de dicionário de itens não reconhecidas |
TPdfOutlineEditor.Retarget | Atribui um destino explícito de página com base um como dados diretos de /Dest ou como uma ação GoTo com sufixo de destino validado |
TPdfOutlineEditor.ApplyPageMap | Consome o mapeamento de destinos com base um produzido pela validação do plano de páginas, atualiza os destinos explícitos sobreviventes e remove subárvores órfãs ou as relata |
TPdfOutlineEditor.SaveIncremental | Reconstrói as entradas de raiz, pai, irmão, filho, contagem, estilo, cor e destino, anexa uma revisão incremental e recarrega o resultado semântico de forma independente antes de informar sucesso |
TPdfCrossDocumentGraftMap.Create | Vincula mapeamentos reutilizáveis de origem para destino de objetos indiretos a uma identidade de origem fornecida por quem chama |
TPdfCrossDocumentGraftMap.Add e TryResolve | Armazenam e resolvem pares exatos de número de objeto e geração, aceitam repetições idênticas e rejeitam destinos conflitantes |
GraftPdfAcroForm | Importa hierarquias de campos, widgets, aparências, ordem de cálculo, recursos padrão, ações e valores para as páginas de destino mapeadas, anexa uma revisão incremental esparsa e recarrega o resultado de forma independente antes de informar sucesso |
CompressPdfStream | Comprime com Flate os streams não compactados elegíveis e reconstrói a estrutura serializada do PDF |
LinearizePdfStream | Reordena e renumera o grafo de objetos ativo no layout de PDF linearized com dados de hint de primeira página e de objetos compartilhados |
PackPdfObjectStreams | Empacota objetos não stream elegíveis em grupos ObjStm limitados e grava um cross-reference stream; ambos os limites de agrupamento devem ser positivos |
NormalizePdfDocumentContent | Normaliza cada sequência de conteúdo de página com TPdfContentNormalizeOptions e retorna um TPdfContentNormalizeReport de nível de documento |
PruneUnreachablePdfStream | Regrava somente os objetos alcançáveis a partir do catálogo em uma revisão clássica, preservando os números e as gerações de objetos sobreviventes |
PruneUnusedPdfResources | Examina operadores de conteúdo decodificados nos escopos de recursos de página, herdados, Form XObject, pattern, aparência e aninhados, remove somente nomes de recursos não usados, anexa uma revisão esparsa e faz a poda dos objetos que ficaram inalcançáveis |
DeduplicateResourcesPdfStream | Faz a poda de objetos inalcançáveis e mescla subgrafos de fontes, imagens e Form XObject idênticos byte a byte |
RecompressFlatePdfStream | Decodifica e recompacta streams FlateDecode alcançáveis quando ambos os limites de economia solicitados são atendidos |
ExternaliseInlineImagesPdfStream | Move blocos de imagens inline para image XObjects, atualiza os recursos da página e regrava os streams de conteúdo afetados |
ReproduciblePdfStream | Produz saída determinística de revisão única ao fazer a poda de objetos inalcançáveis, remover timestamps do Info e omitir o /ID da origem |
AppendPdfDirtyRevision | Compara snapshots semânticos do baseline e atuais, anexa objetos indiretos alterados ou novos à saída anterior e informa as contagens anexadas |
AppendEncryptedPdfDirtyRevision | Anexa objetos indiretos alterados ou novos sob o contexto de criptografia herdado e valida ou renova a autenticação da revisão |
ApplyDefaultOpenAction | Injeta uma open action Fit-Height de primeira página quando nenhuma existe e a versão de PDF selecionada o permite, usando janelas de stream limitadas e busca esparsa lazy nas revisões clássicas, xref-stream, híbridas e de object-stream |
PageLabelledPdfStream | Grava uma number tree /PageLabels de catálogo a partir de intervalos com base zero e, opcionalmente, substitui uma árvore existente, usando janelas de stream limitadas e busca esparsa de catálogo no caminho xref normal |
InspectOptionalContentPdfStream | Lê grupos, configurações, associações, metadados de uso e visibilidade efetiva de optional content em um inventário |
ConfigureOptionalContentPdfStream | Aplica a visibilidade de grupo solicitada a uma configuração selecionada e grava as atualizações de optional content necessárias |
SanitiseActiveContentPdfStream | Remove entradas de active content selecionadas do catálogo e do trailer por meio de busca esparsa e cópia de intervalo limitada e, em seguida, pode fazer a poda dos objetos que ficaram inalcançáveis com essa remoção; o overload com workspace aceita armazenamento limitado ou apoiado em disco de propriedade de quem chama para a entrada da poda |
ExportPdfObjectGraph | Serializa dados limitados de objetos indiretos como JSON pdf-object-graph-v1 com resumos SHA-256 de streams codificados opcionais |
PatchPdfObjectGraph | Define ou remove entradas de dicionário de nível superior por identidade de objeto e anexa uma revisão incremental verificada |
PostProcessSavedPdf | Executa o tratamento da open action padrão, a normalização específica de versão e o reparo nativo incremental de xref-stream; o overload com três workspaces seekable distintos permite que quem chama aplique sua própria política de armazenamento limitado ou apoiado em disco |
RepairSubsetToUnicodeCMaps | Reescreve ToUnicode CMaps de fontes subsetadas cujos elementos de array contradizem suas entradas bfchar, usando edições in-place de elementos de mesmo tamanho (valores bfchar vencem, um par que difere só no bit alto resolve para o code point menor, qualquer outro conflito mantém o primeiro mapeamento); documentos sem /ToUnicode ou com layout de xref-stream, hybrid ou object-stream passam intactos, e todo save completo não incremental de TPdf aplica o mesmo reparo automaticamente |
ReadPdfVersionInfo | Lê o header, a substituição do catálogo, a versão core efetiva e as informações de extensão de desenvolvedor Adobe |
ReadPdfSparseRevisionInfo | Lê, por meio do índice esparso de objetos, dados limitados da última revisão, bytes do catálogo, gerações de objetos, estilo de xref, estado de criptografia, identificadores de documento e evidências de estrutura tagged |
ComposePdfSparseUpdateId | Formata um /ID de trailer incremental preservando identificadores de quem chama ou da origem e derivando valores ausentes por meio de um digest de streaming limitado |
ReadPdfSparseCatalogSubDict | Lê um subdicionário de catálogo direto ou indireto, como MarkInfo ou ViewerPreferences, por meio do índice esparso de objetos |
ReadPdfSparsePageDictionaries | Percorre a árvore de páginas ativa por meio de busca esparsa clássica, xref-stream, híbrida e de object-stream e retorna os dicionários de página na ordem das páginas |
TPdfSparseDictionaryReader.Create | Constrói um índice esparso reutilizável sobre um stream de origem de propriedade de quem chama e informa o sucesso da inicialização por meio de Valid; a origem deve permanecer viva enquanto o leitor for usado |
TPdfSparseDictionaryReader.Destroy | Libera os buffers de índice retidos sem liberar o stream de origem de propriedade de quem chama |
TPdfSparseDictionaryReader.ReadDictionary | Resolve um número de objeto e uma geração exatos por meio do índice retido e retorna os bytes limitados do dicionário ativo |
TPdfSparseDictionaryReader.ReadLatestDictionary | Resolve a entrada xref ativa de um número de objeto, retorna sua geração e lê seu dicionário por meio do índice retido |
TPdfSparseDictionaryReader.ReadDecodedStream | Lê e decodifica um stream direto não filtrado ou com um único FlateDecode, impondo MaximumDecodedBytes |
TPdfOptionalContentConfigureOptions.Default | Seleciona a configuração 0 e o uso View, remove regras de estado automático e impõe grupos de rádio |
TPdfSanitiseOptions.Default | Habilita a remoção de open action, ação de catálogo, name tree, arquivo associado e objetos inalcançáveis, preservando AcroForm e metadados |
TPdfObjectGraphInspectOptions.Default | Retorna limites de 100000 objetos, profundidade 32, saída de 64 MiB, strings de 1 MiB e resumos de stream habilitados |
| Type | Description |
|---|---|
TPdfTreeKind | Seleciona uma NameTree ordenada por bytes com ptkName ou uma NumberTree de 64 bits com sinal com ptkNumber |
TPdfTreeObjectReference | Identifica um nó de árvore indireto por ObjectNumber e Generation |
TPdfTreeEntry | Armazena NameKey ou NumberKey mais um objeto PDF completo normalizado em RawValue; TPdfTreeEntries é seu array dinâmico |
TPdfTreeEditOptions | Limita MaxEntries, MaxNodes, MaxDepth, MaxLeafEntries e MaxKidsPerNode; Default fornece limites conservadores de produção |
TPdfTreeValidationIssue | Uma questão que carrega evidências de objeto e Message de diagnóstico; TPdfTreeValidationIssues é seu array dinâmico |
TPdfTreeValidationIssueKind | Valores de questão ptviInvalidRoot, ptviUnreadableNode, ptviCycle, ptviDepthLimit, ptviNodeLimit, ptviEntryLimit, ptviInvalidNodeShape, ptviInvalidKey, ptviInvalidValue, ptviInvalidLimits, ptviDuplicateKey, ptviUnsortedKey e ptviDeadlineExceeded |
TPdfTreeValidationReport | Informa NodeCount, EntryCount, MaximumDepth, Issues, evidências de objeto, estado de sucesso e texto de erro |
TPdfTreeSerializedObject | Contém uma referência de nó balanceado, os dados completos do objeto indireto e se a referência foi reutilizada |
TPdfTreeEditor | Modelo mutável de árvore ordenada que preserva valores PDF opacos e emite uma hierarquia indireta balanceada |
TPdfOutlineStyleFlag | Valores de apresentação posItalic e posBold; TPdfOutlineStyle é o conjunto deles |
TPdfOutlineObjectReference | Identifica um objeto de outline retido por número de objeto e geração |
TPdfOutlineItem | Armazena identidade estável, identidade do pai, título, destino explícito, forma de ação, IsOpen, estilo, HasColor, ColorRed, ColorGreen, ColorBlue e referência de objeto retido; TPdfOutlineItems é seu array dinâmico |
TPdfOutlineEditOptions | Limita MaxItems e a profundidade da hierarquia, com padrões conservadores fornecidos por Default |
TPdfOutlineValidationIssueKind | Valores de questão poviNone, poviInvalidCatalog, poviUnreadableItem, poviCycle, poviDepthLimit, poviItemLimit, poviInvalidParent, poviInvalidSibling, poviMissingTitle, poviInvalidDestination, poviInvalidPageMap, poviEncryptedInput, poviWriteFailure e poviVerificationFailure |
TPdfOutlineValidationReport | Informa IssueKind, evidências de objeto, ItemCount, MaximumDepth, RemappedDestinationCount, RemovedDanglingItemCount, estado de sucesso e texto de erro |
TPdfOutlineEditor | Modelo mutável de outline depth-first com remapeamento verificado de plano de páginas e persistência incremental |
TPdfGraftObjectReference | Identifica um objeto indireto de origem ou de destino por número de objeto e geração exatos |
TPdfCrossDocumentGraftMap | Mapa de objetos reutilizável vinculado à identidade de origem, apoiado em TPdfGraftMapEntries, que preserva ciclos e referências compartilhadas e desfaz as entradas adicionadas por um graft com falha |
TPdfGraftPageMapping | Mapeia SourcePageNumber com base um para DestinationPageNumber com base um nas atualizações de /P de widget e de /Annots de página |
TPdfAcroFormCollisionPolicy | Seleciona pagcpReject ou pagcpRename quando um título de campo raiz da origem colide com um título de campo raiz do destino |
TPdfAcroFormGraftOptions | Controla CollisionPolicy, RenamePrefix, os orçamentos de objeto e de recursão e AllowSignedDestination |
TPdfAcroFormGraftReport | Informa SourceFieldCount, GraftedFieldCount, ReusedObjectCount, DestinationFieldCount, MappedPageCount, GraftedObjectCount, RenamedFieldCount, o tamanho da saída, o estado de sucesso e o texto de erro |
TPdfVersionInfo | Relatório de versão com HeaderVersion, CatalogVersion, CoreVersion, AdobeBaseVersion, AdobeExtensionLevel, HasCatalogVersion, HasDeveloperExtensions e HasAdobeExtension |
TPdfSparseRevisionInfo | Snapshot da última revisão com RootObjectNumber, RootGeneration, InfoObjectNumber, InfoGeneration, SizeValue, MaximumObjectNumber, PreviousXrefOffset, UsesXrefStream, HasEncrypt, HasDocumentId, HasTaggedStructure, FirstDocumentId, CatalogDictionary e InfoDictionary |
TPdfSparseUpdateObject | Uma entrada de revisão com ObjectNumber, Generation e um corpo Data completo contendo os bytes N G obj ... endobj |
TPdfSparseUpdateObjects | Array dinâmico de entradas TPdfSparseUpdateObject anexadas por AppendPdfSparseUpdate |
TPdfSparsePageDictionary | Um objeto de página ativo com ObjectNumber, Generation e bytes limitados de Dictionary |
TPdfSparsePageDictionaries | Array dinâmico de dicionários de página ativos na ordem da árvore de páginas |
TPdfSparseDictionaryReader | Proprietário reutilizável de um índice esparso clássico, xref-stream, híbrido e de object-stream para buscas repetidas de dicionário por geração exata sem alocação do tamanho da origem |
TPdfPruneReport | Resultado de alcançabilidade com SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, Succeeded e ErrorMessage |
TPdfResourcePruneReport | Resultado de poda de recursos com ScannedScopeCount, UpdatedScopeCount, RemovedNameCount, RemovedObjectCount, contagens de streams, totais de bytes, estado de sucesso e texto de erro |
TPdfDedupReport | Resultado de deduplicação com SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, MergedFontCount, MergedImageCount, MergedFormXObjectCount, Succeeded e ErrorMessage |
TPdfFlateRecompressOptions | Limites de substituição MinSavingBytes e MinSavingRatio |
TPdfFlateRecompressReport | Resultado de recompactação com SourceByteCount, OutputByteCount, RecompressedCount, SkippedCount, FailedCount, OriginalStreamBytes, RecompressedStreamBytes, Succeeded e ErrorMessage |
TPdfInlineImageExternaliseOptions | Contém SkipUnsafePages, que preserva as páginas cujos limites de imagens inline não podem ser resolvidos |
TPdfInlineImageExternaliseReport | Resultado de externalização com SourceByteCount, OutputByteCount, ExternalisedCount, SkippedPageCount, FailedCount, CreatedXObjectCount, Succeeded e ErrorMessage |
TPdfReproducibleReport | Resultado de regravação determinística com SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, StrippedTimestampCount, Succeeded e ErrorMessage |
TPdfPageLabelStyle | Estilos de numeração plsNone, plsDecimal, plsUppercaseRoman, plsLowercaseRoman, plsUppercaseLetters e plsLowercaseLetters |
TPdfPageLabelRange | Um intervalo de rótulos com StartPageIndex com base zero, Style, Prefix e StartNumber |
TPdfPageLabelRanges | Array dinâmico de valores TPdfPageLabelRange |
TPdfPageLabelReport | Resultado de regravação de rótulos com SourceByteCount, OutputByteCount, AppliedRangeCount, ReplacedExistingLabels, Succeeded e ErrorMessage |
TPdfOptionalContentUsage | Contextos de visibilidade ocuView, ocuPrint, ocuExport e ocuDesign |
TPdfOptionalContentState | Estados por uso ocsUnspecified, ocsOn e ocsOff |
TPdfOptionalContentBaseState | Estados base de configuração ocbsOn, ocbsOff e ocbsUnchanged |
TPdfOptionalContentMembershipPolicy | Políticas de associação ocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff e ocmpUnknown |
TPdfOptionalContentIntegerArray | Array dinâmico de inteiros usado para coleções de números de objeto de optional content |
TPdfOptionalContentStringArray | Array dinâmico de AnsiString usado para coleções de nomes PDF |
TPdfOptionalContentWideStringArray | Array dinâmico de WideString usado para texto de optional content decodificado |
TPdfOptionalContentRadioGroup | Um grupo mutuamente exclusivo representado por GroupObjectNumbers |
TPdfOptionalContentRadioGroups | Array dinâmico de valores TPdfOptionalContentRadioGroup |
TPdfOptionalContentGroup | Record de OCG com ObjectNumber, Generation, Name, Intents, ViewState, PrintState, ExportState, PageElementSubtype, Language, LanguagePreferred, UserType, UserNames, HasZoomRange, MinimumZoom, MaximumZoom, EffectiveVisible, Locked e RadioGroupIndex |
TPdfOptionalContentGroups | Array dinâmico de valores TPdfOptionalContentGroup |
TPdfOptionalContentConfiguration | Record de configuração com ObjectNumber, Generation, Name, Creator, BaseState, Intents, OnGroupObjectNumbers, OffGroupObjectNumbers, LockedGroupObjectNumbers, OrderGroupObjectNumbers, RadioGroups e HasAutomaticState |
TPdfOptionalContentConfigurations | Array dinâmico de valores TPdfOptionalContentConfiguration |
TPdfOptionalContentMembership | Record de OCMD com ObjectNumber, Generation, GroupObjectNumbers, Policy, VisibilityExpression e EffectiveVisible |
TPdfOptionalContentMemberships | Array dinâmico de valores TPdfOptionalContentMembership |
TPdfOptionalContentInventory | Resultado de inspeção com Usage, SelectedConfigurationIndex, Groups, Configurations, Memberships, Succeeded e ErrorMessage |
TPdfOptionalContentStateChange | Estado Visible solicitado para um GroupObjectNumber |
TPdfOptionalContentStateChanges | Array dinâmico de valores TPdfOptionalContentStateChange |
TPdfOptionalContentConfigureOptions | Configuração e uso selecionados, mais os controles DisableAutomaticState e EnforceRadioGroups |
TPdfOptionalContentConfigureReport | Resultado de configuração com SourceByteCount, OutputByteCount, GroupCount, ChangedGroupCount, UpdatedUsageStateCount, SelectedConfigurationIndex, RemovedAutomaticState, Succeeded e ErrorMessage |
TPdfSanitiseOptions | Controles independentes StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, StripAcroForm, StripMetadata e RemoveUnreachable |
TPdfSanitiseReport | Resultado de sanitização com SourceByteCount, OutputByteCount, StrippedEntryCount, PrunedObjectCount, PruneReport aninhado, Succeeded e ErrorMessage |
TPdfObjectGraphInspectOptions | Limita a exportação JSON com MaxObjects, MaxDepth, MaxOutputBytes, MaxStringBytes e IncludeStreamDigests |
TPdfObjectGraphReport | Resultado compartilhado de exportação e patch com SourceByteCount, OutputByteCount, ObjectCount, ExportedObjectCount, PatchedObjectCount, AppliedOperationCount, Truncated, Succeeded e ErrorMessage |
TPdfObjectPatchOperationKind | Ações de patch popSet e popRemove |
TPdfObjectPatchValueKind | Tipos de valor povNull, povBoolean, povInteger, povReal, povName, povTextString e povReference |
TPdfObjectPatchValue | Valor etiquetado com Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber e ReferenceGeneration |
TPdfObjectPatchOperation | Uma operação com Kind, ObjectNumber, Generation, Key e Value |
TPdfObjectPatchOperations | Array dinâmico de valores TPdfObjectPatchOperation |
TPdfTreeEditor, TPdfOutlineEditor e GraftPdfAcroForm rejeitam entrada criptografada porque seus serializadores autônomos não herdam os parâmetros de segurança do documento, e todos os streams de origem e de destino devem permanecer seekable durante o salvamento verificadoGraftPdfAcroForm rejeita XFA, referências órfãs, páginas de widget não mapeadas, mapeamentos de página duplicados e colisões de recursos padrão; destinos assinados exigem autorização explícitaTPdf expõem autorização explícita onde entrada assinada pode ser aceitaPatchPdfObjectGraph recusa operações duplicadas, objetos ausentes, chaves de dicionário malformadas ou duplicadas, chaves protegidas de filtro e de comprimento de stream e alvos de referência ausentesAppendPdfDirtyRevision exige referências de catálogo correspondentes entre baseline e saída anterior e não pode codificar um objeto indireto que foi liberadoSanitiseActiveContentPdfStream exige três streams seekable distintos quando RemoveUnreachable=TrueTPdfOutlineEditor.SetUri substitui um destino por uma ação URI UTF-8 e codifica delimitadores literais com segurança; a verificação de salvamento ignora o estado expandido em itens folha porque o PDF omite o Count de seu ramo
O overload com opções de GraftPdfAcroForm suporta pagcpReject, pagcpRename, pagcpNamespace e a junção compatível de campos terminais de texto/escolha, com poda de widgets selecionados, recursos isolados, aparências e ordem de cálculo; veja FPdfFormMerge para políticas e integração transacional com o documento
TPdfAcroFormGraftOptions.NamespacePrefix nomeia o pai inserido pela política de namespace; TPdfAcroFormCollisionPolicy.pagcpMergeCompatible junta campos terminais de texto ou escolha compatíveis suportados
TPdfAcroFormGraftReport.FilteredFieldCount e TPdfAcroFormGraftReport.FilteredWidgetCount contam as entradas de origem removidas pela filtragem de páginas selecionadas; TPdfAcroFormGraftReport.ResourceRenameCount conta nomes de recurso padrão isolados e TPdfAcroFormGraftReport.MergedFieldCount conta campos compatíveis unidos a um proprietário existente
CapturePdfNavigation e WritePdfNavigation capturam e remapeiam destinos nomeados e anotações de link de página usando mapeamentos explícitos de página proprietária; veja FPdfMerge para semântica de chave bruta, parâmetros de destino, limites e integração transacional
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 retorna os valores mais recentes dos objetos ativos com seus números de geração exatos e a revisão ativa do catálogo, resolvendo tabelas xref clássicas, xref streams, revisões incrementais e membros comprimidos de object streams
O Body exclui o cabeçalho de objeto indireto e o marcador endobj; streams comuns mantêm seu dicionário e payload codificado, enquanto membros comprimidos são materializados como valores comuns, e a infraestrutura de xref/object-stream é excluída da coleção retornada
A posição da origem é restaurada e uma falha retorna uma coleção de objetos vazia com diagnósticos; entrada criptografada é rejeitada, enquanto assinaturas podem ser inspecionadas sem alterar seus bytes
Os padrões permitem 256 MiB de bytes de origem, 64 MiB por corpo materializado, 256 MiB de corpos cumulativos, 64 MiB por object stream decodificado, 256 MiB de caches cumulativos de object stream decodificado e 1,000,000 slots de número de objeto
Os limites de corpo são verificados antes de cada cópia de corpo e contam corpos temporários de infraestrutura, bem como valores retornados; os limites nomeados de forma independente de cache decodificado interrompem a decodificação de object stream antes de exceder o orçamento de quem chama
Estes são limites lógicos de buffer, não um teto de memória de todo o processo: cópias de origem, o stream de preparação de objetos diretos, buffers de varredura, armazenamento de trabalho do decodificador e metadados de objetos consomem alocações limitadas adicionais, e buffers de varredura podem duplicar corpos retidos
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;