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 开发