Sub vlozObr2 'vloží obrázek na pozici viditelného kurzoru s přednastaveným ukotvením a svislým zarovnáním
dim oDoc, fSoub, sUrl, oVCur, oPos, oImg, oSel, oCur, document, dispatcher
dim oSize as new com.sun.star.awt.Size
oDoc=thisComponent
document=oDoc.CurrentController.Frame : dispatcher=createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Escape", "", 0, array()) 'je-li něco označeno tak odznačit
oVCur=oDoc.CurrentController.getViewCursor() 'viditelný kurzor (po odznačení je na konci bývalého výběru)
oPos=oVCur.getStart() 'pozice viditelného kurzoru
fSoub=CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 'služba pro otevírací dialog souboru
if fSoub.execute()=1 then 'je-li vybrán soubor
sUrl=fSoub.files(0) 'cesta k vybranému souboru
else 'nebyl vybrán soubor
'msgbox("Nebyl vybrán žádný obrázek",48,"Chybný výběr obrázku") 'případné upozornšění že jste si nevybrali žádný soubor
exit sub
end if
fSoub.dispose() 'uvolnit otevírací službu
oImg=oDoc.createInstance("com.sun.star.text.TextGraphicObject") 'objekt obrázku
oImg.graphicUrl=sUrl 'url
oImg.AnchorType=1 'UKOTVIT JAKO ZNAK =com.sun.star.text.TextContentAnchorType.AS_CHARACTER
oImg.VertOrient=5 'SVISLE NA STŘED ZNAKU =com.sun.star.text.VertOrientation.CHAR_CENTER
oImg.attach(oPos) 'vložit obrázek na pozici
oSize=oImg.ActualSize 'původní velikost obrázku
i=2/3 'koeficinet pro "změnu DPI" aby Libre obrázky nezvětšoval
oSize.width=oSize.width*i : oSize.height=oSize.height*i
oImg.Size=oSize 'nastavit přepočtenou velikost
End Sub
Makro je podrobně popsáno zde
https://uloz.to/file/M4P0ypuZnPLc/libre … o-znak-pdf
Možná by se k tomuto vláknu hodil i doplňující dotaz - lze nastavit defaultní vkládání obrázků s atributem: bez obtékání textu a přichytit jako znak? Mnohokrát do Writeru doplňuju tabulku z Calc vkládáním jako obrázek BMP a další kroky, které jsem uvedl jsou bohužel "otravné".
Díky. Pavel
]]>Sub zmenaRozmeruObrazku 'změní rozměry obrázku ve Writeru
const a=50 'výchozí hodnota v inputboxu
dim oDoc, elem, oSize, iC as double
iC=CLng(inputBox("%","Změnit rozměry obrázku na",a))/100 'inputbox
oDoc=thisComponent
elem=oDoc.getCurrentSelection() 'aktuální výběr
if elem.supportsService("com.sun.star.text.TextGraphicObject") then 'jde o obrázek
oSize=elem.size 'rozměry obrázku
oSize.width=CLng(oSize.width*iC) 'znásobit šířku obrázku
oSize.height=CLng(oSize.height*iC) 'znásobit výšku obrázku
elem.size=oSize 'dát obrázku novou velikost
end if
End Sub
Případně kdybyste měl stejné procento pro všechny obrázky, tak se to dá udělat ve smyčce aby je prostě zmenšil všechny
]]> Vlastní html se musí kopírovat jinak. Klepnete do okna browseru, uděláte výběr, nebo Ctrl+A, následně zkopírujete do sešitu. Máte tam sice klikačky, ale rozložení je pryč, objeví se nechtěné rámečky a také objekty které se zobrazí v původní velikosti. Asi Vám jde právě o tento způsob.
Ale toto podle Vašeho požadavku opravdu nelze. Lze sice editovat vše a dosáhnout podobnosti. Když to uložíte zpět jako html tak to může vypadat stejně, ale ne vždy. Naše ukládání podporuje pouze obyčejné html. Běžně jsou webovky pod php, html5 a podobně.
Existuje jedna hybridní možnost. Stáhnete obrázek a z něj uděláte "klikací mapu". Tam potom dáte všechny odkazy, respektive nasimulujete například makrem otevírání jako když by tam byl naveden Input/Output. Je to dost pracné, ne vše se dá suplovat, uživatel pozná, že to je divné. Ale je to schůdné.
Jde tedy spíš o to, co s tím chcete následně dělat. Aby to chodilo ve Writeru je to právě tato možnost. Ale také hrozí do určité míry porušení autorských práv k různým autorům (stejně jako byste vytvořila kopii stránky klasickým způsobem).