Sub ImageExport Const DPI=600 Const MEDIA_TYPE="image/png" Const PRIEVARDIS="png" ' Const MM_COLYJE=25.4 ' Const MSG_EKSPORTUOJAMAS_LAPAS="whole page" Const MSG_EKSPORTUOJAMAS_ZYMEJIMAS_A="selected ojects (" Const MSG_EKSPORTUOJAMAS_ZYMEJIMAS_B=")" ' Const MSG_BE_PAVADINIMO_ANTRASTE="Document without name" Const MSG_BE_PAVADINIMO_A="Cannot format image name because Document has no name." Const MSG_BE_PAVADINIMO_B="Save Document first." ' Const MSG_INFO_ANTRASTE="Exporting to Image" Const MSG_INFO_KA="What exporting: " Const MSG_INFO_TIPAS="Image type: " Const MSG_INFO_RAISKA_A="Image resolution: " Const MSG_INFO_RAISKA_B=" dpi" Const MSG_INFO_DYDIS_A="Image size: " Const MSG_INFO_DYDIS_B=" x " Const MSG_INFO_DYDIS_C=" (pixels)" Const MSG_INFO_FAILAS="Image file: " Const MSG_INFO_TESTI="Start exporting?" ' Const VB_CRITICAL=16 ' dialoge rodyti klaidos ženklą Const VB_INFORMATION=64 ' dialoge rodyti informacijos ženkliuką Const VB_QUESTION=32 ' dialogo lange rodyti klaustuko ženklą Const VB_OKONLY=0 ' dialoge rodyti tik OK mygtuką Const VB_YESNO=4 ' dialoge rodyti yes ir no mygtukus Const VB_DEFAULTBUTTON1=0 ' dialoge aktyvus bus pirmasis mygtukas Const VB_YES=6 ' vartotojas dialoge paspaudė yes mygtuką Dim plotis, aukstis As Long Dim obj_plotis, obj_aukstis As Long Dim failo_vardas As String Dim eksportuojama, pranesimas As String oDoc=ThisComponent oView=oDoc.CurrentController oSelection=oView.Selection ' Sužinom eksportuojamojo objekto dydį If IsEmpty(oSelection) then ' Nurodom kad eksportuosim visą lapą oObj=oView.CurrentPage eksportuojama=MSG_EKSPORTUOJAMAS_LAPAS ' sužinom lapo dydį plotis=oObj.Width aukstis=oObj.Height Else ' Nurodom kad eksportuosim tik pažymėtus objektus oObj=oSelection eksportuojama=MSG_EKSPORTUOJAMAS_ZYMEJIMAS_A & oObj.Count & MSG_EKSPORTUOJAMAS_ZYMEJIMAS_B ' Sužinom pažymėtos srities dydį Dim x_0, y_0, x_1, y_1 As Integer x_0=oObj(0).Position.X y_0=oObj(0).Position.Y x_1=x_0+oObj(0).Size.Width y_1=y_0+oObj(0).Size.Height For i=1 To (oObj.Count-1) If (oObj(i).Position.Xx_1) then x_1=oObj(i).Position.X+oObj(i).Size.Width If ((oObj(i).Position.Y+oObj(i).Size.Height)>y_1) then y_1=oObj(i).Position.Y+oObj(i).Size.Height Next i plotis=x_1-x_0 aukstis=y_1-y_0 End If ' Įsimenam paveikslo objekto dydį, matuojamą mm*100 obj_plotis=plotis If (obj_plotis<1) Then obj_plotis=1 obj_aukstis=aukstis If (obj_aukstis<1) Then obj_aukstis=1 ' Dydžio vienetai yra mm*100, juos verčiam į colius ir galo į pikselius plotis=Fix(plotis/MM_COLYJE/100*DPI) If (plotis<1) Then plotis=1 aukstis=Fix(aukstis/MM_COLYJE/100*DPI) If (aukstis<1) then aukstis=1 ' Nurodom būsimo paveikslo dydį Dim aFilterData(7) As New com.sun.star.beans.PropertyValue aFilterData(0).Name="PixelWidth" aFilterData(0).Value=plotis aFilterData(1).Name="PixelHeight" aFilterData(1).Value=aukstis aFilterData(2).Name="LogicalWidth" aFilterData(2).Value=obj_plotis aFilterData(3).Name="LogicalHeight" aFilterData(3).Value=obj_aukstis aFilterData(4).Name="Quality" aFilterData(4).Value=100 aFilterData(5).Name="ColorMode" aFilterData(5).Value=0 aFilterData(6).Name="ExportMode" aFilterData(6).Value=1 aFilterData(7).Name="Resolution" aFilterData(7).Value=DPI If (oDoc.hasLocation) Then ' Sužinom dokumento failo vardą failo_vardas=ConvertFromURL(oDoc.getURL) ' Surandam nuo kurios vietos prasideda failo prievardis Dim tasko_vieta As Integer tasko_vieta=0 For i=Len(failo_vardas) To 1 Step -1 If (Mid(failo_vardas, i, 1)=".") Then tasko_vieta=i Exit For Else If ((Mid(failo_vardas, i, 1)="/")or(Mid(failo_vardas, i, 1)="\")) Then Exit For End If End If Next i ' Panaikinam esamą prievardį If (tasko_vieta>0) Then failo_vardas=Left(failo_vardas, tasko_vieta-1) End If ' Failo vardui suteikiam naują prievardį failo_vardas=failo_vardas & "." & PRIEVARDIS Else MsgBox MSG_BE_PAVADINIMO_A & Chr(13) & MSG_BE_PAVADINIMO_B, VB_OKONLY+VB_CRITICAL, MSG_BE_PAVADINIMO_ANTRASTE Exit Sub End If ' Pranešam ką darysim pranesimas=MSG_INFO_KA & eksportuojama & Chr(13) pranesimas=pranesimas & MSG_INFO_TIPAS & MEDIA_TYPE & Chr(13) pranesimas=pranesimas & MSG_INFO_RAISKA_A & DPI & MSG_INFO_RAISKA_B & Chr(13) pranesimas=pranesimas & MSG_INFO_DYDIS_A & plotis & MSG_INFO_DYDIS_B & aukstis & MSG_INFO_DYDIS_C & Chr(13) pranesimas=pranesimas & MSG_INFO_FAILAS & failo_vardas & Chr(13) & Chr(13) pranesimas=pranesimas & MSG_INFO_TESTI If (MsgBox(pranesimas, VB_YESNO+VB_QUESTION+VB_DEFAULTBUTTON1) , MSG_INFO_ANTRASTE)<>VB_YES) Then Exit Sub End If oExporter=createUnoService("com.sun.star.drawing.GraphicExportFilter") oExporter.SetSourceDocument(oObj) Dim aArgs(2) As New com.sun.star.beans.PropertyValue Dim aURL As New com.sun.star.util.URL aURL.Complete=ConvertToURL(failo_vardas) aArgs(0).Name="MediaType" aArgs(0).Value=MEDIA_TYPE aArgs(1).Name="URL" aArgs(1).Value=aURL aArgs(2).Name="FilterData" aArgs(2).Value=aFilterData oExporter.Filter(aArgs) End Sub