在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高手遇见过这样的问题请指定,小菜不胜感激

解决方案 »

  1.   

    如果想获得高质量排版效果的 PDF,建议学习下如何使用LaTex略有难度,但是学会了受益匪浅,以后发简历和论文都很方便,而且效果绝佳下面网址和一提供教程
    http://www.latexstudio.cn/books.html 接分
      

  2.   

    接分是?你所说的那个LaTex,你自己会吗?我想我需要去看一下。
    目前解决这个问题很紧急,除非没办法解决。
      

  3.   

    renderer.getSharedContext().setBaseURL("file:/usr/apache-tomcat-6.0.35/gtos/images/pdf"));
      

  4.   

    file:///usr/apache-tomcat-6.0.35/gtos/images/pdf  这样问题就解决了
      

  5.   

    // 解决图片的相对路径问题,如果是绝对路劲的话这个设置无用
    renderer.getSharedContext().setBaseURL("http://www.baidu.com/img/");