Archív Inet.sk Pôvodný autor: Július Pastierik
03. 11. 2010 o 00:00 1370x

Makrá v OpenOffice.org – paralelné ukladanie vo viacerých formátoch

Potrebujete svoje dokumenty v OpenOffice.org ukladať nielen vo formátoch ODF, ale paralelne s tým aj vo formátoch Microsoft Office a PDF? V dnešnom dieli seriálu o programovaní makier si ukážeme, ako si to dokážete naprogramovať.
Makrá v OpenOffice.org – paralelné ukladanie vo viacerých formátoch

Reálna prax mnohých používateľov ukazuje potrebu ukladania dokumentov nielen do formátov ODT, ale aj do formátov Microsoft Office a PDF. Pravdaže, toto sa dá riešiť tým, že pri každom dokumente ho najprv uložíte v jednom formáte, potom v druhom a nakoniec dokument vyexportujete do PDF. Tento postup je však zbytočne pracný a preto si ukážeme makro, ktoré to urobí za nás.

Pri jeho tvorbe si musíme uvedomiť nielen to, že každý modul OpenOffice.org pracuje s rôznymi príponami, ale aj to, že môžeme práve spracovávať povedzme zošit vo formáte XLS a tento chceme uložiť aj do formátu ODS alebo presne naopak, práve spracovávame povedzme textový dokument vo formáte ODT a chceme ho uložiť aj do formátu DOC. Jediný bezproblematický je export do formátu PDF, pretože tento formát nie je možné v OpenOffice.org priamo otvárať a editovať. Pravdaže, aj tu existuje možnosť jeho editovania v module Draw, týmto sa však nebudeme v makre zaoberať.

Pretože pri ukladaní môžeme pracovať aj s novým súborom, ktorý ešte nebol uložený, musíme v makre volať štandardné funkcie OpenOffice.org „Ulož“ a „Ulož ako...“ a až potom budeme ukladať súbor do ostatných formátov. Pretože makro je, ako obvykle, pomerne dobre okomentované, nemusíme sa tejto problematike viac venovať a uvádzame už priamo jeho zdrojový kód.

 

REM Procedúra pre uloženie v rôznych formátoch

sub uloz_odf_ms_pdf

 dim oDokument

 dim args(0) as new com.sun.star.beans.PropertyValue

 dim sNazov$, sNovy$, sPripona$

 

 oDokument=ThisComponent

 sNazov=trim(oDokument.getURL()) ' Názov dokumentu

 if len(sNazov)>3 then ' Ak je zadaný názov dokumentu

  args(0).Name="FilterName" ' Ideme ukladať ako...

  sPripona=right(sNazov,3) ' Prípona

  sNazov=left(sNazov,len(sNazov)-3) ' Názov dokumentu bez prípony

  

  if oDokument.SupportsService("com.sun.star.text.TextDocument") then ' Ak sme v module Writer, tak ukladáme ako ODT, DOC, PDF

   ' Ak nebol dokument uložený ako ODT, uložíme ho aj ako ODT

   if lCase(sPripona)<>"odt" then

    args(0).Value="StarOffice XML (Writer)"

    sNovy=SNazov+"odt"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Ak nebol dokument uložený ako DOC, uložíme ho aj ako DOC

   if lCase(sPripona)<>"doc" then

    sNovy=SNazov+"doc"

    args(0).Value="MS Word 97"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Dokument uložíme ako PDF

   sNovy=SNazov+"pdf"

   args(0).Value="writer_pdf_Export"

   oDokument.storeToURL(sNovy,args())

   

  elseif oDokument.SupportsService("com.sun.star.sheet.SpreadsheetDocument") then ' Ak sme v module Calc, tak ukladáme ako ODS, XLS, PDF

   ' Ak nebol dokument uložený ako ODS, uložíme ho aj ako ODS

   if lCase(sPripona)<>"ods" then

    args(0).Value="StarOffice XML (Calc)"

    sNovy=SNazov+"ods"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Ak nebol dokument uložený ako XLS, uložíme ho aj ako XLS

   if lCase(sPripona)<>"xls" then

    sNovy=SNazov+"xls"

    args(0).Value="MS Excel 97"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Dokument uložíme ako PDF

   sNovy=SNazov+"pdf"

   args(0).Value="calc_pdf_Export"

   oDokument.storeToURL(sNovy,args())

   

  elseif oDokument.SupportsService("com.sun.star.presentation.PresentationDocument") then ' Ak sme v module Impress, tak ukladáme ako ODP, PPT, PDF

   ' Ak nebol dokument uložený ako ODP, uložíme ho aj ako ODP

   if lCase(sPripona)<>"odp" then

    args(0).Value="StarOffice XML (Impress)"

    sNovy=SNazov+"odp"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Ak nebol dokument uložený ako PPT, uložíme ho aj ako PPT

   if lCase(sPripona)<>"ppt" then

    sNovy=SNazov+"ppt"

    args(0).Value="MS Powerpoint 97"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Dokument uložíme ako PDF

   sNovy=SNazov+"pdf"

   args(0).Value="impress_pdf_Export"

   oDokument.storeToURL(sNovy,args())

   

  elseif oDokument.SupportsService("com.sun.star.drawing.DrawingDocument") then ' Ak sme v module Draw, tak ukladáme ako OSG, PDF

    ' Ak nebol dokument uložený ako ODG, uložíme ho aj ako ODG

   if lCase(sPripona)<>"odg" then

    sNovy=SNazov+"odg"

    args(0).Value="StarOffice XML (Draw)"

    oDokument.storeToURL(sNovy,args())

   endif

   ' Dokument uložíme ako PDF

   sNovy=SNazov+"pdf"

   args(0).Value="draw_pdf_Export"

   oDokument.storeToURL(sNovy,args())

  endif

 endif

end sub



REM Procedúra pre "Ulož ako... odt, doc, pdf"

sub Uloz_ako

 dim oDokument, oDispatcher

 

 oDokument=ThisComponent.CurrentController.Frame

 oDispatcher=createUnoService("com.sun.star.frame.DispatchHelper")

 

 oDispatcher.executeDispatch(oDokument, ".uno:SaveAs", "", 0, Array()) ' Volanie štandardnej funkcie "Ulož ako..."

 uloz_odf_ms_pdf ' Uloženie v ostatných formátoch

 

end sub



REM Procedúra pre "Uložiť odt, doc, pdf"

sub Uloz

 dim oDokument, oDispatcher

 

 oDokument=ThisComponent.CurrentController.Frame

 oDispatcher=createUnoService("com.sun.star.frame.DispatchHelper")

 oDispatcher.executeDispatch(oDokument, ".uno:Save", "", 0, Array()) ' Volanie štandardnej funkcie "Uložiť"

 uloz_odf_ms_pdf ' Uloženie v ostatných formátoch

end sub

 

 

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies