PDFium Delphi Component Docs

RenderPageBandedToEncoder yöntemi

Component: TPdf  ·  Unit: PDFium
Geçerli sayfayı kırpılmış yatay bantlar hâlinde işler ve her bant bitmap'ini çağıranın sağladığı bantlı görüntü kodlayıcısına iletir

Syntax

function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
  Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
  Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;

Width, HeightInteger. Tam sayfa görüntüsünün piksel cinsinden boyutu; sayfa tek parça hâlinde işlenmiş gibi
BandHeightInteger. Her bandın piksel cinsinden yüksekliği. Height bunun katı değilse son bant daha kısa olur
EncoderTPdfBandedImageEncoder. Bant akışını alan, çağıranın mülkiyetindeki kodlayıcı örneği
RotationTRotation. Sayfaya uygulanan görüntü döndürmesi: ro0, ro90, ro180 veya ro270
OptionsTRenderOptions. İşleme bayrakları
ColorTColor. İşlemeden önce her banda uygulanan arka plan dolgusu
ResultTPdfBandedImageReport. Bant sayıları, kodlanan satırlar, en yüksek bant baytları, çıktı baytları ve tamamlanma bayrağı

Description

Yöntem, RenderPageBanded ile aynı bantlama döngüsünü sürer; ancak bir uygulama geri çağrısı yerine, her taze işlenmiş Width x bant yüksekliği bitmap'ini içsel bir köprü üzerinden çağıranın sağladığı kodlayıcının üç sanal yöntemine iletir: önce BeginImage(Width, Height) çalışır, WriteBand(BandIndex, BandTopY, Bitmap) yukarıdan aşağıya bant başına bir çağrı alır ve EndImage(Completed) görüntüyü kapatır

BandIndex sıfır tabanlıdır ve BandTopY, tam sayfa piksellerinde bant üstünün y ofsetidir; bir şerit yazarının satırları çıktı dosyasına yerleştirmesi için gereken bilgi budur. Bitmap işleme döngüsüne aittir ve WriteBand döndükten hemen sonra serbest bırakılır; bu yüzden pikselleri saklaması gereken bir kodlayıcının onları kopyalaması gerekir

WriteBand, devam etmek için True ya da kalan bantları temizce iptal etmek için False döndürür. EndImage(True) yalnızca istenen her satır kodlandığında çağrılır; iptal edilmiş ya da başarısız olmuş bir çalıştırma, o hata yolundan gelen istisnalar bastırılmış biçimde EndImage(False) alır

Döndürülen rapor; Format = pbifCustom değerini, işlenen ve kabul edilen bant sayılarını BandsRendered ve BandsEncoded içinde, kabul edilen satırları RowsEncoded içinde, en büyük bant bitmap'ini Width x bant yüksekliği x 4 bayt olarak PeakBandBytes içinde, Encoder.GetBytesWritten değerini OutputBytes içinde taşır ve Completed = True değerini tam olarak RowsEncoded = Height olduğunda taşır

En yüksek sayfa piksel depolaması tek bant bitmap'inde kalır; böylece posterler ve mühendislik çizimleri, tam hedef görüntüyü hiç ayırmadan baskı çözünürlüğünde dışa aktarılabilir

Remarks

Nil bir kodlayıcı, pozitif olmayan boyutlar ya da pozitif olmayan bir bant yüksekliği geçmek EPdfError fırlatır

Width ile Min(BandHeight, Height) çarpımı, adreslenebilir Integer aralığının dörtte biri içinde kalmalıdır; aksi halde EPdfError bant tamponunun adreslenebilir boyutu aştığını raporlar

Kodlayıcıya özgü çıktı telemetrisini OutputBytes içine raporlamak için kodlayıcı alt sınıfında GetBytesWritten yöntemini geçersiz kılın; temel uygulama 0 döndürür

Example

type
  TRawStripEncoder = class(TPdfBandedImageEncoder)
  public
    procedure BeginImage(Width, Height: Integer); override;
    function WriteBand(BandIndex, BandTopY: Integer;
      Bitmap: TBitmap): Boolean; override;
    procedure EndImage(Completed: Boolean); override;
  end;

Encoder := TRawStripEncoder.Create;
try
  Report := Pdf.RenderPageBandedToEncoder(4960, 7016, 512, Encoder);
  LogBandedExport(Report.BandsEncoded, Report.PeakBandBytes);
finally
  Encoder.Free;
end;

See Also

RenderPageBanded, RenderPageBandedToStream, RenderPage, RenderTile