سؤال

نستخدم حاليًا 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);

نريد أن نكتب الملف مباشرة إلى Servlet Response OutdureStream ، هل يعرف أي شخص طريقة للحصول على المستند مباشرة كصفيف بايت أو inputStream عبر API Uno OpenOffice في Java؟

هل كانت مفيدة؟

المحلول

هذا يعتمد على تنفيذ واجهة برمجة تطبيقات UNO. كنا قادرين على القيام بذلك مع 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);

نصائح أخرى

أود أن أقترح حفظ الملف محليا أولاً (من واجهة برمجة التطبيقات UNO) ثم قم ببث النتيجة من رمز Java الخاص بك قبل حذف ملف [temp]. والسبب في ذلك هو أنه يمكنك فصل مشكلة في توليد المستند عن طريق OpenOffice من التسليم إلى العميل. على سبيل المثال ، إذا فشل المستند في إنشاءه ، فيمكنك إنتاج خطأ دون مخاوف بشأن استجابة مكتوبة جزئيًا تم بثها إلى عميل. أيضًا ، إذا لم تكن قد نظرت إلى الأدوات بالفعل ، فقد ترغب في النظر إليها دس مما يوفر وظائف التكرار وتحسين الأداء ووظائف استخلاص البيانات. يمكن أن يتم تقديمها مباشرة إلى دفق توفره (ويفترض أنه يعتني بمسألة الدقة الجزئية).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top