Copiar imagen en Write en lugar de LINK via Marcas

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
jcardenas
Mensajes: 6
Registrado: Vie Nov 05, 2010 10:28 am

Copiar imagen en Write en lugar de LINK via Marcas

Mensaje por jcardenas »

Buenas, tengo un documento Write con muchas tablas, en estas tablas tengo creado marcas, en tiempo de ejecución voy buscando marcas y rellenando texto, igualmente tengo una marca que cambio por una imagen, el problema es que la imagen se hace un LINK en lugar de copiar la imagen directamente en el documento, por lo que luego al borrar la imagen del HHDD el documento Write ya no muestra la imagen.

El codigo es el siguiente:

OleObject Mark, Marks
OleObject ObjText2, objTextGraphicObject
string FileUrl

Marks = ObjDocument.Bookmarks
Mark = Marks.getByName("kkkk")
objText2 = Mark.Anchor.Text
FileUrl = f_converttourl(ls_CurrentDir + "\jose.tif")
objTextGraphicObject = ObjDocument.createInstance("com.sun.star.text.GraphicObject")
objSizeClass = objCoreReflection.forName( "com.sun.star.awt.Size" )
objSizeClass.CreateObject( REF objSize )
objSize.Width = 3530
objSize.Height = 1550
objTextGraphicObject.setSize(objSize)
objTextGraphicObject.GraphicURL = f_converttourl(ls_CurrentDir + "\jose.tif")
objText2.insertTextContent(Mark.Anchor, objTextGraphicObject, false)

Como he comentado, la marca se sustituye por la imagen, pero con un LINK y necesito que sea pegando la imagen.

Un saludo
OpenOffice 3.1 en Windows XP
FJCC-ES
Mensajes: 915
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Copiar imagen en Write en lugar de LINK via Marcas

Mensaje por FJCC-ES »

Encontré este código que elimina el LINK (http://user.services.openoffice.org/en/ ... 20&t=23909)

Código: Seleccionar todo

Sub embedImagesInWriter(doc as Object)
Dim allImages As Object, imageX As Object
Dim x As Long

allImages = doc.GraphicObjects
for x = 0 to allImages.Count -1
  imageX = allImages.getByIndex(x)
  if InStr(1, imageX.GraphicURL, "vnd.sun.star.GraphicObject:", 0) = 0  then
    imageX.Graphic = getGraphicFromURL(imageX.GraphicURL)
  end if
next
End Sub


'   This code is provided by Ariel Constenla-Haile, see
'   http://www.mail-archive.com/dev@api.openoffice.org/msg09255.html

Function getGraphicFromURL( sURL as String) as com.sun.star.graphic.XGraphic
        On Error Resume Next
        Dim oGraphicProvider as Object
        oGraphicProvider = createUnoservice("com.sun.star.graphic.GraphicProvider")
       
        Dim aMediaProperties(0) as New com.sun.star.beans.PropertyValue
        aMediaProperties(0).Name = "URL"
        aMediaProperties(0).Value = sURL

        getGraphicFromURL = oGraphicProvider.queryGraphic(aMediaProperties)
End Function
Responder