2016-08-01 65 views
0

我尝试使用itext创建pdf并在富文本中添加此文件。 我创建的PDF没关系,但是当我想将文件放入富文本文件中时,我的文档Notes中出现错误:“null”。XPAGES - 使用getDocumentByUNID添加丰富文本中的文件

我不明白。

这是我的代码:

// recupere l'id du document ouvert dans l'url 
      String idDocument = XSPContext.getXSPContext(FacesContext.getCurrentInstance()) 
        .getUrl().getParameter("documentId"); 

      // recupere le document 
      Session session = Factory.fromLotus(Utils.getSession(), Session.class, null); 
      Database db = session.getCurrentDatabase(); 
      Document docRepeat = db.getDocumentByUNID(idDocument); 

pieceJointe.copieFichierDansRichText(docRepeat, nomChampSauvegarderPdf, tempDocPdf, 
        nomPdf, REPERTOIRE); 

创建我pdf'file(这是确定)和=>

public void copieFichierDansRichText(Document monDoc, String nomRti, File file, 
     String nameFichier, String chemin) { RichTextItem rtiNew = (RichTextItem) monDoc.createRichTextItem(nomRti); 
    PieceJointe pieceJointe = new PieceJointe(); 
    pieceJointe = buildPieceJointe(file, nameFichier, chemin); 

    rtiNew.embedObject(EmbeddedObject.EMBED_ATTACHMENT, null, pieceJointe.getChemin(), 
      pieceJointe.getNomPiece()); 
    monDoc.computeWithForm(true, false); 
    monDoc.save();} 

的问题,我有

enter image description here

但当我用这个来创建我的pdf没关系,我有信息? 它只是当我想创建它说空的异常的富文本! 在控制台我有“org.openntf.domino.utils.DominoUtils $ 4运行” 你能帮我吗?

编辑 似乎docRepeat是问题

Document docRepeat = db.getDocumentByUNID(idDocument); 

我尝试docRepeat不为空,有一个例外指定者....

回答

0

我找到! 这是openntf不起作用。 我必须使用lotus.domino.document =>

public void copieFichierDansRichText(String idDocument, String nomRti, File file, 
     String nameFichier, String chemin) throws NotesException { 

    lotus.domino.Session session = Utils.getSession(); 
    lotus.domino.Database db = session.getCurrentDatabase(); 
    lotus.domino.Document monDoc = db.getDocumentByUNID(idDocument); 

    try { 
     if (monDoc != null) { 
      lotus.domino.RichTextItem rtiNew = (lotus.domino.RichTextItem) monDoc 
        .getFirstItem(nomRti); 
      PieceJointe pieceJointe = new PieceJointe(); 
      pieceJointe = buildPieceJointe(file, nameFichier, chemin); 

      rtiNew.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", pieceJointe.getChemin() 
        + pieceJointe.getNomPiece(), pieceJointe.getNomPiece()); 
      monDoc.computeWithForm(true, true); 
      monDoc.save(true); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 
+1

使用Lotus API – jpishko

+0

时,是的,我会添加此感谢rtiNew.recycle()不要忘了在你的Domino对象调用循环(); monDoc.recycle(); db.recycle();但是对于我所做的或没有的会话? – sissi49

+1

我也回收会话。我已经看到冲突的信息是否需要,以保证安全我在不再需要它时回收会话。 – jpishko