iText 5.5.9 XMLWorker を使用して html を pdf に変換しています。
<html>
<head></head>
<body>
<div style="width:100%; height:100%;">
<div>This is sample text.
<ol>
<li>
This is outer list item first
<ul>
<li>Inner list item first</li>
<li>Inner list item second</li>
<li>Inner list item third</li>
<li>Inner list item fourth</li>
<li>Inner list item fifth</li>
</ul>
</li>
<li>
This is outer list item second
</li>
</ol>
</div>
</div>
</body>
</html>
ネストされたリストに対して受け取っている出力は次のとおりです。
変換のコードは次のとおりです。
public void createPdf_Using_ElimentList(String outPutPath) {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outPutPath));
document.open();
PdfPCell tempCell = new PdfPCell();
ElementList elements = null;
tempCell.setBorder(Rectangle.NO_BORDER);
elements = parseToElementList_Unicode(clean_str, css);
if (elements != null) {
tempCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
for (com.itextpdf.text.Element e : elements) {
tempCell.addElement(e);
}
tempCell.setPadding(5);
tempCell.setPaddingBottom(8);
table.setSplitLate(false);
table.addCell(tempCell);
success = true;
}
document.add(newTable);
document.close();
}
public static ElementList parseToElementList_Unicode(String HTMLContent, String CSSContent) {
PdfPCell tempCell = new PdfPCell();
ElementList elements = new ElementList();
CSSResolver cssResolver = new StyleAttrCSSResolver();
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
try {
InputStream cssIS = new ByteArrayInputStream(CSSContent.getBytes());
InputStream HTML_IS = new ByteArrayInputStream(HTMLContent.getBytes());
String dirName = "C:/Tasks/Fonts/";
fontProvider.register(dirName + "arial.ttf", "Arial");
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
// HTML
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
// Pipelines
ElementHandlerPipeline pdf = new ElementHandlerPipeline(elements, null);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(HTML_IS, Charset.forName("UTF-8"));
} catch (Exception e) {
e.printStackTrace();
}
return elements;
}
下位互換性がないため、iText 7を使用することは私にとってオプションではありません。iText 5.5.9の解決策はありますか。前もって感謝します。