JTidy проблема с номером элемента списка

Я сталкиваюсь со странной проблемой с Элементом Нумерованного Списка при создании PDF с использованием 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>&nbsp;"+
                "</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>&nbsp;"+
                "</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), Поэтому нумерация меняется. Приборка разобрала html неправильное содержание, что приводит к проблеме нумерации.

Но если я использую строку 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.

0 ответов

Другие вопросы по тегам