itextpdf の例http://itextpdf.com/sandbox/htmlworker/HtmlContentForCellに従っています。
次のコードがあります。
// Relevant code from main part of the class:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4, 40, 40, 40, 40);
PdfWriter writer = PdfWriter.getInstance(document, baos);
document.open();
document.add(buildContent());
document.close();
// method that should provide content to the document.
public PdfPTable buildContent() throws IOException {
InfoList infoList = infoListInstance.get();
PdfPTable table = new PdfPTable(2);
for (InfoListMessage message
: infolistList.getMessages()) {
renderMessageMetadata(message, table);
renderMessageContent(message, table);
}
return table;
}
// method where the problem occurs and exception is thrown in the for-loop line
public void renderMessageContent(
InfoListMessage message,
PdfPTable table) throws IOException {
PdfPCell cell = new PdfPCell();
for (Element e : XMLWorkerHelper.parseToElementList(message.getContent(), null)) {
cell.addElement(e);
}
table.addCell(cell);
}
for ループ "for (Element e ..." を含む行では、次の例外が発生します。
java.lang.ClassCastException: com.itextpdf.tool.xml.html.pdfelement.NoNewLineParagraph は com.itextpdf.text.Element にキャストできません
なんで?グーグルでこの例外に関する情報を見つけることができません。
この場合、使用しようとしていた html-snippet - message.getContent() によって返される - は、もともと次のようになっています。
<html>
<head></head>
<body>
justrandomtexthere
</body>
</html>