Преобразование HTML с упорядоченным списком и div с itextpdf
Я пытался преобразовать HTML-страницу с упорядоченным списком и некоторыми тегами div с itextpdf, но, похоже, это не сработало. Я создал следующую простую упорядоченную структуру списка в HTML, чтобы продемонстрировать проблему:
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<!-- <div> -->
<ol>
<li>A
<ol>
<li>AA</li>
<li>AB</li>
<li>AC
<ul>
<li>ACA</li>
<li>ACB</li>
</ul>
</li>
<li>AD
<ul>
<li>ADA</li>
<li>ADB</li>
</ul>
</li>
</ol>
</li>
</ol>
<!-- </div> -->
</body>
</html>
Пока все работает нормально, и я получаю правильный, хорошо отформатированный PDF. Однако когда я удаляю комментарий вокруг тега div, он больше не работает. Я получаю все элементы упорядоченного списка в одной строке, в результате файл PDF выглядит так:
- AAABAC ACAACBAD ADAADB
Мой метод для преобразования выглядит так:
private void convertHtmlToPdf(String htmlFilePath, String generatedPdfFilePath) throws IOException, FileNotFoundException, DocumentException {
String fileContent = FileUtils.readFileToString(new File(htmlFilePath));
OutputStream file = new FileOutputStream(new File(generatedPdfFilePath));
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, file);
document.open();
InputStream is = new ByteArrayInputStream(fileContent.getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
document.close();
file.close();
}
Так что это самый простой код преобразования. Я не использую CSS или вставляю картинки. Однако в моем реальном коде мне нужно использовать CSS для преобразования, и форматирование определяется с помощью элементов div. Поэтому я не могу просто удалить все div-ы, чтобы преобразование заработало.
Это ошибка, в itextpdf, или я что-то пропустил? У кого-нибудь есть идеи для обхода этой проблемы?
Я использую действительно последнюю (5.5.6) версию itextpdf.
1 ответ
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<div>
<ol>
<li>A
<ol>
<li>AA</li>
<li>AB</li>
<li>AC
<ul>
<li>ACA</li>
<li>ACB</li>
</ul>
</li>
<li>AD
<ul>
<li>ADA</li>
<li>ADB</li>
</ul>
</li>
</ol>
</li>
</ol>
</div>
</body>
</html>
этот код должен работать, попробуйте