我创建了一个网页,并希望允许用户导出网页内容。为此,我使用了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();
答案 0 :(得分:1)
您需要使用MIMEEntity
类的方法来获取内容。例如doc.getMIMEEntity("content").getContentAsText()
。为此,您可能需要在获取文档之前设置session.setConvertMIME(false)
。
另一种方法是将RichTextItem
与doc.getFirstItem("content")
一样使用,并使用RichTextItem
类的方法来获取内容。在这种情况下,您不会设置session.setConvertMIME(false)
。