Makrá v OpenOffice.org – tlač a export faktúry do PDF

Július Pastierik  /  06. 10. 2010, 07:18

Potrebujete program, ktorý by automaticky tlačil faktúru na papier a zároveň ju aj exportoval do PDF formátu? V tomto dieli seriálu o programovaní makier si ukážeme, ako to dokážete jednoducho naprogramovať v prostredí OpenOffice.org.

Začiatkom augusta tohto roku sme si v rámci seriálu o programovaní makier v OpenOffice.org ukázali jednoduchú faktúru vo formáte A5, kde sme tlačili dve kópie na jednej strane. V súčasnosti sa však čoraz častejšie stretávame s tým, že faktúry pre odberateľov nie je potrebné tlačiť, ale stačí ich poslať elektronicky v PDF formáte. Pravdaže, popri tom si mnohí potrebujú vytlačiť kópiu pre seba.

A tu nastáva bod, ktorý je potrebné vyriešiť – kým v elektronickej faktúre je podpis a pečiatka súčasťou dokumentu, pri tlači tento „obrázok“ prekáža a potrebujeme ho odstrániť. Aby ste nemuseli tieto veci riešiť manuálne, ukážeme si makro, ktoré to urobí za vás.

Aby sme mohli takéto makro vyriešiť, musí byť splnených niekoľko požiadavok aj v základnom dokumente – obrázok podpisu a pečiatky musí byť jednoznačne označený názvom Peciatka. Týmto zároveň upozorňujeme, že pri vkladaní obrázku s vašim podpisom a pečiatkou do pripravených tlačív faktúry musíte urobiť toto pomenovanie, inak makro bude tento obrázok tlačiť. Pravdaže,makro vyriešime tak, že ak sa v dokumente takýto obrázok nenachádza, nič sa nestane.



Pretože pri exporte do PDF väčšinou chceme, aby sa názov súboru líšil faktúra od faktúry, budeme do neho pridávať číslo faktúry. Pre náš príklad sa toto musí nachádzať v tabuľke „Tabulka1“ v bunke „B1“. Export budeme riešiť tak, že PDF súbor sa vytvorí v tom istom adresári, kde je uložený základný ODT súbor, v ktorom zadávame faktúru.



Podobne, ako minule, aj teraz sme pripravili hotové tlačivá, ktoré obsahujú následne uvedené makrá. Aby sa s tlačivom pracovalo pohodlne, nachádza sa na nich tlačidlo Tlač, pomocou ktorého sa automaticky exportuje súbor do PDF formátu s názvom Fa_cislo-faktury.pdf a zároveň sa vytlačí. Ako písmo je použité Open Source písmo Linux Libertine – linuxlibertine.sourceforge.net. Pozor, dokument obsahuje makrá, ktoré je potrebné pri jeho otváraní povoliť.



Stiahnite si tlačivo faktúr v slovenskom alebo českom jazyku. Pozor, ako obrázok podpisu a pečiatky je použité logo Inet.sk, ktorý si musíte nahradiť iným.

A pre programátorov teraz uvádzame vlastné makro pre exportovanie a tlač dokumentu:

' Cesta k aktuálnemu dokumentu – hľadá sa posledná pozícia lomky
function DajCestu as string
 dim sCesta$, sPom$
 dim kde%, i%
 
 sCesta=trim(ThisComponent.getURL()) ' Názov dokumentu
 sPom=sCesta
 
 kde=1
 do
  i=instr(kde,sPom,"/")
  if i<>0 then kde=i+1 ' Posunieme sa za lomku
 loop until i=0
 DajCestu=left(sCesta,kde-1)
end function

REM Procedúra exportuje dokument s obrázkom "Peciatka" do PDF a následne ho bez tohto obrázku vytlačí na tlačiareň
sub Tlac_fa
 dim oDokument, oTabulka, oBunka, oObrazky, oObrazok
 dim sSubor$
 dim args(0) as new com.sun.star.beans.PropertyValue
 
 oDokument=StarDesktop.CurrentComponent.GetTextTables()
 ' Číslo faktúry z tabuľky 1
 oTabulka=oDokument.GetByName("Tabulka1")
 oBunka=oTabulka.getCellByName("B1") ' Bunka s čísloma FA
 sSubor=dajcestu+"Fa_"+trim(oBunka.GetString())+".pdf"
 
 oDokument=ThisComponent
 
 oObrazky=oDokument.getDrawPage()
 for i=1 to oObrazky.getCount()-1
  oObrazok=oObrazky.getByIndex(i)
  if oObrazok.name="Peciatka" then oObrazok.Print=True ' Do PDF exportujeme aj s obrázkom pečiatky (podpisu)
 next i
 
 args(0).Name = "FilterName"
 args(0).Value = "writer_pdf_Export"
 
 ThisComponent.storeToURL(sSubor,args()) ' Export do PDF
 
 oObrazky=oDokument.getDrawPage()
 for i=1 to oObrazky.getCount()-1
  oObrazok=oObrazky.getByIndex(i)
  if oObrazok.name="Peciatka" then oObrazok.Print=false ' Tlačíme bez obrázku pečiatky (podpisu)
 next i
 oDokument.print(array()) ' Tlač
end sub

Neprehliadnite: