在使用IText
. _ <br/>
附加标签时,项目列表的序列号不会加一。考虑以下示例:
String withoutBrTag = "<html><head></head><body><p>this is order list</p>" +
" <br>" +
" <ol>" +
" <li>lafjad</li>" +
" <li>alsdfkjla </li>" +
" <li>asdflkjadslfkj</li>" +
" </ol>" +
" <br>" +
" <p>list item ended</p> "+
"</body></html>";
String wihBrTag = "<html><head></head><body><p>this is order list</p>" +
" <br>" +
" <ol>" +
" <br>" +
" <li>lafjad</li>" +
" <br>" +
" <li>alsdfkjla </li>" +
" <br>" +
" <li>asdflkjadslfkj</li>" +
" <br>" +
" </ol>" +
" <br>" +
" <p>list item ended</p> "+
"</body></html>";
Tidy tidy = new Tidy();
tidy.setXmlOut(true);
tidy.setQuiet(true);
tidy.setShowWarnings(false);
OutputStream outputStream = new FileOutputStream("test1.pdf");
ByteArrayInputStream inputStream = new ByteArrayInputStream(withBrTag.getBytes());
Document doc = tidy.parseDOM(inputStream, null);
inputStream.close();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(outputStream);
对于字符串 withBrTag
,输出为:
this is order list
2. list item one
4. list item two
6. list item three
list item ended
注意编号 - 2, 4, 6
!每个<br/>
标签在执行时被解析为<li>
节点tidy.parseDOM(inputStream, null)
。因此编号发生变化。TIDY以错误的方式解析html
内容,导致编号问题。
但是如果我使用String withoutBrTag
生成的输出是预期的。
this is order list
1. list item one
2. list item two
3. list item three
list item ended
谁能解释为什么<br/>
标签被视为</li>
标签以及如何解决?
注意 1:不仅对于<br/>
标签编号更改,而且对于任何html
标签,如 -<p>, <i>, <hr/>
标签。这意味着如果在标签之前或之后添加任何<li>
标签,它将影响编号。
注 2:使用 itextpdf-2.0.1。