如何从使用ITextRenderer创建的pdf上的本地目录获取图像?

时间:2016-12-08 14:03:35

标签: java image itext html-parsing pdf-parsing

我正在使用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

1 个答案:

答案 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中工作。我希望这个技巧可以帮助别人。