Вставка изображения в Draw [РЕШЕНО]

Автор bigor, 17 октября 2022, 12:58

0 Пользователи и 1 гость просматривают эту тему.

bigor

Добрый день всем.
Нужно вставить одну картинку на несколько листов в Draw
Нашел тему, там правда не про Draw, но верное направление, загрузить картинку один раз в файл, потом ее расставлять где нужно. Скопировал, запустил, ругается. Я так понимаю, что в LoadGraphicIntoDocument = oBitmaps.getByName( fileName ) должна передаться строка с внутренним адресом картинки, а по факту передается объект. Полазил по нему, не нашел ничего похожего на внутренний адрес. Как его получить? Сама картинка в файл загрузилась.
Прикладываю тестовый файлик

ps Основная задача решена, но почему не работает код по ссылке и похожий из книжки Питоньяка интересно.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

sokol92

Добрый день! Попробуйте такой путь:

' ---
oImage = oDoc.createInstance("com.sun.star.text.GraphicObject")
oImage.graphic=GetImageFromPath("C:\Temp\test70.jpg")
'
где:
' Возвращает графический объект.
' - path URL объекта или путь к графическому файлу в OS формате.
Function GetImageFromPath(Byval path as String ) as Variant
  Dim oGraphicProvider
  Dim props(0) As New com.sun.star.beans.PropertyValue
  oGraphicProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
  props(0).Name = "URL" : props(0).Value = ConvertToUrl(path)
  GetImageFromPath = oGraphicProvider.queryGraphic(props)
End Function
Владимир.

bigor

Спасибо. Примерно так я и сделал
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

mikekaganski

С уважением,
Михаил Каганский

sokol92

При оочень большом желании можно посмотреть список "внутренних" идентификаторов рисунков из открытого файла (при наличии):
Sub TestPictures
   Dim oSFA
   oSFA=createUnoService("com.sun.star.ucb.SimpleFileAccess") 
   Msgbox Join(oSFA.getFolderContents("vnd.sun.star.tdoc:/" & ThisComponent.RuntimeUid & "/Pictures", True), Chr(10))
End Sub
Владимир.