PDFium Delphi Component Docs

TPdfStreamInspector klass

Unit: FPdfStreamInspect
Skrivskyddad, avgränsad inventering och extraktion av godtyckliga fysiska PDF-strömobjekt

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescription
Create(Source: TStream)Läser en seekable PDF-källa under standardbudgeter och återställer dess ursprungliga position
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Läser en seekable PDF-källa under anroparvalda budgeter
Create(const Data: TBytes)Inspekterar en befintlig PDF-bytearray under standardbudgeter
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Inspekterar en befintlig PDF-bytearray under anroparvalda budgeter

Methods

MethodDescription
CopyRawData(Index, Destination, out Report)Kopierar den fullständiga kodade nyttolasten för ett strömobjekt
CopyRawData(Index, Destination, Offset, Count, out Report)Kopierar ett validerat bytefönster utan att avkoda filterkedjan
DecodeData(Index, Destination, Level, out Report)Returnerar rådata eller tillämpar allmänna filter som stöds i deklarationsordning
PdfStreamFilterKindFromName(Name)Mappar ett fullständigt eller förkortat PDF-filternamn till TPdfStreamFilterKind

Default limits

ConstantValuePurpose
PdfStreamInspectDefaultSourceLimit512 MiBStörst behållen källstorlek
PdfStreamInspectDefaultRawLimit256 MiBStörst rå nyttolast som en operation kopierar
PdfStreamInspectDefaultDecodedLimit256 MiBStörst avkodad nyttolast som en operation producerar
PdfStreamInspectDefaultExpansionRatio100Största expanderingskvot mellan avkodad och kodad data
PdfStreamInspectDefaultMaxStreams1,000,000Störst antal inventerade strömobjekt
PdfStreamInspectDefaultDictionaryLimit1 MiBFlest dictionary-bytes som inspekteras för en ström

Public types

TypeDescription
TPdfStreamFilterKindKlassificerar filter som psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt eller psfkBrotli
TPdfStreamNativeAccessVäljer ingen inbyggd väg, bildobjektåtkomst eller åtkomst till inbäddade filer
TPdfStreamDecodeLevelVäljer rå avkodning, allmänna filter som stöds eller obligatorisk avkodning av hela kedjan
TPdfStreamReadStatusRapporterar psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed eller psrsWriteError
TPdfStreamFilterInfoFilternamn, Kind, HasDecodeParameters (förekomst av DecodeParms), Predictor, Colors, BitsPerComponent, Columns och LZW-värdet EarlyChange
TPdfStreamFilterInfosDynamisk array av TPdfStreamFilterInfo-poster
TPdfStreamInfoObjektidentitet (ObjectNumber, Generation, TypeName), offset och längder (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), layoutflaggor (LengthIsIndirect, UsedEndStreamFallback), flaggor för kryptering och externa filer (HasExternalFile, IsEncryptedDocument), typnamn (SubtypeName), inbyggd gräns (NativeAccess med psnaNone, psnaImageObject eller psnaEmbeddedFile) samt den deklarerade Filters-kedjan
TPdfStreamInfosDynamisk array av TPdfStreamInfo-poster
TPdfStreamInspectOptionsAnroparvalda budgeter för källa, nyttolast (MaxRawBytes, MaxDecodedBytes), expansion (MaxExpansionRatio), objektantal (MaxStreams), dictionary (MaxDictionaryBytes), token (MaxTokens), allokering (MaxAllocationBytes) samt deadline-budgeten DeadlineMilliseconds med en statisk Default-initierare
TPdfStreamReadReportStatus, byteantal (InputByteCount, OutputByteCount), antal tillämpade och återstående filter (AppliedFilterCount, RemainingFilterCount), index för filter som misslyckades (FailedFilterIndex) och ErrorMessage-text för en läsning

Properties

MemberTypeDescription
CountIntegerAntal fysiska strömobjekt eller revisioner som hittats i källan
Infos[Index]TPdfStreamInfoObjektnummer, generation, offset, längder, filter, DecodeParms och klassificering av inbyggd åtkomst
EncryptedBooleanHuruvida trailern deklarerar dokumentkryptering
OptionsTPdfStreamInspectOptionsNormaliserade resursbudgeter som inspektören använder
SourceByteCountInt64Antal indatabytes som behållits för inspektion

Decode levels and native boundaries

Budgets and reports

TPdfStreamInspectOptions.Default kombinerar sina tak för källa, nyttolast, expansion, dictionary och strömmar med den aktuella policyn i TPdfParserResourceBudget för token, objekt, avkodade bytes, expanderingskvot, allokering och deadline

TPdfStreamReadReport registrerar status, antal in- och utbytes, tillämpade och återstående filter, index för det filter som misslyckades och skrivfel i destinationen

Den aktuella implementationen behåller en avgränsad källkopia för att stödja tillförlitlig uppslagning av indirekta längder och repeterbara slumpmässiga strömläsningar; använd ett lägre MaxSourceBytes när du behandlar ej betrodda uppladdningar under en snålare minnesbudget

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;