PDFium Delphi Component Docs

TPdfStreamInspector الفئة

الوحدة: FPdfStreamInspect
جرد واستخراج محدودان للقراءة فقط لكائنات تيارات PDF الفيزيائية الاعتباطية

الصياغة

type TPdfStreamInspector = class ... end;

المنشئات

المُنشئالوصف
Create(Source: TStream)يقرأ مصدر PDF قابلًا للتمرير ضمن ميزانيات افتراضية ويعيد موضعه الأصلي
Create(Source: TStream; const Options: TPdfStreamInspectOptions)يقرأ مصدر PDF قابلًا للتمرير ضمن ميزانيات يختارها المستدعي
Create(const Data: TBytes)يفحص مصفوفة بايتات PDF موجودة ضمن الميزانيات الافتراضية
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions)يفحص مصفوفة بايتات PDF موجودة ضمن ميزانيات يختارها المستدعي

الطرق

الطريقةالوصف
CopyRawData(Index, Destination, out Report)ينسخ الحمولة المرمَّزة الكاملة لكائن تيار واحد
CopyRawData(Index, Destination, Offset, Count, out Report)ينسخ نافذة بايتات متحققًا منها دون فك سلسلة المرشحات
DecodeData(Index, Destination, Level, out Report)يعيد البيانات الخام أو يطبق المرشحات العامة المدعومة بترتيب إعلانها
PdfStreamFilterKindFromName(Name)يعيّن اسم مرشح PDF كاملًا أو مختصرًا إلى TPdfStreamFilterKind

الحدود الافتراضية

الثابتالقيمةالغرض
PdfStreamInspectDefaultSourceLimit512 MiBأقصى حجم مصدر محتفظ به
PdfStreamInspectDefaultRawLimit256 MiBأقصى حمولة خام تنسخها عملية واحدة
PdfStreamInspectDefaultDecodedLimit256 MiBأقصى حمولة مفكوكة تنتجها عملية واحدة
PdfStreamInspectDefaultExpansionRatio100أقصى نسبة تمدد من مفكوك إلى مرمَّز
PdfStreamInspectDefaultMaxStreams1,000,000أقصى عدد كائنات تيارات يُجرَد
PdfStreamInspectDefaultDictionaryLimit1 MiBأقصى بايتات قاموس تُفحص لتيار واحد

الأنواع العامة

النوعالوصف
TPdfStreamFilterKindيصنف المرشحات كـ psfkUnknown أو psfkASCIIHex أو psfkASCII85 أو psfkLZW أو psfkFlate أو psfkRunLength أو psfkCCITTFax أو psfkJBIG2 أو psfkDCT أو psfkJPX أو psfkCrypt أو psfkBrotli
TPdfStreamNativeAccessيختار بلا مسار أصلي، أو وصول كائن صورة، أو وصول ملف مضمَّن
TPdfStreamDecodeLevelيختار خامًا، أو مرشحًا عامًا مدعومًا، أو فك السلسلة الكاملة المطلوب
TPdfStreamReadStatusيُبلِّغ عن psrsCompleted أو psrsPartiallyDecoded أو psrsInvalidIndex أو psrsInvalidRange أو psrsSourceLimitExceeded أو psrsRawLimitExceeded أو psrsDecodedLimitExceeded أو psrsExpansionRatioExceeded أو psrsUnsupportedFilter أو psrsUnsupportedDecodeParameters أو psrsEncrypted أو psrsExternalData أو psrsMalformed أو psrsWriteError
TPdfStreamFilterInfoاسم المرشح و Kind ووجود DecodeParms في HasDecodeParameters و Predictor و Colors و BitsPerComponent و Columns وقيمة LZW ‏EarlyChange
TPdfStreamFilterInfosمصفوفة ديناميكية من سجلات TPdfStreamFilterInfo
TPdfStreamInfoهوية الكائن (ObjectNumber، Generation، TypeName)، والإزاحات والأطوال (ObjectOffset، DictionaryOffset، DictionaryLength، RawOffset، RawLength، DecodedLengthHint)، وأعلام التخطيط (LengthIsIndirect، UsedEndStreamFallback)، وأعلام التعمية والملف الخارجي (HasExternalFile، IsEncryptedDocument)، وأسماء النوع (SubtypeName)، والحد الأصلي (NativeAccess بقيمة psnaNone أو psnaImageObject أو psnaEmbeddedFile)، وسلسلة Filters المعلنة
TPdfStreamInfosمصفوفة ديناميكية من سجلات TPdfStreamInfo
TPdfStreamInspectOptionsميزانيات يختارها المستدعي للمصدر والحمولة (MaxRawBytes، MaxDecodedBytes) والتمدد (MaxExpansionRatio) وعدد الكائنات (MaxStreams) والقاموس (MaxDictionaryBytes) والرمز (MaxTokens) والتخصيص (MaxAllocationBytes) والموعد النهائي DeadlineMilliseconds، مع مهيئ Default ساكن
TPdfStreamReadReportالحالة وعدّادات البايتات (InputByteCount، OutputByteCount) وأعداد المرشحات المطبقة والمتبقية (AppliedFilterCount، RemainingFilterCount) وفهرس المرشح الفاشل (FailedFilterIndex) ونص ErrorMessage لقراءة واحدة

الخصائص

العضوالنوعالوصف
CountIntegerعدد كائنات التيار الفيزيائية أو المراجعات الموجودة في المصدر
Infos[Index]TPdfStreamInfoرقم الكائن والتوليد والإزاحات والأطوال والمرشحات و DecodeParms وتصنيف الوصول الأصلي
EncryptedBooleanهل يعلن التذييل عن تعمية المستند
OptionsTPdfStreamInspectOptionsميزانيات الموارد المطبَّعة التي يستخدمها الفاحص
SourceByteCountInt64عدد بايتات الإدخال المحتفظ بها للفحص

مستويات فك الترميز والحدود الأصلية

الميزانيات والتقارير

يجمع TPdfStreamInspectOptions.Default سقوفه للمصدر والحمولة والتمدد والقاموس والتيار مع سياسة TPdfParserResourceBudget الحالية للرموز والكائنات والبايتات المفكوكة ونسبة التمدد والتخصيص والموعد النهائي

يسجل TPdfStreamReadReport الحالة وعدّادي بايتات الإدخال والإخراج والمرشحات المطبقة والمتبقية وفهرس المرشح الفاشل وأخطاء كتابة الوجهة

يحتفظ التنفيذ الحالي بنسخة مصدر واحدة محدودة الحدود لدعم حل الأطوال غير المباشرة بثقة وقراءات تيار عشوائية متكررة؛ استخدم MaxSourceBytes أدنى عند معالجة تحميلات غير موثوقة ضمن ميزانية ذاكرة أكثر صرامة

مثال

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;