PDFium Delphi Component Docs

TPdfStreamInspector classe

Unidade: FPdfStreamInspect
Inventário limitado somente leitura e extração de objetos de stream PDF físicos arbitrários

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescription
Create(Source: TStream)Lê uma origem PDF posicionável sob orçamentos padrão e restaura sua posição original
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Lê uma origem PDF posicionável sob orçamentos escolhidos pelo chamador
Create(const Data: TBytes)Inspeciona um array de bytes PDF existente sob orçamentos padrão
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Inspeciona um array de bytes PDF existente sob orçamentos escolhidos pelo chamador

Methods

MethodDescription
CopyRawData(Index, Destination, out Report)Copia a carga codificada completa de um objeto de stream
CopyRawData(Index, Destination, Offset, Count, out Report)Copia uma janela de bytes validada sem decodificar a cadeia de filtros
DecodeData(Index, Destination, Level, out Report)Retorna dados brutos ou aplica os filtros gerais suportados na ordem de declaração
PdfStreamFilterKindFromName(Name)Mapeia um nome de filtro PDF completo ou abreviado para TPdfStreamFilterKind

Default limits

ConstantValuePurpose
PdfStreamInspectDefaultSourceLimit512 MiBTamanho máximo da origem retida
PdfStreamInspectDefaultRawLimit256 MiBTamanho máximo da carga bruta copiada por uma operação
PdfStreamInspectDefaultDecodedLimit256 MiBTamanho máximo da carga decodificada produzida por uma operação
PdfStreamInspectDefaultExpansionRatio100Razão máxima de expansão de decodificado para codificado
PdfStreamInspectDefaultMaxStreams1,000,000Número máximo de objetos de stream inventariados
PdfStreamInspectDefaultDictionaryLimit1 MiBMáximo de bytes de dicionário inspecionados por stream

Public types

TypeDescription
TPdfStreamFilterKindClassifica filtros como psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt ou psfkBrotli
TPdfStreamNativeAccessSeleciona nenhum caminho nativo, acesso a objeto de imagem ou acesso a arquivo incorporado
TPdfStreamDecodeLevelSeleciona decodificação bruta, de filtros gerais suportados ou de cadeia completa obrigatória
TPdfStreamReadStatusRelata psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed ou psrsWriteError
TPdfStreamFilterInfoNome do filtro, Kind, presença de DecodeParms em HasDecodeParameters, Predictor, Colors, BitsPerComponent, Columns e o valor LZW EarlyChange
TPdfStreamFilterInfosArray dinâmico de records TPdfStreamFilterInfo
TPdfStreamInfoIdentidade do objeto (ObjectNumber, Generation, TypeName), deslocamentos e comprimentos (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), flags de layout (LengthIsIndirect, UsedEndStreamFallback), flags de criptografia e de arquivo externo (HasExternalFile, IsEncryptedDocument), nomes de tipo (SubtypeName), fronteira nativa (NativeAccess com psnaNone, psnaImageObject ou psnaEmbeddedFile) e a cadeia Filters declarada
TPdfStreamInfosArray dinâmico de records TPdfStreamInfo
TPdfStreamInspectOptionsOrçamentos escolhidos pelo chamador para origem, carga (MaxRawBytes, MaxDecodedBytes), expansão (MaxExpansionRatio), contagem de objetos (MaxStreams), dicionário (MaxDictionaryBytes), token (MaxTokens), alocação (MaxAllocationBytes) e o prazo DeadlineMilliseconds, com um inicializador estático Default
TPdfStreamReadReportStatus, contagens de bytes (InputByteCount, OutputByteCount), contagens de filtros aplicados e restantes (AppliedFilterCount, RemainingFilterCount), índice do filtro com falha (FailedFilterIndex) e texto ErrorMessage para uma leitura

Properties

MemberTypeDescription
CountIntegerNúmero de objetos de stream físicos ou revisões encontrados na origem
Infos[Index]TPdfStreamInfoNúmero do objeto, geração, deslocamentos, comprimentos, filtros, DecodeParms e classificação de acesso nativo
EncryptedBooleanSe o trailer declara criptografia do documento
OptionsTPdfStreamInspectOptionsOrçamentos de recursos normalizados usados pelo inspetor
SourceByteCountInt64Número de bytes de entrada retidos para inspeção

Decode levels and native boundaries

Budgets and reports

TPdfStreamInspectOptions.Default combina seus tetos de origem, carga, expansão, dicionário e stream com a política atual de token, objeto, bytes decodificados, razão de expansão, alocação e prazo de TPdfParserResourceBudget

TPdfStreamReadReport registra o status, as contagens de bytes de entrada e saída, os filtros aplicados e restantes, o índice do filtro com falha e os erros de gravação no destino

A implementação atual retém uma cópia limitada da origem para dar suporte à resolução confiável de comprimentos indiretos e a leituras aleatórias repetíveis do stream; use um MaxSourceBytes menor ao processar uploads não confiáveis sob um orçamento de memória mais apertado

Example

var
  Inspector: TPdfStreamInspector;
  Output: TMemoryStream;
  Report: TPdfStreamReadReport;
begin
  Inspector := TPdfStreamInspector.Create(PdfBytes);
  Output := TMemoryStream.Create;
  try
    if Inspector.Count > 0 then
      Inspector.DecodeData(0, Output, psdlGeneral, Report);
  finally
    Output.Free;
    Inspector.Free;
  end;
end;