将MIME附件从文档复制到文档

时间:2012-10-25 23:07:14

标签: xpages mime

XPages应用程序使用“模板”文档,其中包含两个绑定到RichText编辑器和文件上载/下载控件的字段。 常规文档最初链接到模板文档,其中一个数据源用于当前文档的公共字段(标题,类别,读者/作者...),第二个数据源显示来自模板的只读RT +附件。

当用户决定更改RT /附件时,他将文档与模板取消链接 - 将RT +附件从模板复制到当前文档。

问题: RT副本(以及附件)的标准Java代码段是:

session.setConvertMime(true);
RichTextItem rti = (RichTextItem)docTemplate.getFirstItem("Body");
rti.copyItemToDocument(docCurrent, "Body");
rti = (RichTextItem)docTemplate.getFirstItem("Files"); <====
rti.copyItemToDocument(docCurrent, "Files");
docCurrent.save(); //saves in RT format, next save via XPage converts to MIME

这总是适用于Body字段(虽然它稍微改变了格式),但它很少适用于附件。 在Notes客户端中重新保存模板文档会将RT从MIME转换为本机RT格式,代码可以正常工作。

不工作意味着:

  • 例外java.lang.ClassCastException: lotus.domino.local.Item incompatible with lotus.domino.RichTextItem与箭头对齐。
  • 缺少文件字段(正确创建正文) 对于某些附件代码似乎有用(文本文件),对于更大或二进制它失败(23k .doc,3M .pdf)。

上述代码的LotusScript替代方法称为代理也无济于事。 数据源属性computeWithForm未按用途使用。

问题:在文档之间复制MIME附件的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

最快捷的方法是使用Document.copyAllItems(Document doc,boolean replace),而不是删除不必要的内容。