PDFium Delphi Component Docs

TPdfStreamInspector Klasse

Unit: FPdfStreamInspect
Schreibgeschützte, begrenzte Bestandsaufnahme und Extraktion beliebiger physischer PDF-Stream-Objekte

Syntax

type TPdfStreamInspector = class ... end;

Konstruktoren

KonstruktorBeschreibung
Create(Source: TStream)Liest eine seekbare PDF-Quelle unter den Standard-Budgets und stellt ihre ursprüngliche Position wieder her
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Liest eine seekbare PDF-Quelle unter vom Aufrufer gewählten Budgets
Create(const Data: TBytes)Untersucht ein vorhandenes PDF-Byte-Array unter den Standard-Budgets
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Untersucht ein vorhandenes PDF-Byte-Array unter vom Aufrufer gewählten Budgets

Methoden

MethodeBeschreibung
CopyRawData(Index, Destination, out Report)Kopiert die vollständige kodierte Nutzlast eines Stream-Objekts
CopyRawData(Index, Destination, Offset, Count, out Report)Kopiert ein validiertes Byte-Fenster, ohne die Filterkette zu dekodieren
DecodeData(Index, Destination, Level, out Report)Liefert Rohdaten oder wendet unterstützte allgemeine Filter in Deklarationsreihenfolge an
PdfStreamFilterKindFromName(Name)Abbildet einen vollständigen oder abgekürzten PDF-Filternamen auf TPdfStreamFilterKind

Standardgrenzen

KonstanteWertZweck
PdfStreamInspectDefaultSourceLimit512 MiBMaximale vorgehaltene Quellgröße
PdfStreamInspectDefaultRawLimit256 MiBMaximale von einer Operation kopierte Roh-Nutzlast
PdfStreamInspectDefaultDecodedLimit256 MiBMaximale von einer Operation erzeugte dekodierte Nutzlast
PdfStreamInspectDefaultExpansionRatio100Maximales Dekodier-zu-Kodier-Expansionverhältnis
PdfStreamInspectDefaultMaxStreams1,000,000Maximale inventarisierte Stream-Objekte
PdfStreamInspectDefaultDictionaryLimit1 MiBMaximale für einen Stream inspizierte Dictionary-Bytes

Öffentliche Typen

TypBeschreibung
TPdfStreamFilterKindKlassifiziert Filter als psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt oder psfkBrotli
TPdfStreamNativeAccessWählt keinen nativen Pfad, Bildobjekt-Zugriff oder eingebettete-Datei-Zugriff
TPdfStreamDecodeLevelWählt Roh-, unterstützte allgemeine Filter- oder erforderliche vollständige Ketten-Dekodierung
TPdfStreamReadStatusMeldet psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed oder psrsWriteError
TPdfStreamFilterInfoFiltername, Kind, HasDecodeParameters-DecodeParms-Präsenz, Predictor, Colors, BitsPerComponent, Columns und der LZW-EarlyChange-Wert
TPdfStreamFilterInfosDynamisches Array von TPdfStreamFilterInfo-Records
TPdfStreamInfoObjektidentität (ObjectNumber, Generation, TypeName), Offsets und Längen (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), Layout-Flags (LengthIsIndirect, UsedEndStreamFallback), Verschlüsselungs- und External-File-Flags (HasExternalFile, IsEncryptedDocument), Typnamen (SubtypeName), native Grenze (NativeAccess mit psnaNone, psnaImageObject oder psnaEmbeddedFile) und die deklarierte Filters-Kette
TPdfStreamInfosDynamisches Array von TPdfStreamInfo-Records
TPdfStreamInspectOptionsVom Aufrufer gewählte Quell-, Nutzlast- (MaxRawBytes, MaxDecodedBytes), Expansions- (MaxExpansionRatio), Objektanzahl- (MaxStreams), Dictionary- (MaxDictionaryBytes), Token- (MaxTokens), Allokations- (MaxAllocationBytes) und DeadlineMilliseconds-Frist-Budgets mit einem statischen Default-Initialisierer
TPdfStreamReadReportStatus, Byte-Zähler (InputByteCount, OutputByteCount), angewendete und verbleibende Filteranzahl (AppliedFilterCount, RemainingFilterCount), fehlgeschlagener Filterindex (FailedFilterIndex) und ErrorMessage-Text für einen Lesevorgang

Eigenschaften

MemberTypBeschreibung
CountIntegerAnzahl der in der Quelle gefundenen physischen Stream-Objekte oder Revisionen
Infos[Index]TPdfStreamInfoObjektnummer, Generation, Offsets, Längen, Filter, DecodeParms und Klassifizierung des nativen Zugriffs
EncryptedBooleanOb der Trailer eine Dokumentverschlüsselung deklariert
OptionsTPdfStreamInspectOptionsNormalisierte Ressourcen-Budgets, die der Inspector verwendet
SourceByteCountInt64Anzahl der zur Inspektion vorgehaltenen Eingabe-Bytes

Decode-Stufen und native Grenzen

Budgets und Berichte

TPdfStreamInspectOptions.Default kombiniert seine Quell-, Nutzlast-, Expansions-, Dictionary- und Stream-Obergrenzen mit der aktuellen TPdfParserResourceBudget-Richtlinie für Token, Objekte, dekodierte Bytes, Expansionsverhältnis, Allokation und Frist

TPdfStreamReadReport zeichnet Status, Ein- und Ausgabe-Byte-Zähler, angewendete und verbleibende Filter, den fehlgeschlagenen Filterindex und Schreibfehler am Ziel auf

Die aktuelle Implementierung behält eine begrenzte Quellkopie vor, um zuverlässige Auflösung indirekter Längen und wiederholbare zufällige Stream-Lesevorgänge zu unterstützen; verwenden Sie ein niedrigeres MaxSourceBytes, wenn Sie nicht vertrauenswürdige Uploads unter einem knapperen Speicherbudget verarbeiten

Beispiel

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;