استخلاص الصور المحمّلة
يتيح استخلاص الصور المحمّلة للتطبيقات تعداد كائنات صور XObject بعد أن يفتح LoadFromFile أو LoadFromStream ملف PDF قائمً، وفحص بياناتها الوصفية، وفك الصور المدعومة إلى نسخ TBitmap
الواجهات الرئيسية
- يعيد
GetLoadedImageCountعدد كائنات الصور القابلة للتعداد في المستند المحمّل - يملأ
GetLoadedImageInfoالسجلTHPDFLoadedImageInfoبرقم الكائن وفهرس الصفحة والحجم وعمق البت وفضاء اللون وقائمة المرشحات وبيانات قابلية فك التشفير دون فك بكسلات - يفك
ExtractLoadedImageالصورة المختارة إلىTBitmapجديد؛ والصورة النقطية المعادة ملك للمستدعي - يحصر
GetLoadedImageCountPerPageالتعداد في صفحة محمّلة واحدة
المصادر المدعومة
- تشمل مرشحات البيانات
FlateDecodeوLZWDecodeوASCIIHexDecodeوASCII85DecodeوRunLengthDecodeوسلاسل المرشحات المتعددة المنتهية بمرشح صورة - تشمل مرشحات الصور
DCTDecodeوJPXDecodeوJBIG2DecodeوCCITTFaxDecode - تشمل مسارات الصور النقطية DeviceRGB وDeviceGray وIndexed وDeviceCMYK والصور الرمادية أو المفهرسة منخفضة عمق البت
معاملات فك التشفير والسلامة
- تُحل قيمة
DecodeParmsومفتاحها المختصرDPسواء كانت القيمة قاموسًا أو القاموس الأخير في مصفوفة معاملات مرشح - تُطبق قيم
PredictorوColorsوBitsPerComponentوColumnsبعد فك ضغط Flate أو LZW - تُحترم القيمتان
EarlyChange=0وEarlyChange=1في LZW معًا - يدعم مؤشر TIFF Predictor 2 العينات المعبأة بدقة 1 و2 و4 بت إضافة إلى المكوّنات بدقة 8 و16 بت
- تتطلب مؤشرات PNG وسم مرشح صالحًا لكل صف كامل
- يُتحقق من أبعاد الصورة النقطية وأعداد البايتات المتوقعة من حيث الفيضان قبل التخصيص أو فك التشفير
- تُبلَّغ البيانات المضغوطة المشوهة كإخفاق في فك التشفير ولا تعامل أبدًا كبكسلات غير مضغوطة
مثال
var
Doc: THotPDF;
Info: THPDFLoadedImageInfo;
Bmp: TBitmap;
I: Integer;
begin
Doc := THotPDF.Create(nil);
try
Doc.LoadFromFile('input.pdf');
for I := 0 to Doc.GetLoadedImageCount - 1 do
if Doc.GetLoadedImageInfo(I, Info) and Info.Decodable then
begin
Bmp := Doc.ExtractLoadedImage(I);
try
if Assigned(Bmp) then
Bmp.SaveToFile(Format('image-%d.bmp', [I]));
finally
Bmp.Free;
end;
end;
finally
Doc.Free;
end;
end;