有没有人找到如何从.NSF文件导出附件的解决方案? 以及如何将Lotus Notes表单导出为PDF文件?
能够以富文本格式将Body导出为单独的MS Word文件。 但是无法从数据库主体获取附件。
将Lotus Notes的内核尝试为PDF,但它仅适用于mail-in数据库。
答案 0 :(得分:1)
下面是从官方多米诺设计师文档中获取的代理代码。它迭代邮件数据库中的所有文档并处理每个文档。在每个文档中,它从字段Body
获取一个富文本项对象:
RichTextItem body = (RichTextItem)doc.getFirstItem("Body");
然后它通过以下方式从此富文本项对象获取嵌入对象的列表:
Vector v = body.getEmbeddedObjects();
然后它遍历此列表以通过以下方式确定文件附件:
if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { ... }
当找到附件时,它会被提取到c:\\extracts\\
文件夹,保留附件文件名。
如果您将附件存储在具有不同名称(不是Body
)的富文本字段中,只需修改以下代码即可反映您的要求。
代理商代码:
import lotus.domino.*;
import java.util.Vector;
import java.util.Enumeration;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
Database db = agentContext.getCurrentDatabase();
DocumentCollection dc = db.getAllDocuments();
Document doc = dc.getFirstDocument();
boolean saveFlag = false;
while (doc != null) {
RichTextItem body =
(RichTextItem)doc.getFirstItem("Body");
System.out.println(doc.getItemValueString("Subject"));
Vector v = body.getEmbeddedObjects();
Enumeration e = v.elements();
while (e.hasMoreElements()) {
EmbeddedObject eo = (EmbeddedObject)e.nextElement();
if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
eo.extractFile("c:\\extracts\\" + eo.getSource());
saveFlag = true;
}
}
if (saveFlag) {
doc.save(true, true);
saveFlag = false;
}
doc = dc.getNextDocument();
}
} catch(NotesException e) {
System.out.println(e.id + " " + e.text);
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
关于将Notes文档导出为PDF文件,几年前我在博客中写道:http://blog.texasswede.com/lotusscript-class-for-generating-pdf-files-using-n2pdf/
您需要第三方工具,我当时使用的是N2PDF,但您也可以使用SWING PDF Creator(它更便宜,我发现它更容易使用且更可靠)。