PDFium Delphi Component Docs

TPdfStreamInspector Classe

Unità: FPdfStreamInspect
Inventario delimitato ed estrazione in sola lettura di oggetti stream PDF fisici arbitrari

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescription
Create(Source: TStream)Legge una sorgente PDF seekable con i budget predefiniti e ripristina la sua posizione originale
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Legge una sorgente PDF seekable con budget selezionati dal chiamante
Create(const Data: TBytes)Ispeziona un array di byte PDF esistente con i budget predefiniti
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Ispeziona un array di byte PDF esistente con budget selezionati dal chiamante

Methods

MethodDescription
CopyRawData(Index, Destination, out Report)Copia il payload codificato completo di un oggetto stream
CopyRawData(Index, Destination, Offset, Count, out Report)Copia una finestra di byte validata senza decodificare la catena di filtri
DecodeData(Index, Destination, Level, out Report)Restituisce i dati grezzi o applica i filtri generali supportati nell'ordine di dichiarazione
PdfStreamFilterKindFromName(Name)Mappa un nome di filtro PDF completo o abbreviato a TPdfStreamFilterKind

Default limits

ConstantValuePurpose
PdfStreamInspectDefaultSourceLimit512 MiBDimensione massima della sorgente trattenuta
PdfStreamInspectDefaultRawLimit256 MiBPayload grezzo massimo copiato da una operazione
PdfStreamInspectDefaultDecodedLimit256 MiBPayload decodificato massimo prodotto da una operazione
PdfStreamInspectDefaultExpansionRatio100Rapporto massimo di espansione da decodificato a codificato
PdfStreamInspectDefaultMaxStreams1,000,000Numero massimo di oggetti stream inventariati
PdfStreamInspectDefaultDictionaryLimit1 MiBByte massimi di dizionario ispezionati per uno stream

Public types

TypeDescription
TPdfStreamFilterKindClassifica i filtri come psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt o psfkBrotli
TPdfStreamNativeAccessSeleziona nessun percorso nativo, accesso a oggetti immagine o accesso a file incorporati
TPdfStreamDecodeLevelSeleziona decodifica grezza, con filtri generali supportati o full-chain richiesta
TPdfStreamReadStatusSegnala psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed o psrsWriteError
TPdfStreamFilterInfoNome del filtro, Kind, presenza dei DecodeParms in HasDecodeParameters, Predictor, Colors, BitsPerComponent, Columns e valore LZW EarlyChange
TPdfStreamFilterInfosArray dinamico di record TPdfStreamFilterInfo
TPdfStreamInfoIdentità dell'oggetto (ObjectNumber, Generation, TypeName), offset e lunghezze (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), flag di layout (LengthIsIndirect, UsedEndStreamFallback), flag di crittografia e file esterni (HasExternalFile, IsEncryptedDocument), nomi dei tipi (SubtypeName), confine nativo (NativeAccess di psnaNone, psnaImageObject o psnaEmbeddedFile) e la catena Filters dichiarata
TPdfStreamInfosArray dinamico di record TPdfStreamInfo
TPdfStreamInspectOptionsBudget di sorgente, payload (MaxRawBytes, MaxDecodedBytes), espansione (MaxExpansionRatio), numero di oggetti (MaxStreams), dizionario (MaxDictionaryBytes), token (MaxTokens), allocazione (MaxAllocationBytes) e scadenza DeadlineMilliseconds selezionati dal chiamante, con un inizializzatore statico Default
TPdfStreamReadReportStato, conteggi dei byte (InputByteCount, OutputByteCount), conteggi dei filtri applicati e rimanenti (AppliedFilterCount, RemainingFilterCount), indice del filtro fallito (FailedFilterIndex) e testo ErrorMessage per una lettura

Properties

MemberTypeDescription
CountIntegerNumero di oggetti stream fisici o revisioni trovati nella sorgente
Infos[Index]TPdfStreamInfoNumero oggetto, generazione, offset, lunghezze, filtri, DecodeParms e classificazione dell'accesso nativo
EncryptedBooleanIndica se il trailer dichiara la crittografia del documento
OptionsTPdfStreamInspectOptionsBudget di risorse normalizzati usati dall'inspector
SourceByteCountInt64Numero di byte di ingresso trattenuti per l'ispezione

Decode levels and native boundaries

Budgets and reports

TPdfStreamInspectOptions.Default combina i propri limiti di sorgente, payload, espansione, dizionario e stream con l'attuale policy di token, oggetti, byte decodificati, rapporto di espansione, allocazione e scadenza di TPdfParserResourceBudget

TPdfStreamReadReport registra lo stato, i conteggi dei byte in ingresso e in uscita, i filtri applicati e rimanenti, l'indice del filtro fallito e gli errori di scrittura sulla destinazione

L'implementazione corrente trattiene una copia delimitata della sorgente per supportare una risoluzione affidabile delle lunghezze indirette e letture casuali ripetibili degli stream; usare un MaxSourceBytes più basso quando si elaborano upload non attendibili con un budget di memoria più stretto

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;