我正在关注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
为什么?我无法通过谷歌搜索找到有关此异常的任何信息。
在这种情况下,我试图使用的由message.getContent()返回的html片段看起来像这样:
<html>
<head></head>
<body>
justrandomtexthere
</body>
</html>
最佳答案
问题解决了。
这是因为我的itextpdf和xmlworker版本略有不同。
通过获得两个依赖项的完全相同的版本(在我的情况下为5.5.5),解决了这个问题和许多其他问题。
在经过两天的严格敲打之后,我无法承受足够的压力:为避免itext和xmlworker出现大量问题,请确保它们始终与项目中的版本完全相同。
希望这对其他人有帮助。
关于java - NoNewLineParagraph无法转换为Element,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28871767/