使用itext生成pdf时加载图像

时间:2014-01-04 06:54:17

标签: html css pdf flying-saucer

我正在使用以下代码使用css生成pdf现在我正在使用内联css,因为我无法从外部加载css。

File file = new File(path + "\\" + id + "\\" + fileName + ".pdf");
        ServletOutputStream outputStream = response.getOutputStream();
        FileOutputStream fos = new FileOutputStream(file);
        ITextRenderer renderer = new ITextRenderer();
        StringBuilder htmls = new StringBuilder();
        htmls.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
        htmls.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
        htmls.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
        /*htmls.append("<head><style type=\"text/css\">");
        htmls.append("body{text-decoration: none; font-family: Arial, Verdana,Helvetica,sans-serif; font-size:12px;}");
        htmls.append("</style></head>");*/
        htmls.append("<head><style type=\"text/css\">");
        htmls.append(".gradi{background:url(resources/template/template1/images/grad.jpg) repeat-x!important}");
        htmls.append("</style></head>");
        htmls.append("<body>html body</body></html>");
        renderer.setDocumentFromString(htmls.toString());
            renderer.layout();
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".pdf\"");
            renderer.createPDF(outputStream);
            renderer.createPDF(fos);

现在上面代码的问题是我使用的是setDocumentFromString函数,因此我无法在外部加载css。 我的所有图像都在以下文件夹资源/ template / template1 / images是否可以在我的servlet中加载图像? 我应该在css的下一行加载图像的路径是什么?请帮我解决这个问题。

htmls.append(".gradi{background:url(resources/template/template1/images/grad.jpg) repeat-x!important}");

0 个答案:

没有答案