锁定老帖子 主题:介绍一个PDF的生成方案
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-05
我修改了其源代码,可以不用考虑楼主所说的那般严重。只是,如何上传修改好并且打包的JAR呢 ?
|
|
返回顶楼 | |
发表时间:2009-11-05
怎样在html中设置分页。
|
|
返回顶楼 | |
发表时间:2009-11-05
中文可以了。
ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>test</title> <style type="text/css"> <!-- body { font-family: SimSun; font-size:22px; font-style:italic; font-weight:bold; color:#00F; } --> </style></head> <body> 显示中文 </body> </html> |
|
返回顶楼 | |
发表时间:2009-11-05
修改后的xhtmlrenderer核心包已经在
http://yongboy.iteye.com/blog/510976 上面地址中提供下载,无须显示在CSS中定义字体了,无须如下直接显示定义引入字体: ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 估计会方便一些如我之类的新手吧。 |
|
返回顶楼 | |
发表时间:2009-11-06
narsil 写道 怎样在html中设置分页。
CSS中有相关的分页设置。 实际上我认为这个方案的精髓就在于能够使用HTML/CSS来控制PDF输出。很多朋友所谓的字体问题,分页问题,或者页面设置问题,实际上都可以通过CSS的方案来解决,这也是比较推荐的做法。动不动就去改源码,这个做法决不是什么最佳实践。 |
|
返回顶楼 | |
发表时间:2009-11-06
试用了下,很不错!
也不认同改源码... |
|
返回顶楼 | |
发表时间:2009-11-06
yongboy 写道 修改后的xhtmlrenderer核心包已经在
http://yongboy.iteye.com/blog/510976 上面地址中提供下载,无须显示在CSS中定义字体了,无须如下直接显示定义引入字体: ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 估计会方便一些如我之类的新手吧。 能否解决一个xhtml里面所有的中文字体,不仅仅是Body里面,也就是说一个xhtml里面多种中文字体。 |
|
返回顶楼 | |
发表时间:2009-11-06
最后修改:2009-11-06
public static void main(String[] args) throws Exception { String outputFile = "f:/teste/html/firstdoc.pdf"; OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); String html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body><p>你好啊!</p><p>这里加入图片</p><p><img src=\"hnd3.jpg\" width=\"139\" height=\"102\" /></p><p><img src=\"hnd3 (2).jpg\" width=\"140\" height=\"95\" /></p><p>测试而已!</p><p>hello the world~</p></body></html>"; renderer.setDocumentFromString(html); // 解决图片的相对路径问题 renderer.getSharedContext().setBaseURL("file:/F:/teste/html/"); renderer.layout(); renderer.createPDF(os); os.close(); System.out.println("生成成功!"); } 我这边代码拷贝自楼主,修改一下,如上,没有在html中定义样式。中文显示正常。
需要 iTextAsian.jar,以及修改后的源代码包。
附件中有生成PDF |
|
返回顶楼 | |
发表时间:2009-11-06
页面中图片为jfreechart生成的,生成pdf后图片不显示,已设置了图片相对路径为:
renderer.getSharedContext().setBaseURL("http://localhost:8081/test/");还是不行,请问有什么方法解决 ? |
|
返回顶楼 | |
发表时间:2009-11-06
yye_javaeye 写道 页面中图片为jfreechart生成的,生成pdf后图片不显示,已设置了图片相对路径为:
renderer.getSharedContext().setBaseURL("http://localhost:8081/test/");还是不行,请问有什么方法解决 ? 你应该设置成获取的绝对路径才行吧 |
|
返回顶楼 | |