PDFium Delphi Component Docs

TPdfStreamInspector Clase

Unidad: FPdfStreamInspect
Inventario acotado de solo lectura y extracción de objetos de flujo PDF físicos arbitrarios

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescription
Create(Source: TStream)Lee un origen PDF posicionable bajo los presupuestos predeterminados y restaura su posición original
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Lee un origen PDF posicionable bajo presupuestos elegidos por el llamador
Create(const Data: TBytes)Inspecciona una matriz de bytes PDF existente bajo los presupuestos predeterminados
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Inspecciona una matriz de bytes PDF existente bajo presupuestos elegidos por el llamador

Methods

MethodDescription
CopyRawData(Index, Destination, out Report)Copia la carga útil codificada completa de un objeto de flujo
CopyRawData(Index, Destination, Offset, Count, out Report)Copia una ventana de bytes validada sin decodificar la cadena de filtros
DecodeData(Index, Destination, Level, out Report)Devuelve los datos crudos o aplica los filtros generales soportados en orden de declaración
PdfStreamFilterKindFromName(Name)Mapea un nombre de filtro PDF completo o abreviado a TPdfStreamFilterKind

Default limits

ConstantValuePurpose
PdfStreamInspectDefaultSourceLimit512 MiBTamaño máximo del origen retenido
PdfStreamInspectDefaultRawLimit256 MiBCarga cruda máxima copiada por una operación
PdfStreamInspectDefaultDecodedLimit256 MiBCarga decodificada máxima producida por una operación
PdfStreamInspectDefaultExpansionRatio100Relación máxima de expansión de decodificado a codificado
PdfStreamInspectDefaultMaxStreams1,000,000Número máximo de objetos de flujo inventariados
PdfStreamInspectDefaultDictionaryLimit1 MiBBytes máximos de diccionario inspeccionados por flujo

Public types

TypeDescription
TPdfStreamFilterKindClasifica los filtros como psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt o psfkBrotli
TPdfStreamNativeAccessSelecciona ausencia de vía nativa, acceso a objetos de imagen o acceso a archivos incrustados
TPdfStreamDecodeLevelSelecciona decodificación cruda, de filtros generales soportados o de cadena completa requerida
TPdfStreamReadStatusInforma psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed o psrsWriteError
TPdfStreamFilterInfoNombre del filtro, Kind, presencia de DecodeParms HasDecodeParameters, Predictor, Colors, BitsPerComponent, Columns y el valor LZW EarlyChange
TPdfStreamFilterInfosMatriz dinámica de registros TPdfStreamFilterInfo
TPdfStreamInfoIdentidad del objeto (ObjectNumber, Generation, TypeName), desplazamientos y longitudes (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), indicadores de diseño (LengthIsIndirect, UsedEndStreamFallback), indicadores de cifrado y archivo externo (HasExternalFile, IsEncryptedDocument), nombres de tipo (SubtypeName), frontera nativa (NativeAccess de psnaNone, psnaImageObject o psnaEmbeddedFile) y la cadena Filters declarada
TPdfStreamInfosMatriz dinámica de registros TPdfStreamInfo
TPdfStreamInspectOptionsPresupuestos elegidos por el llamador para origen, carga útil (MaxRawBytes, MaxDecodedBytes), expansión (MaxExpansionRatio), conteo de objetos (MaxStreams), diccionario (MaxDictionaryBytes), tokens (MaxTokens), asignación (MaxAllocationBytes) y el plazo DeadlineMilliseconds, con un inicializador estático Default
TPdfStreamReadReportEstado, conteos de bytes (InputByteCount, OutputByteCount), conteos de filtros aplicados y restantes (AppliedFilterCount, RemainingFilterCount), índice del filtro fallido (FailedFilterIndex) y texto ErrorMessage para una lectura

Properties

MemberTypeDescription
CountIntegerNúmero de objetos o revisiones de flujo físicos encontrados en el origen
Infos[Index]TPdfStreamInfoNúmero de objeto, generación, desplazamientos, longitudes, filtros, DecodeParms y clasificación de acceso nativo
EncryptedBooleanIndica si el trailer declara cifrado del documento
OptionsTPdfStreamInspectOptionsPresupuestos de recursos normalizados usados por el inspector
SourceByteCountInt64Número de bytes de entrada retenidos para la inspección

Decode levels and native boundaries

Budgets and reports

TPdfStreamInspectOptions.Default combina sus techos de origen, carga útil, expansión, diccionario y flujos con la política actual de tokens, objetos, bytes decodificados, relación de expansión, asignación y plazo de TPdfParserResourceBudget

TPdfStreamReadReport registra el estado, los conteos de bytes de entrada y salida, los filtros aplicados y restantes, el índice del filtro fallido y los errores de escritura en el destino

La implementación actual retiene una copia acotada del origen para soportar una resolución fiable de longitudes indirectas y lecturas aleatorias repetibles del flujo; use un MaxSourceBytes menor al procesar cargas no confiables bajo un presupuesto de memoria más estricto

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;