【问题标题】:How to convert html as well as css content in pdf using Java?如何使用 Java 转换 pdf 中的 html 和 css 内容?
【发布时间】:2017-06-10 06:19:20
【问题描述】:

我收到 NumberFormatException,如何解析边框 =“1px 纯黑色”的 css??

try {
    Document document = new Document(PageSize.LETTER);
    PdfWriter.getInstance(document, new FileOutputStream(
              "/home/Booking_form_PDFs/booking_form.pdf"));
    document.open();
    HTMLWorker htmlWorker = new HTMLWorker(document);
    String str = "<html><head></head><body>"
         + "<h1>Show your support</h1>"
         + "<table border=\"1px solid black\"><tr><td></td></tr></table>"
         + "</body></html>";
    htmlWorker.parse(new StringReader(str));
    document.close();
    System.out.println("Done");
    } catch (Exception e) {
         e.printStackTrace();
    }
}

堆栈跟踪:

java.lang.NumberFormatException: For input string: "1px solid black"at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250) at java.lang.Float.parseFloat(Float.java:452)
    at com.itextpdf.text.html.simpleparser.CellWrapper.createPdfPCell(CellWrapper.java:132) at com.itextpdf.text.html.simpleparser.CellWrapper.<init>(CellWrapper.java:87)at com.itextpdf.text.html.simpleparser.HTMLWorker.createCell(HTMLWorker.java:475) at com.itextpdf.text.html.simpleparser.HTMLTagProcessors$13.startElement(HTMLTagProcessors.java:409) 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.TrialHTMLtoPDF.main(TrialHTMLtoPDF.java:34)

【问题讨论】:

  • 这段代码都不解析数字。请显示堆栈跟踪
  • 在解析这个“1px纯黑色”时,它给出了数字格式异常,尽管在字符串@cricket_007中添加了它
  • 那么,我们可以有堆栈跟踪吗?
  • stackTrace 同上..@cricket_007
  • 好的,谢谢。奇怪的是 Float 试图被解析

标签: java itext flying-saucer


【解决方案1】:

像转义一样使用

\"""\"'"

如果需要,在两者之间使用+

最好从文本文件中读取。
这样可以减少这个问题。

【讨论】:

  • 我已经使用了转义字符,我需要输入两次吗?请为我编写示例代码,谢谢!
  • 您是否从文本文件中读取了 css。并查看 css 在您的文本文件中的语法和格式是否正确。并尝试单引号,即 "
    "
  • 即使这个“
    ”也不起作用
  • 唯一的纠正方法,因为我尝试使用 jsoup 或从文本文件中读取它
  • thanku @cricket_007 和 Kishan,我已经删除了 css 并只添加了 html
【解决方案2】:

由于 HTML 无效而引发异常。

表格border属性值是一个整数,它给出了边框的大小。例如:

<table border="1">...</table>

无法用该属性定义边框的样式或颜色。

你应该用CSS替换,如下:

<table style="border:1px solid blue">...</table>

【讨论】:

  • Thanks@obourgain,但是当我将 html 转换为 pdf 时,它不接受 css。这就是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多