Yüklenen Görsel Çıkarımı
Yüklenen görsel çıkarımı; uygulamaların LoadFromFile veya LoadFromStream var olan bir PDF'i açtıktan sonra görsel XObject'lerini saymasına, meta verilerini incelemesine ve desteklenen görselleri TBitmap örneklerine çözmesine olanak tanır
Ana API'ler
GetLoadedImageCount, yüklenen belgedeki sayılabilir görsel nesnelerinin sayısını döndürürGetLoadedImageInfo; nesne numarası, sayfa indeksi, boyut, bit derinliği, renk uzayı, filtre listesi ve çözülebilirlik meta verileriyleTHPDFLoadedImageInfo'yu pikselleri çözmeden doldururExtractLoadedImage, seçili görseli yeni birTBitmap'e çözer; döndürülen bitmap'in sahibi çağırandırGetLoadedImageCountPerPage, sayımı tek bir yüklenen sayfayla sınırlar
Desteklenen kaynaklar
- Veri filtreleri
FlateDecode,LZWDecode,ASCIIHexDecode,ASCII85Decode,RunLengthDecodeve bir görsel filtreyle biten çoklu filtre zincirlerini kapsar - Görsel filtreleri
DCTDecode,JPXDecode,JBIG2DecodeveCCITTFaxDecode'yi kapsar - Raster yolları DeviceRGB, DeviceGray, Indexed, DeviceCMYK ile düşük bit derinlikli gri tonlamalı veya indeksli görselleri kapsar
Çözme parametreleri ve güvenlik
DecodeParmsve kısaltmasıDPanahtarı; değer bir sözlük ya da filtre-parametre dizisindeki son sözlük olduğunda çözümlenirPredictor,Colors,BitsPerComponentveColumns, Flate veya LZW açma işleminden sonra uygulanır- LZW
EarlyChange=0veEarlyChange=1değerlerinin ikisi de desteklenir - TIFF Predictor 2; paketlenmiş 1, 2 ve 4-bit örneklerin yanı sıra 8 ve 16-bit bileşenleri destekler
- PNG predictor'ları her tam satır için geçerli bir filtre etiketi gerektirir
- Raster boyutları ve beklenen bayt sayıları, ayırma veya çözme öncesinde taşma açısından denetlenir
- Bozuk sıkıştırılmış veri çözme başarısızlığı olarak raporlanır ve asla açılmamış piksel sayılmaz
Örnek
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;