PDFium Delphi Component Docs

TPdfStreamInspector Classe

Unit: FPdfStreamInspect
Inventaire et extraction bornés en lecture seule d’objets de flux PDF physiques arbitraires

Syntax

type TPdfStreamInspector = class ... end;

Constructors

ConstructorDescription
Create(Source: TStream)Lit une source PDF positionnable avec les budgets par défaut et restaure sa position d’origine
Create(Source: TStream; const Options: TPdfStreamInspectOptions)Lit une source PDF positionnable avec des budgets choisis par l’appelant
Create(const Data: TBytes)Inspecte un tableau d’octets PDF existant avec les budgets par défaut
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)Inspecte un tableau d’octets PDF existant avec des budgets choisis par l’appelant

Methods

MethodDescription
CopyRawData(Index, Destination, out Report)Copie la charge utile encodée complète d’un objet de flux
CopyRawData(Index, Destination, Offset, Count, out Report)Copie une fenêtre d’octets validée sans décoder la chaîne de filtres
DecodeData(Index, Destination, Level, out Report)Renvoie les données brutes ou applique les filtres généraux pris en charge dans l’ordre de déclaration
PdfStreamFilterKindFromName(Name)Mappe un nom de filtre PDF complet ou abrégé vers TPdfStreamFilterKind

Default limits

ConstantValuePurpose
PdfStreamInspectDefaultSourceLimit512 MiBTaille maximale de source conservée
PdfStreamInspectDefaultRawLimit256 MiBCharge utile brute maximale copiée par une opération
PdfStreamInspectDefaultDecodedLimit256 MiBCharge utile décodée maximale produite par une opération
PdfStreamInspectDefaultExpansionRatio100Rapport maximal d’expansion décodé sur encodé
PdfStreamInspectDefaultMaxStreams1,000,000Nombre maximal d’objets de flux inventoriés
PdfStreamInspectDefaultDictionaryLimit1 MiBOctets de dictionnaire maximaux inspectés pour un flux

Public types

TypeDescription
TPdfStreamFilterKindClasse les filtres comme psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt ou psfkBrotli
TPdfStreamNativeAccessSélectionne l’absence de chemin natif, l’accès aux objets image ou l’accès aux fichiers embarqués
TPdfStreamDecodeLevelSélectionne le décodage brut, par filtres généraux pris en charge, ou de la chaîne complète requise
TPdfStreamReadStatusSignale psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed ou psrsWriteError
TPdfStreamFilterInfoNom de filtre, Kind, présence DecodeParms HasDecodeParameters, Predictor, Colors, BitsPerComponent, Columns et valeur LZW EarlyChange
TPdfStreamFilterInfosTableau dynamique d’enregistrements TPdfStreamFilterInfo
TPdfStreamInfoIdentité d’objet (ObjectNumber, Generation, TypeName), décalages et longueurs (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), indicateurs de disposition (LengthIsIndirect, UsedEndStreamFallback), indicateurs de chiffrement et de fichier externe (HasExternalFile, IsEncryptedDocument), noms de type (SubtypeName), frontière native (NativeAccess valant psnaNone, psnaImageObject ou psnaEmbeddedFile) et chaîne Filters déclarée
TPdfStreamInfosTableau dynamique d’enregistrements TPdfStreamInfo
TPdfStreamInspectOptionsBudgets choisis par l’appelant pour la source, la charge utile (MaxRawBytes, MaxDecodedBytes), l’expansion (MaxExpansionRatio), le nombre d’objets (MaxStreams), le dictionnaire (MaxDictionaryBytes), les jetons (MaxTokens), l’allocation (MaxAllocationBytes) et l’échéance DeadlineMilliseconds, avec un initialiseur statique Default
TPdfStreamReadReportStatut, comptes d’octets (InputByteCount, OutputByteCount), nombres de filtres appliqués et restants (AppliedFilterCount, RemainingFilterCount), index du filtre en échec (FailedFilterIndex) et texte ErrorMessage pour une lecture

Properties

MemberTypeDescription
CountIntegerNombre d’objets de flux physiques ou de révisions trouvés dans la source
Infos[Index]TPdfStreamInfoNuméro d’objet, génération, décalages, longueurs, filtres, DecodeParms et classification d’accès natif
EncryptedBooleanIndique si le trailer déclare le chiffrement du document
OptionsTPdfStreamInspectOptionsBudgets de ressources normalisés utilisés par l’inspecteur
SourceByteCountInt64Nombre d’octets d’entrée conservés pour l’inspection

Decode levels and native boundaries

Budgets and reports

TPdfStreamInspectOptions.Default combine ses plafonds de source, de charge utile, d’expansion, de dictionnaire et de flux avec la politique courante TPdfParserResourceBudget de jetons, d’objets, d’octets décodés, de rapport d’expansion, d’allocation et d’échéance

TPdfStreamReadReport enregistre le statut, les comptes d’octets d’entrée et de sortie, les filtres appliqués et restants, l’index du filtre en échec et les erreurs d’écriture vers la destination

L’implémentation actuelle conserve une copie bornée de la source pour assurer une résolution fiable des longueurs indirectes et des lectures aléatoires répétables du flux ; utilisez un MaxSourceBytes inférieur lors du traitement de téléversements non fiables sous un budget mémoire plus serré

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;