[英]Missing fields when rendering lotus notes document to RTF,DXL with Java API
我試圖將注釋文檔呈現為RTF,然后使用Java API呈現為DXL。 有了DXL后,我將使用XSL樣式表將其轉換為HTML。 我的目標是生成一個HTML文檔,該文檔顯示的內容應盡可能接近Notes客戶端中的文檔呈現。
但是,渲染的RTF和DXL中缺少計算字段。
這是用於生成DXL的代碼:
private String renderDocumentToDxl(lotus.domino.Document lotusDocument)
throws Exception {
Database db = getDatabase();
lotus.domino.Document tmp = db.createDocument();
RichTextItem rti = tmp.createRichTextItem("Body");
lotusDocument.computeWithForm(true, false);
lotusDocument.save();
lotusDocument.renderToRTItem(rti);
DxlExporter dxlExporter = getSession().createDxlExporter();
dxlExporter.setOutputDOCTYPE(false);
dxlExporter.setConvertNotesBitmapsToGIF(true);
return dxlExporter.exportDxl(tmp);
}
通過調用computeWithForm
添加到文檔中的字段在生成的DXL中不存在。
有什么方法可以使用Java API將計算所得的字段放入生成的DXL中? 還是有更好的方法使用Domino Java API生成注釋文檔的HTML表示?
我不太清楚你的目標。 有兩種可能性:
1)您希望LotusDocument中的項目存在於tmp中,並作為DXL中的實際標簽數據導出。 您的代碼不執行此操作。
2)您想讓LotusDocument中非隱藏項的值以文本形式存在於tmp的富文本正文項中,並且希望這些值包含在從tmp導出的DXL中-作為標簽中的文本身體項目。 這應該是您的代碼正在執行的操作。
如果您期望使用前者,則不是renderToRTItem所做的。 后者是后者。 即,它為您提供了LotusDocument中項的值的快照-但僅當且僅當它們將顯示給打開文檔的用戶時,才可以。 您自己沒有得到這些物品,它們不會在DXL中單獨顯示。 如果這只是您所期望的,並且沒有發生,則說明還有其他問題,您這里沒有提供足夠的信息來解決。
如果您希望前者(即LotusDocument中的實際項目)作為單獨的標記元素存在於從tmp導出的DXL中,那么您應該使用
lotusDocument.copyAllItems(tmp,true);
,
或序列
Item tmpItem = lotusDocument.getFirstItem(itemName); tmp.copyItem(tmpItem,"");
您可以使用URL獲取RichText字段的HTML表示形式
http://server/db.nsf/view/docunid/RichTextFieldname?OpenField
因此,保存您的tmp
文檔,獲取docunid並通過http從URL讀取結果
http://server/db.nsf/0/tmpdocunid/Body?OpenField
您不需要調用lotusDocument.computeWithForm
因為lotusDocument.renderToRTItem
確實已經執行了表單的輸入轉換和驗證公式。
請注意,對於這兩種方法,表單的LotusScript代碼都不會執行-以防萬一您的字段是以這種方式計算的。
如果您可以使用XPages,則可以選擇以下方法: http : //linqed.eu/2014/07/11/getting-html-from-any-richtext-item/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.