我正在使用ITextRenderer从html解析pdf,如下所示:
private void createPdf(File file, String content) throws IOException, DocumentException {
OutputStream os = new FileOutputStream(file);
content = tidyUpHTML(content);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(content);
renderer.layout();
renderer.createPDF(os);
os.close();
}
现在,如果html包含图像的本地路径,则它不会显示在pdf中。但是,如果img标签的src-value是在线图像的URL,则它确实有效。
如下: 不在pdf上显示:
<img src="C:\path\to\image\image.png" />
在pdf上正确显示:
<img src="http://flagpedia.net/data/currency/jpy/100jpy.jpg" />
本地文件的路径是正确的,因为如果我将该路径粘贴到我的网络浏览器中,它会显示图像。
如何在pdf上显示它?
UPDATE :这一切都在WildFly10应用服务器上的JSF / Primefaces Web应用程序中运行。因此,似乎直接路径到文件系统将无法正常工作。然后,我应该使用战争中的哪个目录来使用静态资源,例如此图像。目前它位于webapp/resources/images
。
答案 0 :(得分:0)
以下是使用具有JSF2.0
组件的<h:graphicImage>
或更新版时的操作方法。
我在myimage.png
文件夹中有图片webapp/resources/images/
。
现在我按如下方式添加组件:
<h:graphicImage library="images" name="myimage.png" />
现在在浏览器中,我检查了该元素以获取网址,并将该网址作为src
- <img>
- 标记的值插入,如下所示:
<img src="http://localhost:8080/myproject//javax.faces.resource/myimage.png.xhtml?ln=images"/>
瞧!现在我在html模板中使用带有url的静态图像,它将被解析为所述pdf并且图像也在pdf中工作。我希望这个技巧可以帮助别人。