iText5.5.13.1を使用し、HTMLファイルをPDF化しようとしています。
以下のようなテスト用のHTMLを使用し、PDFへ変換処理を実行しましたが、HTMLWorker.parseToListの箇所でjava.lang.NullPointerExceptionがスローされました。
しかし、<HR>タグを除去すると正常にPDFが出力されるため、<HR>タグが原因というところまではわかりましたが、解決策が見つけられない状況です。
様々な資料を検索していましたが、<HR>タグ対応はiText2系のバージョンで対応済であるという記述を見つけており、対応はしていると考えています。
対応策について知識のある方の意見をお聞きしたいです。
HTML
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html lang="ja"> 3<body> 4<h1>testてすと</h1> 5<hr> 6<h1>testてすと</h1> 7</body> 8</html>
Java
1public class Test { 2 private static final float MARGIN_SIZE = 60; 3 4 public static void main(String[] args) throws Exception { 5 6 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.html"))); 7 StringBuilder sb = new StringBuilder(); 8 9 String line; 10 while ((line = br.readLine()) != null) { 11 sb.append(line); 12 } 13 14 HashMap<String, Object> prov = new HashMap<String, Object>(); 15 prov.put(HTMLWorker.FONT_PROVIDER, new TextFontProvider()); 16 17 OutputStream file = new FileOutputStream(new File("output.pdf")); 18 Document doc = new Document(PageSize.A4, 30, 30, 30, 30); 19 PdfWriter.getInstance(doc, file); 20 doc.open(); 21 22 HTMLWorker wkr = new HTMLWorker(doc); 23 wkr.setProviders(prov); 24 25 List<Element> list = HTMLWorker.parseToList( 26 new StringReader(sb.toString()), 27 null, prov); 28 for (Element e : list) { 29 doc.add(e); 30 } 31 doc.close(); 32 file.close(); 33 } 34 35}
Java
1public class TextFontProvider implements FontProvider { 2 /** フォントサイズ */ 3 private static final float FONT_SIZE = 10.5f; 4 5 /** 6 * コンストラクタ 7 */ 8 public TextFontProvider() { 9 } 10 11 @Override 12 public Font getFont(String fontname, String encoding, boolean embedded, 13 float size, int style, BaseColor color) { 14 Font font = null; 15 try { 16 font = new Font(BaseFont.createFont("KozMinPro-Regular", "UniJIS-UCS2-H", 17 BaseFont.NOT_EMBEDDED), FONT_SIZE, style, color); 18 } catch (Exception e) { 19 e.printStackTrace(); 20 } 21 22 return font; 23 } 24 25 @Override 26 public boolean isRegistered(String fontname) { 27 return false; 28 } 29} 30
・スローされた例外の全文は以下になります。
Exception in thread "main" java.lang.NullPointerException at com.itextpdf.text.html.simpleparser.HTMLWorker.createLineSeparator(HTMLWorker.java:445) at com.itextpdf.text.html.simpleparser.HTMLTagProcessors$5.startElement(HTMLTagProcessors.java:208) at com.itextpdf.text.html.simpleparser.HTMLWorker.startElement(HTMLWorker.java:199) at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.processTag(SimpleXMLParser.java:581) at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.go(SimpleXMLParser.java:299) at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.parse(SimpleXMLParser.java:607) at com.itextpdf.text.html.simpleparser.HTMLWorker.parse(HTMLWorker.java:153) at com.itextpdf.text.html.simpleparser.HTMLWorker.parseToList(HTMLWorker.java:828) at com.itextpdf.text.html.simpleparser.HTMLWorker.parseToList(HTMLWorker.java:809) at test.Test.main(Test.java:44)
回答2件
あなたの回答
tips
プレビュー