Pregunta

Actualmente utilizamos OpenOffice para marcadores de apoyo en un documento de archivo de plantilla y reemplazarlos con el contenido de nuestra base de datos a través de Java. Las líneas de código que realmente guardar el archivo se ve como este ...

  XStorable storable = UnoRuntime.queryInterface(XStorable.class, document);


        // Save as Word 97 Document
        PropertyValue[] properties = new PropertyValue[1];
        PropertyValue property = new PropertyValue();
        property.Name = "FilterName";
        property.Value = FORMAT_WORD_97;
        properties[0] = property;
        storable.storeAsURL(saveFileURL, properties);

Queremos escribir directamente el archivo a la respuesta de servlet OutputStream, ¿alguien sabe de una manera de obtener directamente el documento como una matriz de bytes o flujo de entrada a través de la API UNO de OpenOffice en Java?

¿Fue útil?

Solución

Esto depende de la implementación de la API UNO. Hemos sido capaces de hacer esto con PDF,

    OutputStream os = response.getOutputStream();

    PropertyValue[] properties = new PropertyValue[2];
    PropertyValue property = new PropertyValue();
    property.Name = "FilterName";
    property.Value = FORMAT_WORD_97;
    properties[0] = property;
    PropertyValue streamProp = new PropertyValue();
    streamProp.Name = "OutputStream;
    streamProp.Value = os;
    properties[1] = streamProp;

    storable.storeAsURL("private:stream", properties);

Otros consejos

Yo sugeriría guardar el archivo localmente primera (de la API UNO), entonces la transmisión de los resultados a partir del código de Java antes de eliminar el archivo [temp]. La razón de esto es que se puede separar un problema con la generación del documento de OpenOffice desde su entrega al cliente. Por ejemplo, si estás documento no puede generar, se puede producir un error y sin preocupaciones para una respuesta parcial escrita transmite a un cliente. Además, si usted no ha mirado herramientas ya, es posible que desee ver en Docmosis que proporciona redundancia, rendimiento optimización y datos para fusionar funciones. Se puede hacer directamente a una corriente que se proporciona (y, presumiblemente, se encarga del streaming resultado parcial-edición).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top