0

我创建了一个网页,并希望允许用户导出页面的内容。为此,我使用了 Apache-POI 库。这适用于文本。但是如何导出 mime 内容?如果我将富文本属性更改为“将内容存储为 html/mime”(因为我想在 Notes 中格式化内容,有时内容包含图像)。如果那是不可能的,那么 xpage 中有哪些可用的替代方案?

下面的代码将作为 xAgent 执行。

谢谢阿明

importPackage(java.io);
importPackage(org.apache.poi.hwpf);
importPackage(org.apache.poi.hwpf.usermodel);
importPackage(org.apache.poi.poifs.filesystem);

var docID = sessionScope.contentUNID;
var nv:NotesView = database.getView("(allByKey)");
var doc:NotesDocument = nv.getDocumentByKey(docID, true);

var fs:POIFSFileSystem = new POIFSFileSystem(new FileInputStream("empty.doc"));
var wdoc:HWPFDocument = new HWPFDocument(fs);
var wdRange:Range = wdoc.getRange();

wdRange.insertBefore(doc.getItemValueString("title"));
wdRange.insertAfter(doc.getMIMEEntity("content")); !!!doesn'twork

var extCont = facesContext.getExternalContext(); 
var pageResponse = extCont.getResponse();
var pageOutput = pageResponse.getOutputStream();

pageResponse.setContentType("application/vnd.ms-word");
pageResponse.setHeader("Cache-Control", "no-cache");
pageResponse.setHeader("Content-Disposition","inline; filename=export.doc");
wdoc.write(pageOutput);
pageOutput.flush();
pageOutput.close();

facesContext.responseComplete();
4

1 回答 1

1

您将需要使用MIMEEntity类的方法来获取内容。例如doc.getMIMEEntity("content").getContentAsText(). 为此,您可能需要session.setConvertMIME(false)在获取文档之前进行设置。

另一种方法是获取它,RichTextItemdoc.getFirstItem("content")使用RichTextItem类的方法来获取内容。在这种情况下,您不会设置session.setConvertMIME(false).

于 2013-01-16T11:14:48.353 回答