2011-06-04 15 views
5

Estoy tratando de crear un documento de escritor de OpenObjects a partir de una plantilla. puedo reemplazar las piezas de texto de informe con este código¿Cómo insertar una imagen en un documento de escritor de OpenOffice con java?

private static void searchAndReplace(final String search, 
     final String replace, final XTextDocument mxDoc) { 
    XReplaceable xReplaceable = (XReplaceable) UnoRuntime.queryInterface(
      XReplaceable.class, mxDoc); 
    XReplaceDescriptor xRepDesc = xReplaceable.createReplaceDescriptor(); 
    xRepDesc.setSearchString(search); 
    xRepDesc.setReplaceString(replace); 
    xReplaceable.replaceAll(xRepDesc); 
} 

he encontrado algunos ejemplos de código de here vincular o incrustar una imagen en un xTextDocument. Pero no puedo insertarlo en xTextDocument. ¿Hay alguna otra forma de hacer esto con Java? La versión de Openoffice es 3.1.0.

¿Una respuesta?

Respuesta

1

Me encontraron esta aquí: https://svn.apache.org/repos/asf/openoffice/ooo-site/trunk/content/api/Examples/Snippets/Writer/Writer.EmbedAGraphicIntoATextdocument.snip

private void embedGraphic(GraphicInfo grProps, 
      XMultiServiceFactory xMSF, XTextCursor xCursor) { 

    XNameContainer xBitmapContainer = null; 
    XText xText = xCursor.getText(); 
    XTextContent xImage = null; 
    String internalURL = null; 

    try { 
      xBitmapContainer = (XNameContainer) UnoRuntime.queryInterface(
          XNameContainer.class, xMSF.createInstance(
              "com.sun.star.drawing.BitmapTable")); 
      xImage = (XTextContent) UnoRuntime.queryInterface(
          XTextContent.class,  xMSF.createInstance(
              "com.sun.star.text.TextGraphicObject")); 
      XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(
          XPropertySet.class, xImage); 

      // helper-stuff to let OOo create an internal name of the graphic 
      // that can be used later (internal name consists of various checksums) 
      xBitmapContainer.insertByName("someID", grProps.unoURL); 
      internalURL = AnyConverter.toString(xBitmapContainer 
          .getByName("someID")); 

      xProps.setPropertyValue("AnchorType", 
          com.sun.star.text.TextContentAnchorType.AS_CHARACTER); 
      xProps.setPropertyValue("GraphicURL", internalURL); 
      xProps.setPropertyValue("Width", (int) grProps.widthOfGraphic); 
      xProps.setPropertyValue("Height", (int) grProps.heightOfGraphic); 

      // inser the graphic at the cursor position 
      xText.insertTextContent(xCursor, xImage, false); 

      // remove the helper-entry 
      xBitmapContainer.removeByName("someID"); 
    } catch (Exception e) { 
      System.out.println("Failed to insert Graphic"); 
    } 
} 
+0

Gracias por su su respuesta. Encontré una solución temporal para ese problema. Ha pasado mucho tiempo después del problema. Probaré tu solución e informaré sobre el resultado. –

Cuestiones relacionadas