* 画像挿入 [#y00a6b1e] Calc のシート上に画像を挿入します。図形描写オブジェクトを挿入する場合と同じ方法になります。 #contents ** 画像図形描写オブジェクト [#ffe9d4a0] com.sun.star.drawing.GraphicObjectShape サービスをインスタンス化して図形描写オブジェクトとしてターゲットのシートのドローページに挿入します。 Sub InsertPictureOnSheet doc = ThisComponent sheet = doc.getSheets().getByIndex(0) drawpage = sheet.getDrawPage() Dim aSize as new com.sun.star.awt.Size Dim aPos as new com.sun.star.awt.Point shape = doc.createInstance("com.sun.star.drawing.GraphicObjectShape") shape.GraphicURL = ConvertToURL("/home/asuka/Pictures/test.png") ' in 1/100 mm aSize.Width = 1000 aSize.Height = 1000 aPos.X = 1000 aPos.Y = 1000 shape.Size = aSize shape.Position = aPos drawpage.add(shape) End Sub 画像ファイルの URL を GraphicURL プロパティに指定します。また、サイズと位置を上記のように css.awt.Size および css.awt.Point 構造体で指定します。位置とサイズを指定しなければ原点位置にサイズ 0 で挿入されます。位置とサイズは後で指定することもできます。 この方法では、事前に画像のサイズを知っていなければ原寸サイズで挿入できません。挿入後の Graphic プロパティから画像のサイズを取得、計算して元の画像に反映させることができます。 または、GraphicURL を指定する代わりに css.graphic.GraphicProvider から取得した css.graphic.XGraphic インターフェースを Graphic プロパティに設定します。 ** コマンドで挿入 [#b653af69] .uno:InsertGraphic コマンドで挿入する方法もあります。この場合、画像はセルカーソルのある位置になります。また、サイズは原寸サイズです。 Sub InsertGraphicByCommand doc = ThisComponent frame = doc.getCurrentController().getFrame() dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper") sURL = ConvertToURL("/home/asuka/Pictures/test.png") Dim args(1) as new com.sun.star.beans.PropertyValue args(0).Name = "FileName" args(0).Value = sURL args(1).Name = "AsLink" args(1).Value = False dispatcher.executeDispatch(frame, ".uno:InsertGraphic", "", 0, args) End Sub |