PDFium Delphi Component Docs

TPdfStreamInspector clase

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

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescripción
Create(Source: TStream)Lee un origen PDF posicionable con los presupuestos predeterminados y restaura su posición original
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Lee un origen PDF posicionable con presupuestos elegidos por quien llama
Create(const Data: TBytes)Examina un arreglo de bytes PDF existente con los presupuestos predeterminados
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Examina un arreglo de bytes PDF existente con presupuestos elegidos por quien llama

Methods

MétodoDescripción
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 en bruto o aplica los filtros generales compatibles en orden de declaración
PdfStreamFilterKindFromName(Name)Mapea un nombre de filtro PDF completo o abreviado a TPdfStreamFilterKind

Default limits

ConstanteValorPropósito
PdfStreamInspectDefaultSourceLimit512 MiBTamaño máximo retenido del origen
PdfStreamInspectDefaultRawLimit256 MiBCarga útil máxima en bruto copiada por una operación
PdfStreamInspectDefaultDecodedLimit256 MiBCarga útil máxima decodificada 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 MiBMáximo de bytes de diccionario examinados por flujo

Public types

TipoDescripción
TPdfStreamFilterKindClasifica los filtros como psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt o psfkBrotli
TPdfStreamNativeAccessSelecciona sin vía nativa, acceso a objetos de imagen o acceso a archivos incrustados
TPdfStreamDecodeLevelSelecciona decodificación en bruto, con filtros generales compatibles 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 en HasDecodeParameters, Predictor, Colors, BitsPerComponent, Columns y el valor LZW EarlyChange
TPdfStreamFilterInfosArreglo dinámico 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 con psnaNone, psnaImageObject o psnaEmbeddedFile) y la cadena Filters declarada
TPdfStreamInfosArreglo dinámico de registros TPdfStreamInfo
TPdfStreamInspectOptionsPresupuestos de origen, carga útil (MaxRawBytes, MaxDecodedBytes), expansión (MaxExpansionRatio), cantidad de objetos (MaxStreams), diccionario (MaxDictionaryBytes), tokens (MaxTokens), asignación (MaxAllocationBytes) y fecha límite DeadlineMilliseconds elegidos por quien llama, 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

MiembroTipoDescripción
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 que usa el inspector
SourceByteCountInt64Número de bytes de entrada retenidos para 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 fecha límite 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 admitir una resolución fiable de longitudes indirectas y lecturas aleatorias repetibles del flujo; use un MaxSourceBytes menor al procesar cargas no confiables con 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;