PDFium Component Docs

TPdfStreamInspector klasse

Unit: FPdfStreamInspect
Alleen-lezen, begrensde inventarisatie en extractie van willekeurige fysieke PDF-streamobjecten

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescription
Create(Source: TStream)Leest een seekable PDF-bron onder de standaardbudgetten en herstelt de oorspronkelijke positie
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Leest een seekable PDF-bron onder door de aanroeper gekozen budgetten
Create(const Data: TBytes)Inspecteert een bestaande PDF-bytearray onder de standaardbudgetten
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Inspecteert een bestaande PDF-bytearray onder door de aanroeper gekozen budgetten

Methods

MethodDescription
CopyRawData(Index, Destination, out Report)Kopieert de volledige gecodeerde payload van één streamobject
CopyRawData(Index, Destination, Offset, Count, out Report)Kopieert een gevalideerd bytevenster zonder de filterketen te decoderen
DecodeData(Index, Destination, Level, out Report)Geeft ruwe data terug of past ondersteunde algemene filters toe in declaratievolgorde
PdfStreamFilterKindFromName(Name)Wijst een volledige of afgekorte PDF-filternaam toe aan TPdfStreamFilterKind

Default limits

ConstantValuePurpose
PdfStreamInspectDefaultSourceLimit512 MiBMaximale grootte van de vastgehouden bron
PdfStreamInspectDefaultRawLimit256 MiBMaximale ruwe payload die één operatie kopieert
PdfStreamInspectDefaultDecodedLimit256 MiBMaximale gedecodeerde payload die één operatie produceert
PdfStreamInspectDefaultExpansionRatio100Maximale expansieverhouding van gedecodeerd naar gecodeerd
PdfStreamInspectDefaultMaxStreams1,000,000Maximaal aantal geïnventariseerde streamobjecten
PdfStreamInspectDefaultDictionaryLimit1 MiBMaximaal aantal dictionary-bytes dat per stream wordt geïnspecteerd

Public types

TypeDescription
TPdfStreamFilterKindClassificeert filters als psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt of psfkBrotli
TPdfStreamNativeAccessKiest geen native pad, toegang via beeldobjecten of toegang via embedded files
TPdfStreamDecodeLevelKiest raw, ondersteunde algemene filters of verplichte decodering van de volledige keten
TPdfStreamReadStatusRapporteert psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed of psrsWriteError
TPdfStreamFilterInfoFilternaam, Kind, aanwezigheid van DecodeParms via HasDecodeParameters, Predictor, Colors, BitsPerComponent, Columns en de LZW-waarde EarlyChange
TPdfStreamFilterInfosDynamische array van TPdfStreamFilterInfo-records
TPdfStreamInfoObjectidentiteit (ObjectNumber, Generation, TypeName), offsets en lengtes (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), layoutvlaggen (LengthIsIndirect, UsedEndStreamFallback), versleutelings- en external-file-vlaggen (HasExternalFile, IsEncryptedDocument), typenamen (SubtypeName), native grens (NativeAccess met psnaNone, psnaImageObject of psnaEmbeddedFile) en de gedeclareerde Filters-keten
TPdfStreamInfosDynamische array van TPdfStreamInfo-records
TPdfStreamInspectOptionsDoor de aanroeper gekozen budgetten voor bron, payload (MaxRawBytes, MaxDecodedBytes), expansie (MaxExpansionRatio), objectaantal (MaxStreams), dictionary (MaxDictionaryBytes), tokens (MaxTokens), toewijzing (MaxAllocationBytes) en de deadline DeadlineMilliseconds, met een statische Default-initialisator
TPdfStreamReadReportStatus, byteaantallen (InputByteCount, OutputByteCount), toegepaste en resterende filteraantallen (AppliedFilterCount, RemainingFilterCount), index van de mislukte filter (FailedFilterIndex) en de ErrorMessage-tekst voor één lezing

Properties

MemberTypeDescription
CountIntegerAantal fysieke streamobjecten of revisies dat in de bron is gevonden
Infos[Index]TPdfStreamInfoObjectnummer, generatie, offsets, lengtes, filters, DecodeParms en classificatie van de native toegang
EncryptedBooleanGeeft aan of de trailer documentversleuteling aangeeft
OptionsTPdfStreamInspectOptionsGenormaliseerde resourcebudgetten die de inspector gebruikt
SourceByteCountInt64Aantal invoerbytes dat voor inspectie wordt vastgehouden

Decode levels and native boundaries

Budgets and reports

TPdfStreamInspectOptions.Default combineert zijn grenzen voor bron, payload, expansie, dictionary en streams met het huidige token-, object-, gedecodeerde-byte-, expansieverhoudings-, toewijzings- en deadlinebeleid van TPdfParserResourceBudget

TPdfStreamReadReport registreert de status, in- en uitgaande byteaantallen, toegepaste en resterende filters, de index van de mislukte filter en schrijffouten naar de bestemming

De huidige implementatie houdt één begrensde bronkopie vast om betrouwbare resolutie van indirecte lengtes en herhaalbare willekeurige streamlezingen te ondersteunen; gebruik een lagere MaxSourceBytes bij het verwerken van onbetrouwbare uploads onder een strakker geheugenbudget

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;