COOXMLPrinter
Ez az osztály is a nyomtatást teszi lehetővé a CPDFExporter osztályhoz hasonlóan. A működése az említetthez hasonló azzal a különbséggel, hogy az OpenOffice által használt (zip) fájlból a content.xml és styles.xml fájlokat használja fel a megjelenítéshez.
TODO
- paragrafuson belüli stílus-váltások kezelése
- fejléc ismétlése, ha a táblázat átlóg a következő oldalra
konstruktor
COOXMLPrinter(string xmlfile [, string stylefile=”” [, string printer=“print1”]])
A megadott xmlfile-t veszi alapul a nyomtatáskor, mint content.xml sablont. Amennyiben a stylefile paraméter nem üres sztring, akkor azt a fájlt is felolvassa, mint styles.xml fájlt. A printer paraméterrel az ini fájlban definiált nyomtatók közül választhatunk.
Metódusok
BackgroundImage
bool backgroundimage(CImage im, int left, int top, int width, int height)
A megadott képet a left, top bal felső sarokkal és width, height szélességgel illetve magassággal a nyomtatás hátterébe rakja. A méreteket század milliméterben kell megadni.
LinkImage
bool linkimage(string name, CImage im, int width, int height)
A name paraméterben megadott szöveget lecserélni az im paraméterben definiált képre. A kép szélességét és magasságát a width és a height paraméterekben adhatjuk meg század milliméterben (tehát az 1000-es érték jelenti az 1cm-t)
A csere csak abban az esetben történik meg, ha a szöveg önmagában áll, azaz abban a sorban az az egyetlen megjelenítendő dolog. A paragrafus rendezése hat a kép rendezésére is.
int print(array vars [,array3d tables = null [, boolean landscape = false]])
A nyomtató metódus.
A vars tömbnek kulcs-érték párokat kell tartalmaznia, ahol a kulcs és az érték is szöveges és eredményeképpen a dokumentumban előforduló összes kulcs-ot érték-re cseréli (a csere kisbetű/nagybetű érzékeny). Érdemes valamilyen módon ezeket a kulcs-okat kiemelni a dokumentumból (pl: %%%kulcs, __kulcs__, stb.), de erre nincs megkötés.
A tables tömb tartalmazza a dinamikus tömbökhöz szükséges adatokat. Az első kulcs tartalmazza a táblázat nevét, majd ez alatt egy két dimenziós tömbben az adatokat.
A landscape paraméter true értéke esetén a kinyomtatott oldal fekvő lesz, ellenkező esetben álló (ez az alapérték is). Ha csak a landscape paramétert szeretnénk megadni és nincs szükségünk a tables paraméterre, akkor a tables paraméternek adjunk null értéket.
A visszatérési érték a létrehozott nyomtatási nézet printid értéke (amit a PrintTo metódusban használhatunk fel) illetve NULL, ha az ini fájlban nincs engedélyezve a nyomtatási nézet.
PrintModal
int printmodal(array vars [,array3d tables = null [, boolean landscape = false]])
Csak annyiban tér el a print metódustól, hogy megvárja míg a nyomtatási nézet ablakod bezárják (ha az ini-ben nem tiltottuk le). A visszatérési érték a kinyomtatott példányszám.
PrintTo
void printto(int printid, array vars [,array3d tables = null [, boolean landscape = false]])
A megadott printid-jű nyomtatási nézethez hozzáadja az itt megadott nyomtatást. A további paraméterek teljesen megegyeznek a Print metódusnál leírtakkal.
Ha a megadott printid-vel nem létezik nyomtatási nézet, akkor létrehoz egyet (ennek nem kapjuk vissza az azonosítóját, ezért nem tudunk rá további lapokat nyomtatni). Ennek mellékhatása, hogy ha a printid olyan értéket tartalmaz, ami soha nem létezhet (pl: -1), akkor mindig új nyomtatási nézet jön létre, függetlenül attól, hogy milyen beállítás van az ini fájlban.
PrintToPage
void printto(int printid, array vars [,array3d tables = null [, boolean landscape = false]])
A megadott printid-jű nyomtatási nézet utolsó lapja után fűzi az itt megadott nyomtatást. A további paraméterek teljesen megegyeznek a Print metódusnál leírtakkal.
Ha a megadott printid-vel nem létezik nyomtatási nézet, akkor létrehoz egyet (ennek nem kapjuk vissza az azonosítóját, ezért nem tudunk rá további lapokat nyomtatni). Ennek mellékhatása, hogy ha a printid olyan értéket tartalmaz, ami soha nem létezhet (pl: -1), akkor mindig új nyomtatási nézet jön létre, függetlenül attól, hogy milyen beállítás van az ini fájlban.
SetPaperSize
void setpapersize(int papersize_const)
A metódus a megadott konstansnak megfelelően beállítja a nyomtató lapméretét. Amennyiben a megadott méretű lapot a nyomtató nem képes kezelni, akkor a nyomtató default lapméretét alkalmazza.
SetTable
void settable(string tablename, array2d values)
A metódus táblázat sokszorosítására használható.
Az első paraméter (tablename) a sokszorositandó táblázat neve. A második paraméter (values) egy 2D-s tömb, az első kulcs a táblázatot azonosítja, a második kulcs pedig a táblázatban kicserélendő szöveget, és ezen kulcs alatt szerepel az a string amire cserélni kell a második kulcsot.
Ime egy egyszerű példa:
$pr->SetTable('table', array( array('#name#' => 'Géza', '#identity#' => 'Fiú'), array('#name#' => 'Sára', '#identity#' => 'Lány') ) );
A table nevű táblázatból két példányt készít, majd az első táblázatban a #name# szöveget “Géza”-ra, az #identity# szöveget “Fiú”-ra, a másodikban a #name# szöveget “Sára”-ra, az #identity# szöveget “Lány”-ra cseréli.
Jótanácsok
- A mértékegységet célszerű átállítani “cm”-re, mert egyenlőre csak ezt a mértékegységet kezeli (Tools/Options…/Text Document/General/Settings/Measurement unit)
- A behelyettesítendő szövegeket érdemes valamilyen ritkán használt, speciális jelek közé tenni, (pl.:
###text###vagy@@@text@@@), azért hogy véletlenül se helyettesítsünk a dokumentumban olyan részeket, amiket nem volt szándékunkban…:)