基于iText和flying saucer结合freemark生成pdf 范例

标签: itext flying saucer | 发表时间:2013-11-27 00:38 | 作者:lemonzone2010
出处:http://blog.csdn.net

项目主页:http://git.oschina.net/lemonzone2010/doc-render

最近公司需要生成PDF,基于这个需求简单学习了下IText 和 flying saucer,对于这两个技术.我先简单介绍下:

Flying Saucer和iText介绍:

    A.  iText是一个生成PDF文档的开源java库,能够动态从XML或者数据库生成PDF,同时它具备PDF文档的绝大多数属性(比如加密……),支持java,C#等。 官网:http://www.itextpdf.com/

    B.  Flying Saucer(或者叫xhtmlrender project on java.net)是一个基于iText的开源java库,能够轻松的将html(带css2.1)生成pdf。  网站:http://code.google.com/p/flying-saucer/

基于这个两个技术,大致就有了以下思路方便的生成pdf:

编写HTML模板--->通过Flying Saucer和IText--->生成pdf

于是这里需要用到一个java模板工具freemarker

    C. FreeMarker是一个模版引擎,一个基于文本的模板输出工具(生成任意的HTML表单代码)。 官网:http://freemarker.org/

范例说明:

项目主页:http://git.oschina.net/lemonzone2010/doc-render

1.支持中文

    a.目录doc-render/src/test/resources/config/fonts中如果没有字体,需要手动复制系统中字体文件ARIALUNI.TTF到目录

    b.window系统字体路径:C:/Windows/Fonts/ARIALUNI.TTF

    c. html模板文档css字体设置:   font-family: Arial Unicode MS;

2.能够加载图片,设置的默认图片路径 classpath:config/images/

3.关于中文不能正确换行问题需要替换jar

    a. 原有flying-saucer-core-9.0.3.jar,flying-saucer-pdf-itext5-9.0.3.jar 对于中文内容不能正确换行

    b.将上一条中两个jar包替换(已经将原jar包源码修改重新生成)如下:

          b1.  flying-saucer-core-9.0.3.jar             ---> doc-render/lib/flying-saucer-core-9.0.3-RC1.jar

          b2.  flying-saucer-pdf-itext5-9.0.3.jar    ---> doc-render/lib/flying-saucer-pdf-itext5-9.0.3-RC1.jar

4.运行Junit测试类 TestPdfGenerator.testGenerate() 即可生成pdf,pdf生成路径见日志(doc-render/tmp/).

5.由于生成pdf需要加载中文字体文件(一般字体文件>10M),本例中增加了资源池(最大资源数15),相关详细见ITextRendererObjectFactory.getObjectPool();经过简单测试能够支持:150个用户迭代10次

6.   模板html:点击查看 overseaAssistance.html 

7.   pdf生成文件点击查看 

8.基于maven构建,如果没有maven,需要手动下载以下依赖包:

commons-pool-1.5.1.jar

flying-saucer-core-9.0.3.jar           --需要替换 doc-render/lib/flying-saucer-core-9.0.3-RC1.jar

flying-saucer-pdf-itext5-9.0.3.jar     --需要替换  doc-render/lib/flying-saucer-pdf-itext5-9.0.3-RC1.jar

freemarker-2.3.20.jar

hamcrest-core-1.3.jar

itextpdf-5.3.0.jar

jackson-core-asl-1.9.2.jar

jackson-mapper-asl-1.9.2.jar

junit-4.11.jar

log4j-1.2.17.jar

slf4j-api-1.7.5.jar


项目主页:http://git.oschina.net/lemonzone2010/doc-render

 

作者:lemonzone2010 发表于2013-11-26 16:38:35 原文链接
阅读:0 评论:0 查看评论

相关 [itext flying saucer] 推荐:

基于iText和flying saucer结合freemark生成pdf 范例

- - CSDN博客推荐文章
项目主页:http://git.oschina.net/lemonzone2010/doc-render. 最近公司需要生成PDF,基于这个需求简单学习了下IText 和 flying saucer,对于这两个技术.我先简单介绍下:. Flying Saucer和iText介绍:.     A.  iText是一个生成PDF文档的开源java库,能够动态从XML或者数据库生成PDF,同时它具备PDF文档的绝大多数属性(比如加密……),支持java,C#等.

飞猪存钱罐:Flying Piggy Bank

- 吞佛 - 爱…稀奇~{新鲜:科技:创意:有趣}
吃饱睡睡饱吃的猪最终逃不过杀戮的结局,在设计师眼里,一只有理想的猪会想要飞上蓝天,于是便有了这个飞猪存钱罐(Flying Piggy Bank). ——不过话说回来,猪算是存钱罐最经典的造型了,因为它硕大的肚子可以满足人们财源滚滚的梦想,但是,对于真正有理想的人来说,金钱不是梦想,但它却是实现梦想不可或缺的翅膀,这也是小猪身上那对翅膀的真正含义.

iText 5.2.0 发布,PDF 开发包

- - 脚本爱好者
iText 5.2.0 发布了,该版本大部分的改进都集中在 PDF 解析上,支持特殊的编码和多种国外语言,修复了解析错误以及对一些错误的 PDF 语法更加适应,此外 iText 现在可支持生成超过 2G 的文件,减少对 java.awt 包的依赖,可更方便在 Android 平台和 GAE 中使用.

iText 5.4.0 发布,Java 的 PDF 开发包

- - 开源中国社区最新新闻
iText 5.4.0 除了修复很多 bug 之外,主要是侧重于创建结构化的 PDF 文档,当使用 Document, Paragraph, PdfPTable 创建 PDF 时可自动进行标识,标识的 PDF 是更好支持 PDF/UA 和 PDF/A 兼容性的第一步. iText是一个非常著名的能够快速产生PDF文件的Java类库.

Flying Connected:针对旅行者的 iPad 出租服务

- 董玉伟 - 36氪
Flying Connected 是一家上个月在纽约启动的创业公司,目的是让旅行者在旅途过程中租用电子设备更容易. 根据租户对保险、配件以及预装多媒体内容的选择不同,他们的价格也不同. 目前公司最受欢迎的设备是 iPad 2,价格在 18 到 28 美元一天,可以为租户邮寄到纽约的机场或宾馆. 创始人 Zalmy Rakin 表示他把用户定位在旅行者有几个原因,首先,带着电子设备旅游的用户数据漫游费是一个问题,用户拿着 iPad 不能上网可能它就是个废材.

Itext PDF生成 加水印图片文字

- - CSDN博客研发管理推荐文章
由于项目中用到,所以网上找了很多,但或多或少有些问题,我整理更新了一下. import java.io.*; import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; /** * PDF生成 */ public class PDFBuild {.

Java iText使用PDF模板生成PDF文档

- - CSDN博客综合推荐文章
我们系统需要生成一个可以打印的PDF文档,老板给了我一个Word文档,按照这个Word文档的格式生成PDF文档. 第一步:下载AdobeAcrobat DC,必须使用这个来制作from域. 第二步:使用AdobeAcrobat DC将Word导成PDF文档. 第三步:由于还要加水印的效果,所以还是使用AdobeAcrobat DC来添加水印,非常方便;.

itext对水印图片的旋转、放大、缩小等操作的示例

- - 行业应用 - ITeye博客
// txt原始文件的路径. // 创建pdf文件到临时文件. HeaderFooter footer = new HeaderFooter(new Phrase("页码:", PdfConvertor. // 设置pdf文件生成路径 step2. // 打开pdf文件 step3. // 实例化Paragraph 获取写入pdf文件的内容,调用支持中文的方法.