OpenOffice, написание документа на ответ в сервлете

StackOverflow https://stackoverflow.com/questions/3097625

  •  29-09-2019
  •  | 
  •  

Вопрос

В настоящее время мы используем OpenOffice, чтобы захватить закладки в файловом документе шаблона и заменить их содержанием из нашей DB через Java. Линии кода, которые на самом деле сохраняют файл, выглядят так ...

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

Мы хотим напрямую написать файл на выходной сигнал ответа сервлета, кто знает, как можно напрямую получить документ в качестве байтового массива или ввода ввода через API onoOffice Uno в Java?

Это было полезно?

Решение

Это зависит от реализации UNO API. Мы смогли сделать это с 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);

Другие советы

Я бы предложил сохранить файл локально сначала (из API UNO), затем потоковим результат из кода Java перед удалением файла [TEMP]. Причина этого состоит в том, что вы можете отделить проблему с генерацией документа OpenOffice от вашей доставки клиенту. Например, если вы не можете сгенерировать документ, вы можете создать ошибку без проблем для частично письменного ответа, передаваемого клиенту. Кроме того, если вы уже не смотрели на инструменты, вы можете посмотреть на Докмоз который обеспечивает избыточность, оптимизацию производительности и функции слияния данных. Он может представлять непосредственно к потоку, который вы поставляете (и предположительно заботится о выпуске частичных потоковых результатов).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top