Domanda

Al momento usiamo OpenOffice ai preferiti afferrare in un documento file modello e sostituirli con contenuti dal nostro DB tramite Java. Le righe di codice che in realtà salvare il file di aspetto simile ...

  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);

Vogliamo scrivere direttamente il file nella OutputStream risposta servlet, Qualcuno sa di un modo per ottenere direttamente il documento come un array di byte o inputstream tramite API UNO di OpenOffice in Java?

È stato utile?

Soluzione

Ciò dipende dalla implementazione delle API UNO. Siamo stati in grado di fare questo 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);

Altri suggerimenti

vorrei suggerire di salvare il file in locale prima (dalle API ONU) poi in streaming il risultato dal codice Java prima di eliminare il file [temporaneo]. La ragione di questo è che si può separare un problema con la generazione del documento da parte di OpenOffice dal consegna al cliente. Ad esempio, se si sta documento non riesce a generare, è possibile produrre un errore senza preoccupazioni per una risposta parzialmente scritta in streaming ad un cliente. Inoltre, se non hai guardato strumenti già, si potrebbe desiderare di guardare Docmosis che fornisce la ridondanza, prestazioni ottimizzazione e data-merging funzioni. Si può rendere direttamente a un flusso che si fornisce (e prende presumibilmente cura del-streaming-parziale risultato numero).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top