当我对具有很大附件的NotesDXLExporterClass.Export
对象调用NotesDocumentClass
时,会遇到System.Runtime.InteropServices.COMException: 'Out of memory'
异常。
我希望通过将NotesDXLExporter.OmitRichtextAttachments
设置为true
来解决此问题,但是看来该属性无法通过COM(1)使用。
在这里,我可以采取哪些解决方案?
(1)Differences between accessing Domino Objects through either LotusScript or COM
注释4: NotesXMLProcessor
未在COM中实现。 NotesDXLExporter
和NotesDXLImporter
实现ExitOnFirstFatalError
,Log
和LogComment
,而不是继承它们。 )
编辑:
当我在C:\Program Files (x86)\IBM\Lotus\Notes\domobj.tlb
中打开Oleview.exe
并查看NotesDXLExporterClass
界面时,只会看到以下内容:
[
uuid(29131437-2EED-1069-BF5D-00DD011186B7)
]
dispinterface NOTESDXLEXPORTER {
properties:
[id(0x00000bf6)
]
VARIANT FORCENOTEFORMAT;
[id(0x00000bfa)
]
VARIANT OUTPUTDOCTYPE;
[id(0x00000bfb)
]
BSTR DOCTYPESYSTEM;
[id(0x00000f1e), readonly
]
BSTR LOG;
[id(0x00000f1f)
]
BSTR LOGCOMMENT;
[id(0x00000f20)
]
VARIANT EXITONFIRSTFATALERROR;
methods:
[id(0x00000f28)]
void SETINPUT(VARIANT INPUT);
[id(0x00000f29)]
void SETOUTPUT(VARIANT OUTPUT);
[id(0x00000f2a)]
void PROCESS();
};
答案 0 :(得分:0)
您链接到的文档(以及我的本地Notes帮助)并没有说明NotesDXLExporter.OmitRichtextAttachments
在COM中不可用。您是否尝试过使用该属性并收到错误消息?
如果NotesDXLExporter.OmitRichtextAttachments
不可用,您是否可以在相关的Domino数据库(或为此目的而创建的另一个数据库)中开发代理程序?
我认为代理商可以通过NotesAgent.Run
获取目标文档的注释ID,并将该文档的DXL导出到字段(如果DXL大于32kB,则可能必须为富文本)。另一个临时文件。您的代码应通过COM调用该代理,获取生成的临时文档,从其字段中读取DXL,然后删除该临时文档。
这似乎过于复杂,但这是我想到的唯一解决方案。
答案 1 :(得分:0)
尝试将代码作为LotusScript代理运行。
如果失败,则问题是类固有的问题,而不是COM实现中的问题,除了尝试更新Notes / Domino的最新版本外,您将无能为力。
如果有效,则可能的解决方法是让您的COM代码调用服务器上的LotusScript代理来完成这部分工作。