© Ольшевский Андрей Георгиевич Консультирую по скайп: da.irk.ru Сайт super-code.ru наполняется бесплатными материалами
Программирование графики в OpenOffice и LibreOffice
Оглавление 1. Программирование графики в приложениях OpenOffice и Libreoffice: XdrawPagesSupplier 3 1.1 Установка размеров точечного рисунка (Bitmap) [1; стр. 203] 3 1.3 Графика в электронных таблицах Calc 8 1.4 Графика в текстовом редакторе Writer 12 2. Сервис com.sun.star.drawing.GraphicObjectShape в Writer 17 3. Сервис com.sun.star.graphic.GraphicProvider в Writer 27 4. UNO структура com.sun.star.beans.PropertyValue в Writer 28 5. Универсальные программы для разных типов файлов 28 6. Документы Draw и Impress 29 6.1 Свойства, методы, интерфейсы UNO в Draw 30 6.2 Свойства, методы, интерфейсы UNO в Impress 38 Литература 49 Программирование на языке OpenOffice Basic и LibreOffice Basic
Программирование графики в приложениях OpenOffice и Libreoffice: XdrawPagesSupplierУстановка размеров точечного рисунка (Bitmap) [1; стр. 203]Если Вы загружаете изображение, его размер может оказаться не тем, какой Вам нужен. Первым указал мне на эту проблему Vance Lankhaar. Его первое решение создавало очень маленькое изображение. Листинг: Вставить GraphicObjectShape. 'Author: Vance Lankhaar 'email: vlankhaar@linux.ca Dim oDesktop As Object, oDoc As Object Dim mNoArgs() Dim sGraphicURL As String Dim sGraphicService As String, sUrl As String Dim oDrawPages As Object, oDrawPage As Object Dim oGraphic As Object sGraphicURL = "http://api.openoffice.org/branding/images/logonew.gif" sGraphicService = "com.sun.star.drawing.GraphicObjectShape" sUrl = "private:factory/simpress" oDesktop = createUnoService("com.sun.star.frame.Desktop") oDoc = oDesktop.loadComponentFromURL(sUrl,"_default",0,mNoArgs()) oDrawPages = oDoc.DrawPages oDrawPage = oDrawPages.insertNewByIndex(1) oGraphic = oDoc.createInstance(sGraphicService) oGraphic.GraphicURL = sGraphicURL oDrawPage.add(oGraphic) Первое решение (автор Laurent Godard) устанавливает размер изображения в максимально допустимый размер. Листинг: Установить для изображения максимальный поддерживаемый размер. 'Maximum size, lose the aspect ration. Dim TheSize As New com.sun.star.awt.Size Dim TheBitmapSize As New com.sun.star.awt.Size Dim TheBitmap as object Dim xmult as double, ymult as double
TheBitmap=oGraphic.GraphicObjectFillBitmap TheBitmapSize=TheBitmap.GetSize
xmult=TwipsPerPixelX/567*10*100 ymult=TwipsPerPixelY/567*10*100
TheSize.width=TheBitmapSize.width*xmult TheSize.height=TheBitmapSize.height*ymult
oGraphic.setsize(TheSize) Vance Lankhaar дал окончательное решение, которое максимизирует размер, но сохраняет пропорции изображения. Листинг: Установить максимальный размер изображения при сохранении пропорций. oBitmap = oGraphic.GraphicObjectFillBitmap aBitmapSize = oBitMap.GetSize iWidth = aBitmapSize.Width iHeight = aBitmapSize.Height
iPageWidth = oDrawPage.Width iPageHeight = oDrawPage.Height dRatio = CDbl(iHeight) / CDbl(iWidth) dPageRatio = CDbl(iPageHeight) / CDbl(iPageWidth)
REM This is is fit-maximum-dimension REM s/</>/ for fit-minimum-dimension If (dRatio < dPageRatio) Then aSize.Width = iPageWidth aSize.Height = CInt(CDbl(iPageWidth) * dRatio) Else aSize.Width = CInt(CDbl(iPageHeight) / dRatio) aSize.Height = iPageHeight End If
aPosition.X = (iPageWidth - aSize.Width)/2 aPosition.Y = (iPageHeight - aSize.Height)/2
oGraphic.SetSize(aSize) oGraphic.SetPosition(aPosition) Draw и ImpressЛистинги программ на языке OpenOffice.org Basic и рисунки далее из книги Andrew D. Pitonyak "OpenOffice.org Macros Explained" от 2 января 2015 г [2] представлены с переводом комментариев в скобках. Listing 288. Export each graphics page to a JPG (экспорт каждой графической страницы в JPG). oFilter=CreateUnoService("com.sun.star.drawing.GraphicExportFilter") Dim args(1) as new com.sun.star.beans.PropertyValue For i=0 to oDoc.getDrawPages().getcount()-1 oPage = oDoc.getDrawPages().getByIndex(i) name = oPage.name oFilter.setSourceDocument(oPage) args(0).Name = "URL" args(0).Value = "file:///c|/"&oPage.name&".JPG" args(1).Name = "MediaType" args(1).Value = "image/jpeg" oFilter.filter(args()) Next Listing 289. Add a proportionally sized graphic to a draw page (добавление пропорционального размера графики в страницу рисунка). Sub AddProportionalGraphic Dim oDoc 'Newly created Impress document Dim oDrawPage 'The draw page that will contain the graphic image Dim oGraph 'The created graphic image
REM Create an Impress presentation document! oDoc = StarDesktop.loadComponentFromURL("private:factory/simpress",_ "_default", 0, Array())
REM Insert a second draw page if desired, REM leaving the first draw page untouched! REM Could use the property DrawPages REM oDrawPage = oDoc.DrawPages.insertNewByIndex(1) REM oDrawPage = oDoc.getDrawPages().insertNewByIndex(1) REM In this case, simply use the first draw page! oDrawPage = oDoc.getDrawPages().getByIndex(0)
REM Create a graphics object that can be inserted into the document oGraph = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
REM Set the URL of the image so that it can be added to the document oGraph.GraphicURL = "http://www.openoffice.org/images/AOO_logos/orb.jpg" oDrawPage.add(oGraph)
REM If I stop here, there will be a very small graphic image in the REM upper-left corner of the document. This is pretty much useless. REM Although I could simply size the graphic to the same size as the bitmap REM size, I choose instead to size this so that it is as large as possible REM without changing the aspect ratio. REM Determine the ratio of the height to the width for the image and REM also for the draw page.
Dim oNewSize As New com.sun.star.awt.Size 'New Image size Dim oBitmapSize As New com.sun.star.awt.Size 'Bitmap size
Dim dImageRatio As Double 'Ratio of the height to width Dim dPageRatio As Double 'Ratio of the height to width
oBitmapSize = oGraph.GraphicObjectFillBitmap.GetSize dImageRatio = CDbl(oBitmapSize.Height) / CDbl(oBitmapSize.Width) dPageRatio = CDbl(oDrawPage.Height) / CDbl(oDrawPage.Width)
REM Compare the ratios to see which is wider, relatively speaking If dPageRatio > dImageRatio Then oNewSize.Width = oDrawPage.Width oNewSize.Height = CLng(CDbl(oDrawPage.Width) * dImageRatio) Else oNewSize.Width = CLng(CDbl(oDrawPage.Height) / dImageRatio) oNewSize.Height = oDrawPage.Height End If
REM Center the image on the Impress page! Dim oPosition as new com.sun.star.awt.Point oPosition.X = (oDrawPage.Width - oNewSize.Width)/2 oPosition.Y = (oDrawPage.Height - oNewSize.Height)/2
oGraph.SetSize(oNewSize) oGraph.SetPosition(oPosition) End Sub Listing 290. Draw lines in a new graphic document (рисование линий в новом графическом документе (см. рисунок 1)). Sub DrawLinesInDrawDocument Dim oDoc 'Newly created Draw document Dim oDrawPage 'The draw page that will contain the graphics image Dim oShape 'Shape to insert
REM Create a new Draw document! oDoc = StarDesktop.loadComponentFromURL("private:factory/sdraw",_ "_default", 0, Array())
REM Use the first draw page oDrawPage = oDoc.getDrawPages().getByIndex(0)
Dim i As Long Dim oPos as new com.sun.star.awt.Point Dim oSize as new com.sun.star.awt.Size Dim dStepSize As Double dStepSize = CDbl(oDrawPage.Height) / 10
For i = 0 To 10 oShape = oDoc.createInstance("com.sun.star.drawing.LineShape") oShape.LineColor = rgb(0, 255 - 20 * i, 20 * i) oShape.LineWidth = 250
oPos.X = 0 oPos.Y = CLng(CDbl(i) * dStepSize) oShape.setPosition(oPos)
oSize.width = oDrawPage.Width oSize.height= oDrawPage.Height - 2 * oPos.Y oShape.setSize(oSize) oDrawPage.add(oShape) Next End Sub
Рисунок 1. These lines drawn in a Draw document overlap (линии, наложенные на Draw документ) Графика в электронных таблицах CalcListing 291. Draw lines in a Calc document (рисование линий в документе Calc (см. рисунок 2)). Sub InsertLineInCalcDocument Dim oLine Dim oCell1 Dim oCell2 Dim oSheet
Dim oPos as new com.sun.star.awt.Point Dim oSize as new com.sun.star.awt.Size Dim oPage
oSheet = ThisComponent.Sheets(0) oCell1 = oSheet.getCellByPosition(1, 1) oCell2 = oSheet.getCellByPosition(3, 3)
oLine = ThisComponent.createInstance("com.sun.star.drawing.LineShape")
oPos.x = oCell1.Position.X oPos.y = oCell1.Position.Y oLine.Position = oPos
oSize.Width = oCell2.Position.X - oCell1.Position.X oSize.Height = oCell2.Position.Y - oCell1.Position.Y oLine.Size = oSize
oLine.LineWidth = 4 oLine.LineColor = RGB(128, 0, 0) oPage = oSheet.getDrawPage()
oPage.add(oLine)
REM You must do this AFTER inserting the line into the page. oLine.LineEndName = "Arrow" oLine.LineStartName = "Double Arrow" End Sub
Рисунок 2. Draw a line in a Calc document (рисование линии в Calc документе) Листинг: Вставить изображение и расположить его в документе OOo Calc [1; стр. 207] (вставляет изображение с таким путем sGraphicURL = "file:///C:/Program Files (x86)/LibreOffice 4/share/gallery/bullets/blkpearl.gif"). Sub InsertAndPositionGraphic REM Get the sheet Dim vSheet vSheet = ThisComponent.Sheets(0)
REM Add the graphics object Dim oDesktop As Object, oDoc As Object Dim mNoArgs() Dim sGraphicURL As String Dim sGraphicService As String, sUrl As String Dim oDrawPages As Object, oDrawPage As Object Dim oGraphic As Object sGraphicURL = "file:///OOo/share/gallery/bullets/blkpearl.gif" sGraphicService = "com.sun.star.drawing.GraphicObjectShape" oDrawPage = vSheet.getDrawPage() oGraphic = ThisComponent.createInstance(sGraphicService) oGraphic.GraphicURL = sGraphicURL oDrawPage.add(oGraphic)
REM Size the object Dim TheSize As New com.sun.star.awt.Size TheSize.width=400 TheSize.height=400 oGraphic.setsize(TheSize)
REM Position the object Dim aPosition As New com.sun.star.awt.Point aPosition.X = 2540 aPosition.Y = 2540 oGraphic.setposition(aPosition) End Sub Листинг: Экспортировать текущую страницу как графический объект указанного размера [1; стр. 209]. Sub ExportCurrentPageOrSelection REM Filter dependent filter properties Dim aFilterData (4) As New com.sun.star.beans.PropertyValue Dim sFileUrl As String
aFilterData(0).Name = "PixelWidth" aFilterData(0).Value = 1000 aFilterData(1).Name = "PixelHeight" aFilterData(1).Value = 1000 aFilterData(2).Name ="LogicalWidth" aFilterData(2).Value = 1000 aFilterData(3).Name ="LogicalHeight" aFilterData(3).Value = 1000 aFilterData(4).Name ="Quality" aFilterData(4).Value = 60
sFileUrl = "file:///d:/test2.jpg"
REM A smart person would force this to be a Draw or Impress document xDoc = ThisComponent xView = xDoc.currentController xSelection = xView.selection If isEmpty( xSelection ) Then xObj = xView.currentPage Else xObj = xSelection End If Export( xObj, sFileUrl, aFilterData() ) End Sub
Sub Export( xObject, sFileUrl As String, aFilterData ) Dim xExporter
xExporter = createUnoService( "com.sun.star.drawing.GraphicExportFilter" ) xExporter.SetSourceDocument( xObject )
Dim aArgs (2) As New com.sun.star.beans.PropertyValue Dim aURL As New com.sun.star.util.URL
aURL.complete = sFileUrl aArgs(0).Name = "MediaType" aArgs(0).Value = "image/jpeg" aArgs(1).Name = "URL" aArgs(1).Value = aURL aArgs(2).Name = "FilterData" aArgs(2).Value = aFilterData xExporter.filter( aArgs() ) End Sub Следующий макрос работает в Draw, Impress и Calc. Листинг: Нарисовать линию в документе OOo Calc [1; стр. 211] (рабочая программа). Sub DrawLineInCalcDocument Dim xPage as object, xDoc as object, xShape as object Dim aPosition As New com.sun.star.awt.Point Dim TheSize As New com.sun.star.awt.Size
xDoc = thiscomponent xPage = xDoc.DrawPages(0) xShape = xDoc.createInstance( "com.sun.star.drawing.LineShape" ) xShape.LineColor = rgb( 255, 0, 0 ) xShape.LineWidth = 100 aPosition.X = 2500 aPosition.Y = 2500 xShape.setPosition(aPosition) TheSize.width = 2500 TheSize.height=5000 xShape.setSize(TheSize) xPage.add( xShape ) End Sub Графика в текстовом редакторе WriterНиже представлен перевод некоторых предложений из книги [3]. Each Writer document contains a single draw page for the entire document. Каждый документ Writer содержит одну страницу рисования для всего документа. In Writer, the page is like a transparent layer containing drawing data on top of the standard document data. В Writer эта страница подобно прозрачному слою содержит рисуемые данные в верхней части стандартных данных документа. Writer documents do not support the XDrawPagesSupplier interface, because they only contain a single draw page. Документы Writer не поддерживают интерфейс XDrawPagesSupplier, потому что они содержат только одну нарисованную страницу. They do, however, support the XDrawPageSupplier interface, which defines the single object method getDrawPage(). Они, однако, поддерживают интерфейс XDrawPageSupplier, который определяет один объект Метод getDrawPage (). The macro in Listing 290 uses optional draw page properties — namely height and width. Макрос в листинге 290 использует дополнительные свойства страницы — а именно высоту и ширину. The draw page from a Writer document does not contain these properties. На странице рисования в документе Writer не содержится этих свойств. The draw page in a Writer document has other peculiarities, however. Страница рисования в документе Writer имеет другие особенности, однако. For example, adding lines to the draw page — as done in Listing 290 — adds them as characters at the cursor position rather than interpreting the positions as specific locations in the document. Например, добавление строк на страницу рисования - как это было сделано в листинге 290 - добавляет их в качестве символов в позиции курсора, а не позиции конкретных мест в документе. The macro in Listing 292 draws lines to demonstrate this behavior (also see Figure 86). Макрос в листинге 292 рисует линии, чтобы продемонстрировать такое поведение (также см Рисунок 86). Следующий листинг очень похож на листинг «Draw lines in a new graphic document» выше. На стр 555 [2 от 02.01.2015] Shapes подробно. Listing 292. Draw lines in a Write document [2; стр. 316] (рисование линий в документе Write (см. рисунок 3)). Sub DrawLinesInWriteDocument Dim oDoc 'Newly created Writer document '(вновь созданный Writer документ) Dim oDrawPage 'The draw page that will contain the graphics image '(рисуемая страница, которая будет содержать графическое изображение) Dim oShape 'Shape to insert (фигура для вставки)
REM Create a new Writer document (создание нового Writer документа) oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter",_ "_default", 0, Array())
oDrawPage = oDoc.getDrawPage()
Dim i As Long Dim oSize as new com.sun.star.awt.Size Dim dStepSize As Double dStepSize = 800
For i = 0 To 10 oShape = oDoc.createInstance("com.sun.star.drawing.LineShape") oShape.LineColor = rgb(255, 255 - 20 * i, 20 * i) oShape.LineWidth = 50
oSize.width = dStepSize - CLng(CDbl(i) * dStepSize / 10)/2 oSize.width = CLng(dStepSize/5 * i - dStepSize) oSize.height= dStepSize oShape.setSize(oSize) oDrawPage.add(oShape) Next End Sub
Рисунок 3. Эти линии, нарисованные в документе Writer, рассматриваются как символы Коды для рисования разных фигур ' oShape = oDoc.createInstance("com.sun.star.drawing.EllipseShape") ' Размеры: ' oShape = oDoc.createInstance("com.sun.star.drawing.MeasureShape") ' A series of Bezier lines 'oShape = oDoc.createInstance("com.sun.star.drawing.OpenBezierShape") ' PolyLinePathShape 'oShape = oDoc.createInstance("com.sun.star.drawing.PolyLinePathShape") ' Прямоугольники 'oShape = oDoc.createInstance("com.sun.star.drawing.RectangleShape") ' Прямоугольники 'oShape = oDoc.createInstance("com.sun.star.drawing.RectangleShape") ' Display a graphic object such as a bitmap image 'oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape") Listing 343. Insert a Graphics as a link at the start of the document (вставка графики, как ссылки при загрузке документа). Sub InsertGraphicObject(oDoc, sURL$) Dim oCursor Dim oGraph Dim oText
oText = oDoc.getText() oCursor = oText.createTextCursor() oCursor.goToStart(FALSE) oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")
With oGraph .GraphicURL = sURL .AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER .Width = 6000 .Height = 8000 End With
'now insert the image into the text document oText.insertTextContent( oCursor, oGraph, False ) End Sub Listing 344. Guess image size (оценка размера изображения). Function RecommendGraphSize(oGraph) Dim oSize Dim lMaxW As Double ' Maximum width in 100th mm Dim lMaxH As Double ' Maximum height in 100th mm
lMaxW = 6.75 * 2540 ' 6.75 inches lMaxH = 9.5 * 2540 ' 9.5 inches
If IsNull(oGraph) OR IsEmpty(oGraph) Then Exit Function End If oSize = oGraph.Size100thMM If oSize.Height = 0 OR oSize.Width = 0 Then ' 2540 is 25.40 mm in an inch, but I need 100th mm. ' There are 1440 twips in an inch oSize.Height = oGraph.SizePixel.Height * 2540.0 * TwipsPerPixelY() / 1440 oSize.Width = oGraph.SizePixel.Width * 2540.0 * TwipsPerPixelX() / 1440 End If If oSize.Height = 0 OR oSize.Width = 0 Then 'oSize.Height = 2540 'oSize.Width = 2540 Exit Function End If If oSize.Width > lMaxW Then oSize.Height = oSize.Height * lMaxW / oSize.Width oSize.Width = lMaxW End If If oSize.Height > lMaxH Then oSize.Width = oSize.Width * lMaxH / oSize.Height oSize.Height = lMaxH End If RecommendGraphSize = oSize End Function Listing 345. Embed an image in a document (вставка изображения в документ). ' oDoc - document to contain the image. ' oCurs - Cursor where the image is added ' sURL - URL of the image to insert. ' sParStyle - set the paragraph style to this. Sub EmbedGraphic(oDoc, oCurs, sURL$, sParStyle$) Dim oShape Dim oGraph 'The graphic object is text content. Dim oProvider 'GraphicProvider service. Dim oText
oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape") oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")
oDoc.getDrawPage().add(oShape)
oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
Dim oProps(0) as new com.sun.star.beans.PropertyValue oProps(0).Name = "URL" oProps(0).Value = sURL
REM Save the original size. Dim oSize100thMM Dim lHeight As Long Dim lWidth As Long oSize100thMM = RecommendGraphSize(oProvider.queryGraphicDescriptor(oProps)) If NOT IsNull(oSize100thMM) AND NOT IsEmpty(oSize100thMM) Then lHeight = oSize100thMM.Height lWidth = oSize100thMM.Width End If
oShape.Graphic = oProvider.queryGraphic(oProps()) oGraph.graphicurl = oShape.graphicurl oGraph.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER oText= oCurs.getText() oText.insertTextContent(oCurs, oGraph, false) oDoc.getDrawPage().remove(oShape)
If lHeight > 0 AND lWidth > 0 Then Dim oSize oSize = oGraph.Size oSize.Height = lHeight oSize.Width = lWidth oGraph.Size = oSize End If
' Set the paragraph style if it is in the document. Dim oStyles oStyles = oDoc.StyleFamilies.getByName("ParagraphStyles") If oStyles.hasByName(sParStyle) Then oCurs.ParaStyleName = sParStyle End If End Sub Сервис com.sun.star.drawing.GraphicObjectShape в WriterОбъявляет сервис com.sun.star.drawing.GraphicObjectShape как объект Obj в текстовом документе следующая программа: Sub Main Dim T As Object Dim Obj As Object T = ThisComponent Obj = T.createInstance("com.sun.star.drawing.GraphicObjectShape") End Sub Сервис com.sun.star.drawing.GraphicObjectShape в Writer имеет свойства, методы, интерфейсы UNO, представленные ниже. Properties of object "SwXShape" - свойства объекта SwXShape: Тип Свойство OBJECT/void AnchorFrame OBJECT EndPositionInHoriL2R BOOL IsFollowingTextFlow INTEGER FillTransparence STRING/void ChainName INTEGER/void AnchorPageNo LONG/void AnchorType LONG/void LeftMargin INTEGER/void HoriOrient LONG GraphicColorMode LONG FillBitmapPositionOffsetY LONG/void Surround LONG/void HoriOrientPosition INTEGER FillGradientStepCount INTEGER RelativeHeight LONG/void RightMargin LONG TextMinimumFrameHeight INTEGER/void HoriOrientRelation BOOL SurroundContour LONG TextWrap INTEGER AdjustContrast LONG FillBitmapMode INTEGER ParaLastLineAdjust BOOL/void SurroundAnchorOnly OBJECT GraphicCrop BOOL CharOverlineHasColor STRING CharFontStyleNameAsian BOOL ContourOutside INTEGER Transparency LONG TopMargin LONG BottomMargin INTEGER RelativeWidthRelation OBJECT/void LineStart OBJECT TransformationInHoriL2R BOOL ParaIsForbiddenRules INTEGER/void VertOrient LONG/void VertOrientPosition INTEGER AdjustBlue INTEGER RelativeWidth INTEGER/void VertOrientRelation OBJECT TextRange BOOL Opaque OBJECT AnchorPosition INTEGER WrapInfluenceOnPosition INTEGER PositionLayoutDir LONG CharPostureComplex BOOL TextAutoGrowWidth OBJECT StartPositionInHoriL2R INTEGER RelativeHeightRelation LONG LineWidth BOOL PageToggle STRING/void GraphicStreamURL BOOL TextBox DOUBLE Gamma STRING/void ChainNextName LONG TextLowerDistance LONG FillColor2 STRING/void ChainPrevName INTEGER AdjustLuminance LONG FillBitmapSizeX INTEGER AdjustGreen INTEGER AdjustRed BOOL TextWordWrap OBJECT FillTransparenceGradient STRING GraphicURL LONG FillBitmapSizeY STRING LayerName OBJECT Bitmap STRING ReplacementGraphicURL OBJECT FillBitmap OBJECT LinkDisplayBitmap OBJECT/void LineEnd OBJECT GraphicObjectFillBitmap LONG FontWorkShadowOffsetX STRING FillBitmapURL OBJECT Graphic BOOL FillBitmapLogicalSize LONG FillBitmapOffsetX LONG FillBitmapPositionOffsetX LONG FillBitmapOffsetY LONG FillBitmapRectanglePoint LONG LineEndWidth INTEGER LineTransparence BOOL FillBitmapStretch BOOL FillBitmapTile LONG FillColor BOOL LineEndCenter BOOL FillBackground LONG LineCap STRING FillBitmapName LONG ShadowYDistance OBJECT FillGradient BOOL TextAnimationStopInside STRING FillGradientName OBJECT FillHatch INTEGER LayerID LONG FillStyle STRING FillHatchName LONG LineColor INTEGER FontWorkShadowTransparence OBJECT LineDash INTEGER CharScaleWidth STRING FillTransparenceGradientName STRING LineDashName LONG LineJoint BOOL LineStartCenter LONG LineStartWidth LONG LineStyle BOOL MoveProtect STRING LineEndName STRING LineStartName BOOL Visible LONG TextWritingMode OBJECT Transformation STRING Name BOOL Printable BOOL SizeProtect STRING UINameSingular INTEGER CharFontPitchAsian STRING UINamePlural STRING Title LONG TextMaximumFrameWidth STRING Description ARRAY InteropGrabBag LONG ZOrder OBJECT FrameRect LONG RotateAngle ARRAY MetaFile BOOL IsFontwork OBJECT BoundRect LONG ShearAngle STRING LinkDisplayName OBJECT ParaLineSpacing BOOL Shadow OBJECT NumberingRules LONG ShadowColor INTEGER ShadowTransparence LONG ShadowXDistance BOOL NumberingIsNumber INTEGER TextAnimationAmount SINGLE CharHeightComplex INTEGER TextAnimationCount INTEGER TextAnimationDelay LONG TextAnimationDirection LONG TextAnimationKind BOOL FontWorkMirror BOOL TextAnimationStartInside BOOL TextAutoGrowHeight BOOL TextContourFrame LONG TextFitToSize LONG TextHorizontalAdjust LONG TextLeftDistance LONG TextMaximumFrameHeight LONG TextMinimumFrameWidth LONG TextRightDistance LONG TextUpperDistance BOOL FontIndependentLineSpacing LONG TextVerticalAdjust STRING TextChainNextName SINGLE CharHeight STRING CharFontName STRING CharFontStyleName INTEGER CharFontFamily INTEGER CharFontCharSet INTEGER CharFontPitch LONG CharPosture SINGLE CharWeight OBJECT CharLocale LONG CharColor LONG CharBackColor BOOL CharBackTransparent INTEGER CharEscapement LONG CharUnderlineColor INTEGER CharUnderline BOOL CharUnderlineHasColor LONG CharOverlineColor INTEGER CharOverline LONG ParaRightMargin BOOL CharCrossedOut LONG FontWorkShadowOffsetY INTEGER CharStrikeout INTEGER CharCaseMap BOOL CharShadowed BOOL CharContoured INTEGER CharEscapementHeight BOOL CharAutoKerning INTEGER CharKerning BOOL CharWordMode BOOL ParaIsHyphenation INTEGER CharEmphasis SINGLE CharHeightAsian INTEGER CharFontCharSetAsian STRING CharFontNameAsian INTEGER CharFontFamilyAsian LONG CharPostureAsian SINGLE CharWeightAsian OBJECT CharLocaleAsian STRING CharFontNameComplex STRING CharFontStyleNameComplex INTEGER CharFontFamilyComplex INTEGER CharFontCharSetComplex INTEGER CharFontPitchComplex SINGLE CharWeightComplex OBJECT CharLocaleComplex INTEGER CharRelief ARRAY CharInteropGrabBag LONG ParaFirstLineIndent INTEGER ParaAdjust LONG ParaBottomMargin LONG ParaLeftMargin ARRAY ParaTabStops LONG ParaTopMargin BOOL ParaIsHangingPunctuation BOOL ParaIsCharacterDistance INTEGER WritingMode LONG FontWorkStyle LONG FontWorkAdjust LONG FontWorkDistance LONG FontWorkStart BOOL FontWorkOutline OBJECT ParaUserDefinedAttributes LONG FontWorkShadow LONG FontWorkShadowColor BOOL FontWorkHideForm BOOL IsMirrored OBJECT UserDefinedAttributes OBJECT GraphicStream OBJECT PropertySetInfo STRING PropertyToDefault OBJECT Anchor STRING ImplementationName ARRAY SupportedServiceNames STRING ShapeType OBJECT Position OBJECT Size ARRAY Types ARRAY ImplementationId OBJECT Delegator ARRAY PropertiesToDefault OBJECT GluePoints OBJECT Parent OBJECT Text OBJECT Start OBJECT End STRING String OBJECT ElementType STRING Dbg_SupportedInterfaces STRING Dbg_Properties STRING Dbg_Methods
Methods of object "SwXShape" - методы объекта SwXShape: Тип Метод (тип) EMPTY queryInterface ( OBJECT ) OBJECT getPropertySetInfo ( void ) VOID setPropertyValue ( STRING, VARIANT ) EMPTY getPropertyValue ( STRING ) VOID addPropertyChangeListener ( STRING, OBJECT ) VOID removePropertyChangeListener ( STRING, OBJECT ) VOID addVetoableChangeListener ( STRING, OBJECT ) VOID removeVetoableChangeListener ( STRING, OBJECT ) LONG getPropertyState ( STRING ) ARRAY getPropertyStates ( ARRAY ) VOID setPropertyToDefault ( STRING ) EMPTY getPropertyDefault ( STRING ) VOID dispose ( void ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID attach ( OBJECT ) OBJECT getAnchor ( void ) STRING getImplementationName ( void ) BOOL supportsService ( STRING ) ARRAY getSupportedServiceNames ( void ) INT64 getSomething ( ARRAY ) STRING getShapeType ( void ) OBJECT getPosition ( void ) VOID setPosition ( OBJECT ) OBJECT getSize ( void ) VOID setSize ( OBJECT ) ARRAY getTypes ( void ) ARRAY getImplementationId ( void ) OBJECT queryAdapter ( void ) VOID setDelegator ( OBJECT ) EMPTY queryAggregation ( OBJECT ) OBJECT getPropertySetInfo ( void ) VOID setPropertyValues ( ARRAY, ARRAY ) ARRAY getPropertyValues ( ARRAY ) VOID addPropertiesChangeListener ( ARRAY, OBJECT ) VOID removePropertiesChangeListener ( OBJECT ) VOID firePropertiesChangeEvent ( ARRAY, OBJECT ) ARRAY getPropertyStates ( ARRAY ) VOID setAllPropertiesToDefault ( void ) VOID setPropertiesToDefault ( ARRAY ) ARRAY getPropertyDefaults ( ARRAY ) OBJECT getGluePoints ( void ) OBJECT getParent ( void ) VOID setParent ( OBJECT ) STRING getName ( void ) VOID setName ( STRING ) OBJECT getText ( void ) OBJECT getStart ( void ) OBJECT getEnd ( void ) STRING getString ( void ) VOID setString ( STRING ) OBJECT createTextCursor ( void ) OBJECT createTextCursorByRange ( OBJECT ) VOID insertString ( OBJECT, STRING, BOOL ) VOID insertControlCharacter ( OBJECT, INTEGER, BOOL ) VOID insertTextContent ( OBJECT, OBJECT, BOOL ) VOID removeTextContent ( OBJECT ) OBJECT finishParagraph ( ARRAY ) OBJECT finishParagraphInsert ( ARRAY, OBJECT ) OBJECT appendTextPortion ( STRING, ARRAY ) OBJECT insertTextPortion ( STRING, ARRAY, OBJECT ) VOID copyText ( OBJECT ) OBJECT getElementType ( void ) BOOL hasElements ( void ) OBJECT createEnumeration ( void ) VOID moveTextRange ( OBJECT, INTEGER )
Supported interfaces by object "SwXShape" - интерфейсы, поддерживаемые объектом SwXShape: com.sun.star.beans.XMultiPropertySet com.sun.star.beans.XMultiPropertyStates com.sun.star.beans.XPropertySet com.sun.star.beans.XPropertyState com.sun.star.container.XChild com.sun.star.container.XElementAccess com.sun.star.container.XEnumerationAccess com.sun.star.container.XNamed com.sun.star.drawing.XGluePointsSupplier com.sun.star.drawing.XShape com.sun.star.drawing.XShapeDescriptor com.sun.star.lang.XComponent com.sun.star.lang.XServiceInfo com.sun.star.lang.XTypeProvider com.sun.star.lang.XUnoTunnel com.sun.star.text.XParagraphAppend com.sun.star.text.XSimpleText com.sun.star.text.XText com.sun.star.text.XTextAppend com.sun.star.text.XTextContent com.sun.star.text.XTextCopy com.sun.star.text.XTextPortionAppend com.sun.star.text.XTextRange com.sun.star.text.XTextRangeMover com.sun.star.uno.XAggregation Сервис com.sun.star.graphic.GraphicProvider в WriterСервис com.sun.star.graphic.GraphicProvider является поставщиком изображения, например, загружаемого из файла. Создадим экземпляр поставщика изображений как объект GP в текстовом документе: Sub Main Dim GP As Object GP = createUnoService("com.sun.star.graphic.GraphicProvider") End Sub Сервис com.sun.star.graphic.GraphicProvider в Writer имеет свойства, методы, интерфейсы UNO, представленные ниже. Properties of object "com.sun.star.graphic.GraphicProvider" - свойства объекта GP: Тип Свойство STRING ImplementationName ARRAY SupportedServiceNames ARRAY Types ARRAY ImplementationId STRING Dbg_SupportedInterfaces STRING Dbg_Properties
STRING Dbg_Methods Methods of object "com.sun.star.graphic.GraphicProvider" - методы объекта GP: Тип Метод (тип) EMPTY queryInterface ( OBJECT ) STRING getImplementationName ( void ) BOOL supportsService ( STRING ) ARRAY getSupportedServiceNames ( void ) ARRAY getTypes ( void ) ARRAY getImplementationId ( void ) OBJECT queryGraphicDescriptor ( ARRAY ) OBJECT queryGraphic ( ARRAY )
VOID storeGraphic ( OBJECT, ARRAY ) Supported interfaces by object "com.sun.star.graphic.GraphicProvider" - интерфейсы, поддерживаемые объектом GP: com.sun.star.graphic.XGraphicProvider com.sun.star.lang.XServiceInfo com.sun.star.lang.XTypeProvider UNO структура com.sun.star.beans.PropertyValue в WriterUNO структура com.sun.star.beans.PropertyValue позволяет создавать массив аргументов, необходимый для использования некоторых команд диспетчера, а также методов. Объявим UNO структуру Property(0) в текстовом документе: Sub Main Dim Property(0) as new com.sun.star.beans.PropertyValue End Sub UNO структура com.sun.star.beans.PropertyValue в Writer имеет свойства, методы, интерфейсы UNO, представленные ниже. Properties of object "com.sun.star.beans.PropertyValue" - свойства объекта Property(0): Тип Свойство STRING Name LONG Handle EMPTY Value LONG State STRING Dbg_SupportedInterfaces STRING Dbg_Properties
STRING Dbg_Methods
Methods of object "com.sun.star.beans.PropertyValue": (TypeClass is not TypeClass_INTERFACE) Dbg_SupportedInterfaces not available. Универсальные программы для разных типов файловSub DrawLinesInWriteDocument Dim oDoc 'Newly created Writer document '(вновь созданный Writer документ) Dim oDrawPage 'The draw page that will contain the graphics image '(рисуемая страница, которая будет содержать графическое изображение) Dim oShape 'Shape to insert (форма для вставки)
REM Create a new Writer document (создание нового Writer документа) ' oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter",_ ' "_default", 0, Array())
oDoc = thiscomponent
sWriter$ = "com.sun.star.text.TextDocument" If ThisComponent.SupportsService(sWriter$) Then ' MsgBox "The current document is an Writer document", 0, "Writer Document" oDrawPage = oDoc.getDrawPage() ' Writer Else oDrawPage = oDoc.DrawPages(0) ' Calc, Draw, Impress End If
Dim i As Long Dim oSize as new com.sun.star.awt.Size Dim dStepSize As Double dStepSize = 800
For i = 0 To 10 oShape = oDoc.createInstance("com.sun.star.drawing.LineShape") oShape.LineColor = rgb(255, 255 - 20 * i, 20 * i) oShape.LineWidth = 50
oSize.width = dStepSize - CLng(CDbl(i) * dStepSize / 10)/2 oSize.width = CLng(dStepSize/5 * i - dStepSize) oSize.height= dStepSize oShape.setSize(oSize) oDrawPage.add(oShape) Next End Sub Документы Draw и ImpressDraw для создания русунков, Impress для презентаций являются векторно-ориентированными графическими приложениями. Документы векторного графического редактора Draw поддерживают com.sun.star.drawing.DrawingDocument и документы Impress поддерживают com.sun.star.presentation.PresentationDocument службу. Макрос должен соответствовать типу документа, проверить тип документа можно с помощью SupportsService в следующей программе Listing 482. Check for an Impress document before checking for a Draw document (проверка документа Impress перед проверкой документа Draw). REM If it really matters, you should check the document type REM to avoid a run-time error. sDraw$ = "com.sun.star.drawing.DrawingDocument" sImpress$ = "com.sun.star.presentation.PresentationDocument" If ThisComponent.SupportsService(sImpress$) Then MsgBox "The current document is an Impress document", 0, "Impress Document" ElseIf ThisComponent.SupportsService(sDraw$) Then MsgBox "The current document is a Draw document", 0, "Draw Document" Else MsgBox "The current document is not the correct type", 48, "Error" Exit Sub End If Следующую функцию макросы ниже вызывают для создания нового пустого документа Calc, Writer, Draw, Math или Impress, передавая при обращении к функции параметр docType$ соответственно scalc, swriter, sdraw, smath, and simpress. Listing 483. Create a new document (создание нового документа). REM Create a new empty document (Создание нового пустого документа) REM consider document types of (предусматривается документ типов) REM scalc, swriter, sdraw, smath, and simpress Function LoadEmptyDocument(docType$) Dim noArgs() 'An empty array for the arguments (Пустой массив для аргументов) Dim sURL As String 'URL of the document to load (URL-адрес документа для загрузки) sURL = "private:factory/" & docType LoadEmptyDocument = StarDesktop.LoadComponentFromUrl(sURL, "_blank", 0, noArgs()) End Function Свойства, методы, интерфейсы UNO в DrawПрограмма, написанная в Draw и объявляющая графический документ (sDraw) как объект G:
Sub Main Dim G As Object G = ThisComponent End Sub
Объект G имеет свойства, методы, сервисы, интерфейсы UNO, представленные ниже. Properties of object "ThisComponent" - свойства объекта sDraw: Тип Свойство OBJECT ForbiddenCharacters STRING BuildId BOOL ApplyFormDesignMode LONG TabStop OBJECT CharLocale OBJECT VisibleArea OBJECT BasicLibraries BOOL AutomaticControlFocus INTEGER MapUnit OBJECT DialogLibraries STRING RuntimeUID BOOL HasValidSignatures ARRAY Fonts ARRAY InteropGrabBag OBJECT PropertySetInfo STRING ImplementationName ARRAY SupportedServiceNames ARRAY AvailableServiceNames OBJECT LayerManager OBJECT MasterPages OBJECT DrawPages OBJECT Links OBJECT StyleFamilies OBJECT Parent OBJECT DocumentProperties ARRAY CmisProperties ARRAY AllVersions STRING StringValue STRING Namespace STRING LocalName OBJECT RDFRepository OBJECT UndoManager OBJECT Events BOOL AllowMacroExecution OBJECT ScriptContainer STRING URL ARRAY Args OBJECT CurrentController OBJECT CurrentSelection OBJECT Controllers ARRAY AvailableViewControllerNames BOOL Modified ARRAY Printer STRING Location OBJECT LibraryContainer OBJECT ViewData ARRAY TransferDataFlavors ARRAY DocumentSubStoragesNames OBJECT DocumentStorage OBJECT ScriptProvider OBJECT UIConfigurationManager STRING Identifier STRING Title STRING UntitledPrefix ARRAY Types ARRAY ImplementationId STRING Dbg_SupportedInterfaces STRING Dbg_Properties STRING Dbg_Methods
Methods of object "ThisComponent" - методы объекта sDraw: Тип Метод (тип) EMPTY queryInterface ( OBJECT ) OBJECT getPropertySetInfo ( void ) VOID setPropertyValue ( STRING, VARIANT ) EMPTY getPropertyValue ( STRING ) VOID addPropertyChangeListener ( STRING, OBJECT ) VOID removePropertyChangeListener ( STRING, OBJECT ) VOID addVetoableChangeListener ( STRING, OBJECT ) VOID removeVetoableChangeListener ( STRING, OBJECT ) STRING getImplementationName ( void ) BOOL supportsService ( STRING ) ARRAY getSupportedServiceNames ( void ) OBJECT createInstance ( STRING ) OBJECT createInstanceWithArguments ( STRING, ARRAY ) ARRAY getAvailableServiceNames ( void ) OBJECT duplicate ( OBJECT ) OBJECT getLayerManager ( void ) OBJECT getMasterPages ( void ) OBJECT getDrawPages ( void ) OBJECT getLinks ( void ) OBJECT getStyleFamilies ( void ) OBJECT createAnyCompareByName ( STRING ) LONG getRendererCount ( VARIANT, ARRAY ) ARRAY getRenderer ( LONG, VARIANT, ARRAY ) VOID render ( LONG, VARIANT, ARRAY ) OBJECT getParent ( void ) VOID setParent ( OBJECT ) OBJECT getDocumentProperties ( void ) VOID checkOut ( void ) VOID cancelCheckOut ( void ) VOID checkIn ( BOOL, STRING ) BOOL isVersionable ( void ) BOOL canCheckOut ( void ) BOOL canCancelCheckOut ( void ) BOOL canCheckIn ( void ) VOID updateCmisProperties ( ARRAY ) ARRAY getAllVersions ( void ) OBJECT getRDFRepository ( void ) OBJECT getElementByMetadataReference ( OBJECT ) OBJECT getElementByURI ( OBJECT ) ARRAY getMetadataGraphsWithType ( OBJECT ) OBJECT addMetadataFile ( STRING, ARRAY ) OBJECT importMetadataFile ( INTEGER, OBJECT, STRING, OBJECT, ARRAY ) VOID removeMetadataFile ( OBJECT ) VOID addContentOrStylesFile ( STRING ) VOID removeContentOrStylesFile ( STRING ) VOID loadMetadataFromStorage ( OBJECT, OBJECT, OBJECT ) VOID storeMetadataToStorage ( OBJECT ) VOID loadMetadataFromMedium ( ARRAY ) VOID storeMetadataToMedium ( ARRAY ) BOOL wasModifiedSinceLastSave ( void ) VOID storeToRecoveryFile ( STRING, ARRAY ) VOID recoverFromFile ( STRING, STRING, ARRAY ) OBJECT getUndoManager ( void ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID addDocumentEventListener ( OBJECT ) VOID removeDocumentEventListener ( OBJECT ) VOID notifyDocumentEvent ( STRING, OBJECT, VARIANT ) VOID disposing ( OBJECT ) OBJECT getEvents ( void ) VOID dispose ( void ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) BOOL attachResource ( STRING, ARRAY ) STRING getURL ( void ) ARRAY getArgs ( void ) VOID connectController ( OBJECT ) VOID disconnectController ( OBJECT ) VOID lockControllers ( void ) VOID unlockControllers ( void ) BOOL hasControllersLocked ( void ) OBJECT getCurrentController ( void ) VOID setCurrentController ( OBJECT ) OBJECT getCurrentSelection ( void ) OBJECT getControllers ( void ) ARRAY getAvailableViewControllerNames ( void ) OBJECT createDefaultViewController ( OBJECT ) OBJECT createViewController ( STRING, ARRAY, OBJECT ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID addModifyListener ( OBJECT ) VOID removeModifyListener ( OBJECT ) BOOL isModified ( void ) VOID setModified ( BOOL ) BOOL disableSetModified ( void ) BOOL enableSetModified ( void ) BOOL isSetModifiedEnabled ( void ) ARRAY getPrinter ( void ) VOID setPrinter ( ARRAY ) VOID print ( ARRAY ) VOID addPrintJobListener ( OBJECT ) VOID removePrintJobListener ( OBJECT ) BOOL hasLocation ( void ) STRING getLocation ( void ) BOOL isReadonly ( void ) VOID store ( void ) VOID storeAsURL ( STRING, ARRAY ) VOID storeToURL ( STRING, ARRAY ) VOID storeSelf ( ARRAY ) VOID initNew ( void ) VOID load ( ARRAY ) OBJECT getLibraryContainer ( void ) VOID createLibrary ( STRING, STRING, STRING, STRING ) VOID addModule ( STRING, STRING, STRING, STRING ) VOID addDialog ( STRING, STRING, ARRAY ) OBJECT getViewData ( void ) VOID setViewData ( OBJECT ) VOID addCloseListener ( OBJECT ) VOID removeCloseListener ( OBJECT ) VOID close ( BOOL ) EMPTY getTransferData ( OBJECT ) ARRAY getTransferDataFlavors ( void ) BOOL isDataFlavorSupported ( OBJECT ) OBJECT getDocumentSubStorage ( STRING, LONG ) ARRAY getDocumentSubStoragesNames ( void ) VOID loadFromStorage ( OBJECT, ARRAY ) VOID storeToStorage ( OBJECT, ARRAY ) VOID switchToStorage ( OBJECT ) OBJECT getDocumentStorage ( void ) VOID addStorageChangeListener ( OBJECT ) VOID removeStorageChangeListener ( OBJECT ) OBJECT getScriptProvider ( void ) OBJECT getUIConfigurationManager ( void ) VOID setVisualAreaSize ( INT64, OBJECT ) OBJECT getVisualAreaSize ( INT64 ) OBJECT getPreferredVisualRepresentation ( INT64 ) LONG getMapUnit ( INT64 ) INT64 getSomething ( ARRAY ) VOID setIdentifier ( STRING ) STRING getIdentifier ( void ) STRING getTitle ( void ) VOID setTitle ( STRING ) VOID addTitleChangeListener ( OBJECT ) VOID removeTitleChangeListener ( OBJECT ) LONG leaseNumber ( OBJECT ) VOID releaseNumber ( LONG ) VOID releaseNumberForComponent ( OBJECT ) STRING getUntitledPrefix ( void ) ARRAY getTypes ( void ) ARRAY getImplementationId ( void )
OBJECT queryAdapter ( void ) Supported interfaces by object "ThisComponent" - интерфейсы, поддерживаемые объектом sDraw: com.sun.star.beans.XPropertySet com.sun.star.container.XChild com.sun.star.datatransfer.XTransferable com.sun.star.document.XCmisDocument com.sun.star.document.XDocumentEventBroadcaster com.sun.star.document.XDocumentPropertiesSupplier com.sun.star.document.XDocumentRecovery com.sun.star.document.XDocumentSubStorageSupplier com.sun.star.document.XEmbeddedScripts com.sun.star.document.XEventBroadcaster com.sun.star.document.XEventsSupplier com.sun.star.document.XLinkTargetSupplier com.sun.star.document.XScriptInvocationContext com.sun.star.document.XStorageBasedDocument com.sun.star.document.XUndoManagerSupplier com.sun.star.document.XViewDataSupplier com.sun.star.drawing.XDrawPageDuplicator com.sun.star.drawing.XDrawPagesSupplier com.sun.star.drawing.XLayerSupplier com.sun.star.drawing.XMasterPagesSupplier com.sun.star.embed.XVisualObject com.sun.star.frame.XLoadable com.sun.star.frame.XModel com.sun.star.frame.XModel2 com.sun.star.frame.XModule com.sun.star.frame.XStorable com.sun.star.frame.XStorable2 com.sun.star.frame.XTitle com.sun.star.frame.XTitleChangeBroadcaster com.sun.star.frame.XUntitledNumbers com.sun.star.lang.XComponent com.sun.star.lang.XEventListener com.sun.star.lang.XMultiServiceFactory com.sun.star.lang.XServiceInfo com.sun.star.lang.XTypeProvider com.sun.star.lang.XUnoTunnel com.sun.star.rdf.XDocumentMetadataAccess com.sun.star.rdf.XNode com.sun.star.rdf.XRepositorySupplier com.sun.star.rdf.XResource com.sun.star.rdf.XURI com.sun.star.script.XStarBasicAccess com.sun.star.script.provider.XScriptProviderSupplier com.sun.star.style.XStyleFamiliesSupplier com.sun.star.ucb.XAnyCompareFactory com.sun.star.ui.XUIConfigurationManagerSupplier com.sun.star.uno.XWeak com.sun.star.util.XCloseBroadcaster com.sun.star.util.XCloseable com.sun.star.util.XModifiable com.sun.star.util.XModifiable2 com.sun.star.util.XModifyBroadcaster com.sun.star.view.XPrintJobBroadcaster com.sun.star.view.XPrintable com.sun.star.view.XRenderable Свойства, методы, интерфейсы UNO в ImpressПрограмма, написанная в Impress и объявляющая документ (sImpress) как объект Doc: Sub Main Dim Doc As Object Doc = ThisComponent End Sub Объект Doc имеет свойства, методы, сервисы, интерфейсы UNO, представленные ниже. Properties of object "ThisComponent" - свойства объекта sImpress: Тип Свойство OBJECT ForbiddenCharacters STRING BuildId BOOL ApplyFormDesignMode LONG TabStop OBJECT CharLocale OBJECT VisibleArea OBJECT BasicLibraries BOOL AutomaticControlFocus INTEGER MapUnit OBJECT DialogLibraries STRING RuntimeUID BOOL HasValidSignatures ARRAY Fonts ARRAY InteropGrabBag OBJECT PropertySetInfo STRING ImplementationName ARRAY SupportedServiceNames ARRAY AvailableServiceNames OBJECT LayerManager OBJECT MasterPages OBJECT DrawPages OBJECT Links OBJECT StyleFamilies OBJECT Presentation OBJECT CustomPresentations OBJECT HandoutMasterPage OBJECT Parent OBJECT DocumentProperties ARRAY CmisProperties ARRAY AllVersions STRING StringValue STRING Namespace STRING LocalName OBJECT RDFRepository OBJECT UndoManager OBJECT Events BOOL AllowMacroExecution OBJECT ScriptContainer STRING URL ARRAY Args OBJECT CurrentController OBJECT CurrentSelection OBJECT Controllers ARRAY AvailableViewControllerNames BOOL Modified ARRAY Printer STRING Location OBJECT LibraryContainer OBJECT ViewData ARRAY TransferDataFlavors ARRAY DocumentSubStoragesNames OBJECT DocumentStorage OBJECT ScriptProvider OBJECT UIConfigurationManager STRING Identifier STRING Title STRING UntitledPrefix ARRAY Types ARRAY ImplementationId STRING Dbg_SupportedInterfaces STRING Dbg_Properties STRING Dbg_Methods
Methods of object "ThisComponent" - методы объекта sImpress: Тип Метод (тип) EMPTY queryInterface ( OBJECT ) OBJECT getPropertySetInfo ( void ) VOID setPropertyValue ( STRING, VARIANT ) EMPTY getPropertyValue ( STRING ) VOID addPropertyChangeListener ( STRING, OBJECT ) VOID removePropertyChangeListener ( STRING, OBJECT ) VOID addVetoableChangeListener ( STRING, OBJECT ) VOID removeVetoableChangeListener ( STRING, OBJECT ) STRING getImplementationName ( void ) BOOL supportsService ( STRING ) ARRAY getSupportedServiceNames ( void ) OBJECT createInstance ( STRING ) OBJECT createInstanceWithArguments ( STRING, ARRAY ) ARRAY getAvailableServiceNames ( void ) OBJECT duplicate ( OBJECT ) OBJECT getLayerManager ( void ) OBJECT getMasterPages ( void ) OBJECT getDrawPages ( void ) OBJECT getLinks ( void ) OBJECT getStyleFamilies ( void ) OBJECT createAnyCompareByName ( STRING ) LONG getRendererCount ( VARIANT, ARRAY ) ARRAY getRenderer ( LONG, VARIANT, ARRAY ) VOID render ( LONG, VARIANT, ARRAY ) OBJECT getPresentation ( void ) OBJECT getCustomPresentations ( void ) OBJECT getHandoutMasterPage ( void ) OBJECT getParent ( void ) VOID setParent ( OBJECT ) OBJECT getDocumentProperties ( void ) VOID checkOut ( void ) VOID cancelCheckOut ( void ) VOID checkIn ( BOOL, STRING ) BOOL isVersionable ( void ) BOOL canCheckOut ( void ) BOOL canCancelCheckOut ( void ) BOOL canCheckIn ( void ) VOID updateCmisProperties ( ARRAY ) ARRAY getAllVersions ( void ) OBJECT getRDFRepository ( void ) OBJECT getElementByMetadataReference ( OBJECT ) OBJECT getElementByURI ( OBJECT ) ARRAY getMetadataGraphsWithType ( OBJECT ) OBJECT addMetadataFile ( STRING, ARRAY ) OBJECT importMetadataFile ( INTEGER, OBJECT, STRING, OBJECT, ARRAY ) VOID removeMetadataFile ( OBJECT ) VOID addContentOrStylesFile ( STRING ) VOID removeContentOrStylesFile ( STRING ) VOID loadMetadataFromStorage ( OBJECT, OBJECT, OBJECT ) VOID storeMetadataToStorage ( OBJECT ) VOID loadMetadataFromMedium ( ARRAY ) VOID storeMetadataToMedium ( ARRAY ) BOOL wasModifiedSinceLastSave ( void ) VOID storeToRecoveryFile ( STRING, ARRAY ) VOID recoverFromFile ( STRING, STRING, ARRAY ) OBJECT getUndoManager ( void ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID addDocumentEventListener ( OBJECT ) VOID removeDocumentEventListener ( OBJECT ) VOID notifyDocumentEvent ( STRING, OBJECT, VARIANT ) VOID disposing ( OBJECT ) OBJECT getEvents ( void ) VOID dispose ( void ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) BOOL attachResource ( STRING, ARRAY ) STRING getURL ( void ) ARRAY getArgs ( void ) VOID connectController ( OBJECT ) VOID disconnectController ( OBJECT ) VOID lockControllers ( void ) VOID unlockControllers ( void ) BOOL hasControllersLocked ( void ) OBJECT getCurrentController ( void ) VOID setCurrentController ( OBJECT ) OBJECT getCurrentSelection ( void ) OBJECT getControllers ( void ) ARRAY getAvailableViewControllerNames ( void ) OBJECT createDefaultViewController ( OBJECT ) OBJECT createViewController ( STRING, ARRAY, OBJECT ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID addEventListener ( OBJECT ) VOID removeEventListener ( OBJECT ) VOID addModifyListener ( OBJECT ) VOID removeModifyListener ( OBJECT ) BOOL isModified ( void ) VOID setModified ( BOOL ) BOOL disableSetModified ( void ) BOOL enableSetModified ( void ) BOOL isSetModifiedEnabled ( void ) ARRAY getPrinter ( void ) VOID setPrinter ( ARRAY ) VOID print ( ARRAY ) VOID addPrintJobListener ( OBJECT ) VOID removePrintJobListener ( OBJECT ) BOOL hasLocation ( void ) STRING getLocation ( void ) BOOL isReadonly ( void ) VOID store ( void ) VOID storeAsURL ( STRING, ARRAY ) VOID storeToURL ( STRING, ARRAY ) VOID storeSelf ( ARRAY ) VOID initNew ( void ) VOID load ( ARRAY ) OBJECT getLibraryContainer ( void ) VOID createLibrary ( STRING, STRING, STRING, STRING ) VOID addModule ( STRING, STRING, STRING, STRING ) VOID addDialog ( STRING, STRING, ARRAY ) OBJECT getViewData ( void ) VOID setViewData ( OBJECT ) VOID addCloseListener ( OBJECT ) VOID removeCloseListener ( OBJECT ) VOID close ( BOOL ) EMPTY getTransferData ( OBJECT ) ARRAY getTransferDataFlavors ( void ) BOOL isDataFlavorSupported ( OBJECT ) OBJECT getDocumentSubStorage ( STRING, LONG ) ARRAY getDocumentSubStoragesNames ( void ) VOID loadFromStorage ( OBJECT, ARRAY ) VOID storeToStorage ( OBJECT, ARRAY ) VOID switchToStorage ( OBJECT ) OBJECT getDocumentStorage ( void ) VOID addStorageChangeListener ( OBJECT ) VOID removeStorageChangeListener ( OBJECT ) OBJECT getScriptProvider ( void ) OBJECT getUIConfigurationManager ( void ) VOID setVisualAreaSize ( INT64, OBJECT ) OBJECT getVisualAreaSize ( INT64 ) OBJECT getPreferredVisualRepresentation ( INT64 ) LONG getMapUnit ( INT64 ) INT64 getSomething ( ARRAY ) VOID setIdentifier ( STRING ) STRING getIdentifier ( void ) STRING getTitle ( void ) VOID setTitle ( STRING ) VOID addTitleChangeListener ( OBJECT ) VOID removeTitleChangeListener ( OBJECT ) LONG leaseNumber ( OBJECT ) VOID releaseNumber ( LONG ) VOID releaseNumberForComponent ( OBJECT ) STRING getUntitledPrefix ( void ) ARRAY getTypes ( void ) ARRAY getImplementationId ( void ) OBJECT queryAdapter ( void )
Supported interfaces by object "ThisComponent" - интерфейсы, поддерживаемые объектом sImpress: com.sun.star.beans.XPropertySet com.sun.star.container.XChild com.sun.star.datatransfer.XTransferable com.sun.star.document.XCmisDocument com.sun.star.document.XDocumentEventBroadcaster com.sun.star.document.XDocumentPropertiesSupplier com.sun.star.document.XDocumentRecovery com.sun.star.document.XDocumentSubStorageSupplier com.sun.star.document.XEmbeddedScripts com.sun.star.document.XEventBroadcaster com.sun.star.document.XEventsSupplier com.sun.star.document.XLinkTargetSupplier com.sun.star.document.XScriptInvocationContext com.sun.star.document.XStorageBasedDocument com.sun.star.document.XUndoManagerSupplier com.sun.star.document.XViewDataSupplier com.sun.star.drawing.XDrawPageDuplicator com.sun.star.drawing.XDrawPagesSupplier com.sun.star.drawing.XLayerSupplier com.sun.star.drawing.XMasterPagesSupplier com.sun.star.embed.XVisualObject com.sun.star.frame.XLoadable com.sun.star.frame.XModel com.sun.star.frame.XModel2 com.sun.star.frame.XModule com.sun.star.frame.XStorable com.sun.star.frame.XStorable2 com.sun.star.frame.XTitle com.sun.star.frame.XTitleChangeBroadcaster com.sun.star.frame.XUntitledNumbers com.sun.star.lang.XComponent com.sun.star.lang.XEventListener com.sun.star.lang.XMultiServiceFactory com.sun.star.lang.XServiceInfo com.sun.star.lang.XTypeProvider com.sun.star.lang.XUnoTunnel com.sun.star.presentation.XCustomPresentationSupplier com.sun.star.presentation.XHandoutMasterSupplier com.sun.star.presentation.XPresentationSupplier com.sun.star.rdf.XDocumentMetadataAccess com.sun.star.rdf.XNode com.sun.star.rdf.XRepositorySupplier com.sun.star.rdf.XResource com.sun.star.rdf.XURI com.sun.star.script.XStarBasicAccess com.sun.star.script.provider.XScriptProviderSupplier com.sun.star.style.XStyleFamiliesSupplier com.sun.star.ucb.XAnyCompareFactory com.sun.star.ui.XUIConfigurationManagerSupplier com.sun.star.uno.XWeak com.sun.star.util.XCloseBroadcaster com.sun.star.util.XCloseable com.sun.star.util.XModifiable com.sun.star.util.XModifiable2 com.sun.star.util.XModifyBroadcaster com.sun.star.view.XPrintJobBroadcaster com.sun.star.view.XPrintable com.sun.star.view.XRenderable Страницы рисунковListing 484. Print information related to draw pages and master pages (печать информации о связи страниц рисунков и мастера страниц). Sub getPages() Dim s$ Dim oDoc oDoc = LoadEmptyDocument("simpress") s = s & getPagesInfo(oDoc.getDrawPages(), "Draw Pages") s = s & CHR$(10) s = s & getPagesInfo(oDoc.getMasterPages(), "Master Pages") MsgBox s, 0, "Pages" End Sub
Function getPagesInfo(oDPages, sType$) As String Dim i%, s$ Dim oDPage, oMPage s = s & "*** There are " & oDPages.getCount() & " " & sType & CHR$(10) For i = 0 To oDPages.getCount()-1 oDPage = oDPages.getByIndex(i) s = s & "Page " & i & " = '" & oDPage.getName() & "'" If NOT oDPage.supportsService("com.sun.star.drawing.MasterPage") Then oMPage = oDPage.getMasterPage() s = s & " master = " If NOT IsNull(oMPage) AND NOT IsEmpty(oMPage) Then s = s & "'" & oMPage.getName() & "'" End If End If s = s & CHR$(10) Next getPagesInfo = s End Function Listing 485. Create a new page by name, avoiding multiple names (создание новой страницы по имени, избегая нескольких имен). Function createDrawPage(oDoc, sName$, bForceNew As boolean) As Variant Dim oPages 'All of the draw pages Dim oPage 'A single draw page Dim i% 'General index variable oPages = oDoc.getDrawPages() If oPages.hasByName(sName) Then REM If we require a new page then delete REM the page. If bForceNew Then oPages.remove(oPages.getByName(sName)) Else REM Did not request a new page so return the found page REM and then get out of the function. createDrawPage = oPages.getByName(sName) Exit Function End If End If
REM Did not find the page, or found the page and removed it. REM Create a new page, set the name, and return the page. oPages.insertNewByIndex(oPages.getCount()) oPage = oPages.getByIndex(oPages.getCount()-1) oPage.setName(sName) createDrawPage = oPage End Function Создание изображенияListing 486. Draw 20 lines in a Draw or Impress document (рисование 20-ти линий в документах Draw или Impress (см. рисунок 4)). Function draw20Lines() Dim oPage 'Page on which to draw Dim oShape 'Shape to insert Dim oPoint 'Initial start point of the line Dim oSize 'Width and height of the line Dim i% 'Index variable Dim n% 'Number of iterations to perform Dim nShift%'Shift the graphic down Dim oDoc
oDoc = LoadEmptyDocument("sdraw") draw20Lines = oDoc oPage = createDrawPage(oDoc, "Test Draw", True) nShift = oPage.Height / 4
n = 20 For i = 0 To n oShape = oDoc.createInstance("com.sun.star.drawing.LineShape") oShape.LineColor = RGB( 255, 0, i+20 ) oShape.LineWidth = 20 oPoint = oShape.Position oPoint.X = oPage.Width / 4 oPoint.Y = i * oPage.Height / n / 4 + nShift oShape.Position = oPoint oSize = oShape.Size oSize.Height = (oPage.Height - 2 * i * oPage.Height / n) / 4 oSize.Width = oPage.Width / 2 oShape.Size = oSize oPage.add(oShape) Next End Function
Рисунок 4. Twenty lines in a Draw document (двадцать линий в Draw документе) Литература1. http://buhcia.narod.ru/OpenOffice_Macros_rus.odt (дата доступа: 28.03.2015). 2. http://www.pitonyak.org/AndrewMacro.odt (дата доступа: 28.03.2015). 3.OpenOffice.org Macros Explained. http://www.pitonyak.org/AndrewMacro.odt (дата доступа: 30.04.2016). 4. https://wiki.openoffice.org/wiki/Extensions_development_basic (дата доступа: 11.09.2017). 5.StarOffice Programmer’s Tutorial. - Sun Microsystems, 2000. - 132 с. http://www.openoffice.org/api/basic/man/tutorial/tutorial.pdf (дата доступа: 11.09.2017). Сайт: super-code.ru ©
|