Flash tipy a triky – tisk

26.10.2006· Autor: Ondřej Brichta· Počet komentářů: 4

Při tisku flashových dokumentů se nemusíme spoléhat na tisk z webového prohlížeče, ale můžeme využít tisku přímo z flashového dokumentu. Možnosti tisku si představíme v dnešním článku.

print()


Funkce pro tisk z flashového dokumentu je velice jednoduchá. Její konstrukce je následující:

print(target:Object, boundingBox:String) : Void


Funkce vyžaduje dva parametry, kde prvním je název instance MovieClipu, který se má tisknout, druhým parametrem je způsob tisku.

Pokud MovieClip, který chceme tisknout, obsahuje více snímků, bude každý snímek vytisknut na jednu stránku listu. V případě, že chceme tisknout pouze vybrané snímky daného MovieClipu, musíme do jejich názvu (Label) vložit znak „#p":

frame

Hodnoty druhého parametru funkce tisku mohou být celkem tři:

„bframe" - objekty ve snímku budou roztaženy tak, aby vyplňovaly celou oblast snímku

„bmax" - objekty ve snímcích budou roztaženy do oblasti, která je vymezená ohraničením všech objektů jednotlivých snímků

„bmovie" - pokud v tisknutém MovieClipu vytvoříme snímek s názvem „#b", bude objekt v tomto snímku vymezovat tisknutou oblast

V případě MovieClipu s názvem instance „tisk_mc" a obsahujícím dva snímky s obsahem a s třetím snímkem vymezujícím oblast tisku:

01

02

 

budou vypadat jednotlivé tisky takto:

tisky

 

Uvedená funkce tiskne objekty vektorově, kvalitněji. Pokud ovšem máme v MovieClipu objekty s průhledností, nebo masky, nebudou ve výsledném tisku zobrazeny správně. Pak je vhodné použít funkci „printAsBitmap()", která má shodnou konstrukci, ovšem tiskne i objekty s průhledností a maskované objekty.

PrintJob třída


Vedle funkce „print()" máme k dispozici třídu „PrintJob", která umožňuje detailněji kontrolovat způsob tisku dokumentů. Pokud použijeme stejný MovieClip jako v předchozím příkladu, tak původní jednoduchý zápis tisknutí na tlačítku:

on (release) {
 print(tisk_mc, "bmovie");
}


bude vypadat takto:

on (release) {
 //vytvoření tiskové fronty
 var my_pj:PrintJob = new PrintJob();
 //začátek tisku
 if (my_pj.start()) {
 //naformátování velikosti tisknutého MC
 if (my_pj.orientation == "portrait") {
 _scale = my_pj.pageWidth/tisk_mc._width;
 tisk_mc._xscale = 100*_scale-10;
 tisk_mc._yscale = 100*_scale-10;
 } else {
 _scale = my_pj.pageHeight/tisk_mc._height;
 tisk_mc._xscale = 100*_scale-10;
 tisk_mc._yscale = 100*_scale-10;
 }
 //proměnná stavu zásobníku
 var pageAdded:Boolean = false;
 //přidávání stran do zásobníku
 pageAdded = my_pj.addPage(tisk_mc, {xMin:-50, xMax:700, yMin:-50, yMax:800}, {printAsBitmap:true}, 1);
 pageAdded = my_pj.addPage(tisk_mc, {xMin:-50, xMax:700, yMin:-50, yMax:800}, {printAsBitmap:true}, 2);
 if (pageAdded) {
 //odeslání k tisku
 my_pj.send();
 }
 }
 // odstranění objektů 
 delete my_pj;
 //původní velikost objektů
 tisk_mc._xscale = 100;
 tisk_mc._yscale = 100;
}

Z prvního pohledu je jasné, že jde o složitější způsob tisku, ovšem umožňuje větší kontrolu nad tiskem dokumentů. Především se jedná o možnost zjištění informací o velikosti tisknutelné plochy - vlastnosti pageWidth a pageHeight, díky kterým můžeme dodatečně formátovat velikost tisknutého MovieClipu.

Důležitou metodou je pak „addPage()", které lze předat celkem čtyři parametry. Prvním je název MovieClipu, který chceme tisknout, druhým parametrem je objekt, kterým vymezujeme oblast tisku. Tato oblast se vymezuje pomocí souřadnic, které jsou relativní ke středu tisknutého MovieClipu. Pokud tedy uvedeme, že „xMin" bude „-50", pak levý okraj tisku bude začínat o 50px nalevo od středu tisknutého MovieClipu.

Třetím parametrem je objekt, kterým určujeme, zda chceme tisknout MovieClip jako bitmapu, nebo jako vektory. Nakonec zbývá poslední parametry, kterým určíme snímek, který chceme tisknout. Pokud chceme tisknout více snímků, musíme znovu použít metodu „addPage()".

Pro dokončení tisku odešleme frontu na tiskárnu pomocí metody „send()" a po odeslání vymažeme samotný objekt „printJob„ třídy.

Výsledný tisk pak bude vypadat takto:

printjob


Ondřej Brichta Vývojář multimediálních aplikací, šéfredaktor Flash.cz, školitel produktů Flash, Flex, Flash Media Server

Web: http://www.obria.cz |

Motto: <°))))><

Seriál: Tipy a triky

Tipy a triky je seriál zaměřený na zajímavá řešení a vylepšení flashových aplikací

Komentáře k článku  
supr bbarmann | 26.10.2006 9:12
Musim povedat TINYSOFT | 27.10.2006 14:03
Re: Musim povedat OBr | 27.10.2006 14:17
Upřesnění Jojo | 29.5.2008 21:29

Přihlášení uživatele