Július Pastierik / 12. 01. 2011, 11:13
Potrebujete v OpenOffice.org previesť hromadnú zmenu ukotvenia všetkých obrázkov? Alebo ich potrebujete embedovať (vložiť) obrázky priamo do dokumentu? Naprogramujte si na tieto účely makro.
Pri vkladaní obrázkov do OpenOffice.org chýba v súčasnosti možnosť, ako chcete vkladaný obrázok ukotviť a pokiaľ robíte s veľa obrázkami, je následná práca pomerne nepohodlná. Podobný prípad vzniká aj vtedy, ak už máte dokument predpripravený a z ľubovoľného dôvodu potrebujete zmeniť ukotvenie všetkých obrázkov.
Ďalšia problematika je aj priehľadnosť obrázkov, pretože napr. pri exporte do PDF/A formátu nie je priehľadnosť podporovaná a preto je vhodné, aby ste prípadné nastavenia priehľadnosti obrázkov zrušili ešte v pôvodnom dokumente, aby ste videli, ako bude výsledok vyzerať skôr, ako export spustíte.
Posledným problémom, ktorým sa budeme teraz zaoberať, je otázka embedovania obrázkov dovnútra dokumentu. Tento problém vzniká napr. pri kopírovaní dokumentu z internetu, kde sa vám, samozrejme, namiesto reálnych obrázkov vložia ich internetové odkazy. Toto však pri ďalšom spracovávaní mnohokrát nepostačuje a preto je potrebné previesť embedovanie, t. j. fyzické vloženie obrázkov do dokumentu.
Na všetky tieto účely si pripravíme makrá, ktoré budú spomínané problémy riešiť za vás. Preto, aby ste dokázali vkladať obrázky, hromadne zmeniť ich ukotvenie či priehľadnosť, si musíte pripraviť príslušné dialógové okná.
V našom príklade si pripravíme iba jedno okno, kde vložíme prepínač, čo chceme robiť (vložiť obrázok, nastaviť ukotvenie všetkých obrázkov, nastaviť priehľadnosť všetkých obrázkov) a podľa hodnoty tohto prepínača budeme následne nastavovať ďalšie parametre (pri vkladaní či zmene ukotvenia typ ukotvenia – ako znak, k stránke, k odseku alebo ku znaku; pri vkladaní či zmene priehľadnosti percento priehľadnosti).
V dnešnom, prvom dieli si uvedieme na začiatok makrá pre prácu s dialógom, t. j. makrá pre jazykovú lokalizáciu, zobrazovanie parametrov podľa hodnoty prepínača a vlastné makro pre zobrazenie dialógu.
dim dlg as object
REM Funkcia pre zistenie jazyka OO.o
function Jazyk_OOo as string
dim ConfigProvider, MasterKey as object
dim NodePath(0) as new com.sun.star.beans.PropertyValue
NodePath(0).Name = "nodepath"
NodePath(0).Value = "org.openoffice.Setup/L10N/"
ConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
MasterKey = ConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", NodePath())
Jazyk_OOo = left(MasterKey.getByName("ooLocale"),2) '"sk", "cs", ...
end function
REM Procedúra pre nastavenie jazyka dialógu
Sub Set_jazyk_dialgu(oDlg, sNazov, sZahlavie)
dim riadok, premenna, definicia as string
dim rovna as integer
dim sf, inStream, inFile ' Pre čítanie z lokalizačného súboru
on error resume next
if fileexists(sNazov) then ' Ak lokalizačný súbor existuje, tak načítame definície do premenných
sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
inStream = sf.openFileRead(sNazov)
inFile = createUnoService("com.sun.star.io.TextInputStream")
inFile.InputStream = inStream
inFile.Encoding = "UTF-8" ' lokalizačný súbor musí byť v UTF-8, inak nebude dobrá diakritika
Do While not inFile.IsEOF
riadok = inFile.readLine ' namiesto Line Input #subor, riadok
rovna=instr(riadok,"=")
if rovna<>0 then
premenna=trim(left(riadok,rovna-1)) ' Budeme ignorovať medzery
definicia=trim(right(riadok,len(riadok)-rovna))
if premenna=sZahlavie then
oDlg.Title=definicia
else
oDlg.model.getByName(premenna).setpropertyvalue("Label",definicia)
endif
end if
loop
' Zatvorenie definičného súboru – namiesto close #subor
inStream.closeInput
inFile.closeInput
end if
end sub
REM Procedúra pre zmenu viditeľnosti okna pre vstup názvu súboru
sub Vkladanie_Initiated
if dlg.model.Vloz.State=1 then ' Ak vkladáme obrázok, vidíme výber súboru, nastavenie ukotvenia aj priehľadnosti
dlg.getControl("Subor").Visible=True
dlg.getControl("Label1").Visible=True
dlg.getControl("AS_CHARACTER").Visible=True
dlg.getControl("AT_PAGE").Visible=True
dlg.getControl("AT_PARAGRAPH").Visible=True
dlg.getControl("AT_CHARACTER").Visible=True
dlg.getControl("Label2").Visible=True
dlg.getControl("PriehlCis").Visible=True
elseif dlg.model.Ukotvi.State=1 then ' Ak ukotvujeme všetky obrázky, nevidíme výber súboru a priehľadnosť
dlg.getControl("Subor").Visible=False
dlg.getControl("Label1").Visible=True
dlg.getControl("AS_CHARACTER").Visible=True
dlg.getControl("AT_PAGE").Visible=True
dlg.getControl("AT_PARAGRAPH").Visible=True
dlg.getControl("AT_CHARACTER").Visible=True
dlg.getControl("Label2").Visible=False
dlg.getControl("PriehlCis").Visible=False
else ' Ak nastavujeme priehľadnosť, nevidíme výber súboru a ukotvenie
dlg.getControl("Subor").Visible=False
dlg.getControl("Label1").Visible=False
dlg.getControl("AS_CHARACTER").Visible=False
dlg.getControl("AT_PAGE").Visible=False
dlg.getControl("AT_PARAGRAPH").Visible=False
dlg.getControl("AT_CHARACTER").Visible=False
dlg.getControl("Label2").Visible=True
dlg.getControl("PriehlCis").Visible=True
endif
end sub
REM Procedúra pre vkladanie a zmenu ukotvenia obrázkov
Sub Nastav_ukotvenie_obrazkov
dim iUkotvenie, iPriehladnost
dim nazov as string
DialogLibraries.LoadLibrary("JP_ukotvi_obrazok")
dlg=CreateUnoDialog(DialogLibraries.JP_ukotvi_obrazok.Dialog_ukotvenie) ' Sprístupnenie dialógu
kde=basiclibraries.getLibraryLinkURL("JP_ukotvi_obrazok") ' Adresár, kde je rozšírenie nainštalované
nazov=left(kde,len(kde)-10)+"jp_ukotvi_obrazok_"+Jazyk_OOo+".txt" ' Súbor s jazykovou lokalizáciou
Set_jazyk_dialgu(dlg, nazov, "Dialog_ukotvenie") ' Nastavenie jazyka dialógu
dlg.model.Vloz.State=1 ' Prednastavené nastavenie vkladania obrázku
dlg.model.Ukotvi.State=0
dlg.model.AS_CHARACTER.State=1 ' Prednastavené nastavenie ukotvenia je "Ako znak"
dlg.model.AT_PAGE.State=0
dlg.model.AT_PARAGRAPH.State=0
dlg.model.AT_CHARACTER.State=0
if dlg.execute() then
if dlg.model.AS_CHARACTER.State=1 then iUkotvenie=com.sun.star.text.TextContentAnchorType.AS_CHARACTER ' Ako znak
if dlg.model.AT_PAGE.State=1 then iUkotvenie=com.sun.star.text.TextContentAnchorType.AT_PAGE ' K strane
if dlg.model.AT_PARAGRAPH.State=1 then iUkotvenie=com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH ' K odseku
if dlg.model.AT_CHARACTER.State=1 then iUkotvenie=com.sun.star.text.TextContentAnchorType.AT_CHARACTER ' K znaku
iPriehladnost=dlg.model.PriehlCis.Value
if dlg.model.Vloz.State=1 then ' Vkladáme obrázok
nazov=trim(dlg.model.Subor.text)
if nazov<>"" then
Vloz_obrazok(ConvertToURL(dlg.model.Subor.text), iUkotvenie, iPriehladnost)
end if
elseif dlg.model.Ukotvi.State=1 then ' Ukotvujeme všetky obrázky
Zmen_ukotvenie(iUkotvenie)
else ' Nastavujeme priehľadnosť všetkých obrázkov
Zmen_priehladnost(iPriehladnost)
end if
end if
dlg.dispose() ' Zatvorenie dialógu
end sub
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk