当前位置:编程学习 > JAVA >>

linux系统下 使用itext将html文件转换成PDF文件渲染图片的问题

在window系统下:使用itext将html文件转换成PDF文件,再渲染图片,没有问题,代码如下:

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("E:/workspace/gtos/WebRoot/WEB-INF/tpl/data_template.html")));
String row = null;
while ((row = reader.readLine()) != null){
    html.append(row);
}
reader.close();

OutputStream os = new FileOutputStream("我的报告.pdf");
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

renderer.setDocumentFromString(html.toString());
//解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("file:/E:/workspace/gtos/WebRoot/images/pdf"));
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

//说明:
//E:/workspace/gtos/WebRoot/WEB-INF/tpl/data_template.html文件含有很多图片,图片放在目录
//E:/workspace/gtos/WebRoot/images/pdf下,用上面的代码在window下把这个html转换成pdf,成功。
//---------------------------------------------------------------------------------------


但是把上面的代码放在linux系统下,导出的pdf只含有文字信息,pdf里面没有渲染进去图片。
在linux,以上代码改成了:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/usr/apache-tomcat-6.0.35/gtos/WEB-INF/tpl/data_template.html")));
String row = null;
while ((row = reader.readLine()) != null){
    html.append(row);
}
reader.close();

OutputStream os = new FileOutputStream("我的报告.pdf");
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("/usr/apache-tomcat-6.0.35/gtos/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

renderer.setDocumentFromString(html.toString());
//解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("/usr/apache-tomcat-6.0.35/gtos/images/pdf"));
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

//-------------------------------------------------------
html文件里面的图片路径不管是写相对路径还是绝对路径,都不起作用。
上面红色处如果不进行修改,或者在红色处前面增加file:/那么就有报错。

哪位Itext高手遇见过这样的问题请指定,小菜不胜感激。。。 --------------------编程问答-------------------- 如果想获得高质量排版效果的 PDF,建议学习下如何使用LaTex

略有难度,但是学会了受益匪浅,以后发简历和论文都很方便,而且效果绝佳

下面网址和一提供教程
http://www.latexstudio.cn/books.html 

接分 --------------------编程问答-------------------- 接分是?你所说的那个LaTex,你自己会吗?我想我需要去看一下。
目前解决这个问题很紧急,除非没办法解决。 --------------------编程问答-------------------- renderer.getSharedContext().setBaseURL("file:/usr/apache-tomcat-6.0.35/gtos/images/pdf")); --------------------编程问答-------------------- 麻烦问一下 问题解决了么? --------------------编程问答-------------------- file:///usr/apache-tomcat-6.0.35/gtos/images/pdf  这样问题就解决了 --------------------编程问答-------------------- // 解决图片的相对路径问题,如果是绝对路劲的话这个设置无用
renderer.getSharedContext().setBaseURL("http://www.baidu.com/img/");
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,