Frage

Derzeit verwenden wir Open Office zu greifen Lesezeichen in einer Vorlagendatei Dokument und ersetzen Sie sie mit Inhalten aus unserer DB über Java. Die Zeilen Code, dass die Datei tatsächlich aussehen speichern wie dies ...

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

Wir wollen die Datei an den Servlet Antwort Output direkt schreiben, Weiß jemanden, der eine Möglichkeit, das Dokument direkt als Byte-Array oder Input über Openoffice UNO api in Java erhalten?

War es hilfreich?

Lösung

Dies ist abhängig von der Umsetzung des UNO-API. Wir konnten dies mit PDF tun,

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

Andere Tipps

Ich würde vorschlagen, die Datei zunächst lokal speichern (von der UNO API) dann Streaming das Ergebnis von Ihrem Java-Code vor der [temp] Datei zu löschen. Der Grund dafür ist, dass Sie ein Problem mit der Erzeugung des Dokuments durch Openoffice aus Ihrer Lieferung an den Kunden trennen können. Zum Beispiel, wenn Sie Dokument zu erzeugen, fehlschlägt, können Sie einen Fehler ohne Bedenken für eine teilweise schriftliche Antwort produzieren an einen Client gestreamt. Auch wenn Sie nicht bereits auf Werkzeugen sehen, können Sie unter Docmosis die Redundanz suchen, Leistung Optimierung und Datenzusammenführung Funktionen. Es kann direkt in einen Stream machen, dass Sie liefern (und vermutlich kümmert sich um die Teil gestreamt Ergebnisausgabe).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top