2016-06-28 10 views
0

HTMLをdocxに変換しようとすると、nullポインタ例外が発生する理由を理解できません。xHTMLImporter.convert(String、null)nullポインタ例外

私はすべての依存関係とdocx4j 3.2.1を使用し、これはコード

private void ajoutDescription(String description, int maxWidth) { 
     if (description != null) { 
      if (description.length() > 1) { 
       description = formattageDescription(description, maxWidth); 
       try { 
        xHTMLImporter = new XHTMLImporterImpl(wordMLPackage); 
        wordMLPackage.getMainDocumentPart().getContent().addAll(xHTMLImporter.convert(description, null)); 
       } catch (Docx4JException e) { 
        System.out.println("bug ajout desc"); 
        System.out.println(description); 
        e.printStackTrace(); 
       } 
       catch (NullPointerException e) { 
        System.out.println("bug ajout desc not Docx4j"); 
        System.out.println(description); 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

であり、これはxHTMLImporter.convertでエラーと説明のarg(説明、NULL)

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="ISO-8859-1" /> 
    <style type="text/css">p, ul, li, table, tr, td, font{font-family: Arial;font-size:120%}img{max-width:902px; height:auto;}</style> 
</head> 
<body> 
    <p><img id="img1983" src="file:///C:/Users/david.guy/.caliberrm/4FA4F864-5D3E-4A30-A684-163FADFEB4D9.PNG" /></p> 
</body> 
</html> 
java.lang.NullPointerException 
    at org.docx4j.finders.RangeFinder.apply(RangeFinder.java:59) 
    at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:106) 
    at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:109) 
    at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:109) 
    at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:109) 
    at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:109) 
    at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:109) 
    at org.docx4j.TraversalUtil.<init>(TraversalUtil.java:209) 
    at org.docx4j.convert.in.xhtml.BookmarkHelper.initBookmarkIdStart(BookmarkHelper.java:92) 
    at org.docx4j.convert.in.xhtml.BookmarkHelper.getBookmarkId(BookmarkHelper.java:82) 
    at org.docx4j.convert.in.xhtml.BookmarkHelper.anchorToBookmark(BookmarkHelper.java:187) 
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:834) 
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1236) 
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1216) 
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1216) 
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:796) 
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.convert(XHTMLImporterImpl.java:680) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.ajoutDescription(ModuleToDocxSFDGenerator.java:1683) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.ajoutMaquettes(ModuleToDocxSFDGenerator.java:788) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.ecritureCURecursive(ModuleToDocxSFDGenerator.java:434) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.ecritureCURecursive(ModuleToDocxSFDGenerator.java:377) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.ecritureCU(ModuleToDocxSFDGenerator.java:345) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.lancerExportDocx(ModuleToDocxSFDGenerator.java:196) 
    at com.simat.export.docx.ModuleToDocxSFDGenerator.docxParser(ModuleToDocxSFDGenerator.java:176) 
    at com.simat.test.TestSFD.main(TestSFD.java:109) 

あります私はこれをどのように修正するのか分かりません。画像によってはこのバグは発生しませんが、どのバグが起こっているのかわかりません。

+0

imgタグからid属性を削除して修正しました – David

答えて

0
java.lang.NullPointerException 
at org.docx4j.finders.RangeFinder.apply(RangeFinder.java:59) 
at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:106) 
: 
at org.docx4j.finders.RangeFinder.walkJAXBElements(RangeFinder.java:109) 
at org.docx4j.TraversalUtil.<init>(TraversalUtil.java:209) 
at org.docx4j.convert.in.xhtml.BookmarkHelper.initBookmarkIdStart(BookmarkHelper.java:92) 

@idを削除すると、anchorToBookmarkが呼び出されなくなったため、エラーは回避されました。

この問題は、wordMLPackageの内容によって引き起こされるようです。その場合は、再度docxを投稿してください。

+0

この場合、実行が中断されてもdocxは生成されません。しかし、私は再びエラーを生成して、この例外を通して処理を続けることができるので、アプリケーションは実行を終了し、興味があればdocxを生成することができます。 – David