PDFium Delphi Component Docs

Juostinio atvaizdavimo metodai

Komponentas: TPdf  ·  Modulis: PDFium
Atvaizduokite einamąjį puslapį teisingai apkarpytose horizontaliose juostose, maitinkite kreipėjo kodekus arba rašykite PNG ir TIFF išvestį be viso dydžio taškinės grafikos

Syntax

function RenderPageBanded(Width, Height, BandHeight: Integer; BandCallback: TPdfBandCallback; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): Integer;

Width, HeightInteger. Viso puslapio paveikslo dydis pikseliais, tarsi jis būtų atvaizduotas vienu gabalu
BandHeightInteger. Kiekvienos juostos aukštis pikseliais. Paskutinė juosta trumpesnė, kai Height nėra jos kartotinis
BandCallbackTPdfBandCallback. Metodas, kviečiamas po kartą kiekvienai juostai kaip function(BandIndex, BandTopY: Integer; Bitmap: TBitmap): Boolean of object. Grąžinkite False, norėdami atvaizdavimą nutraukti anksčiau
RotationTRotation. Puslapiui taikomas rodymo sukimas: ro0, ro90, ro180 arba ro270
OptionsTRenderOptions. Atvaizdavimo požymiai
ColorTColor. Fono užpildas, taikomas kiekvienai juostai prieš atvaizdavimą
ResultInteger. Faktiškai atvaizduotų juostų skaičius arba 0 nesėkmės atveju

RenderPageBandedToEncoder

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

Kreipėjas valdo Encoder ir realizuoja BeginImage, WriteBand ir EndImage. Juostos ateina iš viršaus į apačią su nuo nulio skaičiuojamais indeksais ir viso puslapio BandTopY koordinatėmis

WriteBand grąžina True, norint tęsti, arba False, norint tvarkingai sustoti. Taškinė grafika galioja tik kreipinio metu. GetBytesWritten gali grąžinti kodekui būdingą išvesties telemetriją

Rezultatas praneša atvaizduotas ir priimtas juostas BandsRendered ir BandsEncoded, užkoduotas eilutes RowsEncoded, didžiausią BGRA juostos baitų reikšmę PeakBandBytes, išvesties baitus ir ar kiekviena pageidauta eilutė užbaigta

RenderPageBandedToStream

function RenderPageBandedToStream(Stream: TStream; Width, Height: Integer; const StreamOptions: TPdfBandedImageStreamOptions; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;

StreamTStream. Kreipėjui priklausantis rašomas išvesties srautas, pastatytas ten, kur prasideda paveikslas
StreamOptions.FormatpbifPng suspaustam 8 bitų RGB PNG arba pbifTiff nesuspaustoms mažiau baitų pirmumo klasikinėms TIFF juostelėms
StreamOptions.BandHeightTeigiamas juostos ir TIFF juostelės aukštis; numatytasis — 256 eilutės
StreamOptions.CompressionLevelPNG zlib lygis nuo 0 iki 9; numatytasis — 6, o TIFF jo nepaiso
StreamOptions.MaxOutputBytesGriežta užkoduotų baitų riba; nulis reiškia neribotą

Abu įtaisytieji koduotuvai rašo tik pirmyn ir nekeičia kreipėjo srauto pozicijos. PNG kiekvieną skenavimo eilutę spaudžia tiesiogiai į nuoseklius IDAT gabalus, o TIFF rašo po vieną RGB juostelę kiekvienai atvaizdavimo juostai ir prie pikselių prideda savo katalogą

Didžiausia puslapio pikselių atmintis yra viena Width x BandHeight BGRA taškinė grafika, o ne Width x Height. Ataskaita atskleidžia išmatuotą didžiausią juostos baitų reikšmę, todėl eksportuotojai gali taikyti ir patikrinti atminties politiką

Prie keisdami atskiras ribas, naudokite TPdfBandedImageStreamOptions.Default(pbifPng) arba Default(pbifTiff)

Description

Plakatai, žemėlapiai ir inžineriniai brėžiniai gali viršyti atmintį, kurios spausdinimo raiškoje reikėtų viso puslapio taškinei grafikai. Juostinimas didžiausią atmintį laiko vienoje juostoje: kiekviena juosta atvaizduojama į naują Width x BandHeight taškinę grafiką ir perduodama atgaliniam iškvietimui

Atgalinis iškvietimas gauna nuo nulio skaičiuojamą juostos indeksą ir BandTopY — juostos viršaus y poslinkį viso puslapio pikseliais, kurio rašytojui reikia, kad juostelė patektų į tinkamą išvesties failo vietą. Kiekviena taškinė grafika išlaiko pilną puslapio įrenginio transformaciją ir yra apkarpyta pagal tą koordinačių sritį. Taškinė grafika priklauso atvaizdavimo ciklui ir atlaisvinama grįžus atgaliniam iškvietimui, todėl iškvietimas, kuriam reikia pikselių išsaugoti, privalo juos nukopijuoti

False grąžinimas iš atgalinio iškvietimo sustabdo ciklą; tada grąžinamoji reikšmė suskaičiuoja iki nutraukimo atvaizduotas juostas

Example

function TForm1.WriteBand(BandIndex, BandTopY: Integer;
  Bitmap: TBitmap): Boolean;
begin
  Bitmap.SaveToFile(Format('band%d.bmp', [BandIndex]));
  Result := True;
end;

Pdf.RenderPageBanded(4960, 7016, 512, WriteBand);

StreamOptions := TPdfBandedImageStreamOptions.Default(pbifPng);
StreamOptions.BandHeight := 256;
StreamOptions.MaxOutputBytes := 256 * 1024 * 1024;
Report := Pdf.RenderPageBandedToStream(OutputStream, 4960, 7016,
  StreamOptions);

See Also

RenderPage, RenderTile, RenderPageWithMatrix, RenderPageProgressive