簡體   English   中英

使用Java API將Lotus Notes文檔呈現為RTF,DXL時缺少字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM