请帮帮我。
我在使用itextpdf 5.5.6和itext 5.5.6在pdf im中渲染图像时遇到问题。
我的代码是:
.
.
.
URL url = new URL("http://some.html");
URLConnection uc = url.openConnection();
InputStreamReader inputStreamReader = new InputStreamReader(uc.getInputStream());
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
worker.parseXHtml(pdrwriter, doc, inputStreamReader);
doc.close();
//close the writer
pdrwriter.close();我的html有:
<table><tr><td><img src="http://mysite/logo.jpg" /></td</tr></table>我得到了错误:发现无效的嵌套标记td,需要结束标记img。
我试过了
<table><tr><td><img src="http://mysite/logo.jpg"></img</td</tr></table> sam错误..
你知道怎么做吗?感谢您的帮助!
发布于 2015-05-30 19:34:32
这是错误的:
<table><tr><td><img src="http://mysite/logo.jpg" /></td</tr></table>它应该是:
<table><tr><td><img src="http://mysite/logo.jpg" /></td></tr></table>这也是错误的:
<table><tr><td><img src="http://mysite/logo.jpg"></img</td</tr></table>它应该是:
<table><tr><td><img src="http://mysite/logo.jpg"></img></td></tr></table> 发布于 2015-12-28 13:10:15
如果您正在解析的HTML文件存储在与工作目录不同的目录中,iText将无法创建图像对象。我们必须提供一个ImageProvider接口的实现,告诉iText在遇到img标记时该怎么做。此接口具有以下方法。
Image retrieve(final String src);
String getImageRootPath();
void store(String src, Image img);
void reset();您可以编写自己的类来实现这四个方法,也可以子类化AbstractImageProvider。更倾向于选择后者。
XML Worker将使用AbstractImageProvider类的store()方法来缓存在映射中遇到的所有Image对象。当为具有相同src的图像调用retrieve()方法时,这些对象将被重用。如果你不缓存图片,你的PDF就会变得臃肿。相同的图像位和字节将多次写入PDF。ImageProvider ()方法清除缓存;它在克隆reset时使用。最后,getImageRootPath()方法没有实现。您必须自己实现它,就像下面的代码片段中所做的那样
htmlContext.setImageProvider(new AbstractImageProvider() {
public String getImageRootPath() {
return "src/main/resources/html/";
}
});https://stackoverflow.com/questions/30545588
复制相似问题