我正在使用java和itext 5生成pdf。我的一个输入行来自所见即所得编辑器,其中包含嵌入base64图像的html(即,不是图像的链接)。所见即所得可以有零到多个图像。
所见即所得包含:
此“描述”由我的代码处理:
Document document = new Document(PageSize.A4, 72f, 72f, 72f, 72f);
PdfWriter.getInstance(document, resourceImage);
document.open();
String ppDescription = "";
if(activityDtl.getPPDescription() == null || activityDtl.getPPDescription().isEmpty()){
ppDescription = "";
}else{
//Clean the HTML to be correct XHTML
String cleanDesc = cleanHTML(activityDtl.getPPDescription());
InputStream inputStream1 = new ByteArrayInputStream (cleanDesc.getBytes("UTF-8"));
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
Tidy tidy1 = new Tidy();
tidy1.setXHTML(true);
tidy1.setQuiet(true);
tidy1.setShowWarnings(false);
tidy1.parseDOM(inputStream1, baos1);
ppDescription = baos1.toString();
// System.out.println("ppDescription: " + ppDescription);
}
p6.add(new Chunk("Description: ", smallBold));
if(ppDescription == null || ppDescription.isEmpty()){
p6.add("");
}else{
ElementList list1 = XMLWorkerHelper.parseToElementList(ppDescription, null);
System.out.println("list1: " + list1);
for (Element element : list1) {
p6.add(element);
}
}
cell.addElement(p6);
这是在该字段的输入中接收到的内容(说明)是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator"
content="HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net" />
<title></title>
</head>
<body>
<p>Cooking instructions:</p>
<p><img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAggAAAC .... H3BNquwQYUAAAAASUVORK5CYII="
alt="" /></p>
<p>Cook the fish.</p>
</body>
</html>
这是pdf中的内容:
我希望pdf中的图像与所见即所得(wysiwyg)中的第一个图像相同(即,两条指令行之间的图像)。
1条答案
按热度按时间wnrlj8wa1#
感谢mkl和这个链接https://stackoverflow.com/a/20938015/1729265 我有:
现在我需要将上面的输出(xmlparser.parse(is,charset))添加到p6中,以便将其包含在表中。我试过:
但是,这给了我一个错误信息:
这是修改后的类: