`
mazhiyuan
  • 浏览: 62704 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Freemarker+iText生成PDF文件

阅读更多

项目里需要实现客户下载pdf文件的一个需求,在经过比较之后决定使用Freemarker+iText解决这个问题。在整个实现过程中遇到不少问题,总结一下贴出来吧,也许今后用得上。

 

使用的jar:iText2.0.8、core-renderer、iTextAsian

问题1:iText的版本问题

           最初使用的是iText 2.1.7版本,但是发现这句话总是会报错,具体报错就不贴了,记得是无法找到一个方法

          

ITextRenderer renderer = new ITextRenderer();

          后来换了2.0.8以后这个问题不在出现,也许是和其他jar有冲突吧。

          iTextAsian是解决中文和日文输出的问题。

 

问题2:字体样式

      看到网上有不少讨论这个问题的帖子,使用这两个技术时,感觉蛮简单

 

      在后台:

ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont(fontDir1, BaseFont.IDENTITY_H,
		    BaseFont.NOT_EMBEDDED);
fontResolver.addFont(fontDir2, BaseFont.IDENTITY_H,
		    BaseFont.NOT_EMBEDDED);

     另外在freemarker中,使用css加上字体即可:

 

body {
    font-family: SimSun;      
    font-size:14px;     
    font-style:italic; 
    font-weight:500;
}

.heiti
{
   font-family: simsun-bold;   
}

 

 

问题3:图片问题

     之前生成的pdf总是无法显示图片,无论把图片放在ftl文件的什么位置,在ftl中写什么样子的路径都不好使,后来参考了downpour大大的帖子http://downpour.iteye.com/blog/509417?page=4 

才解决了这个问题:

renderer.setDocumentFromString(str);
			
// 解决图片的相对路径问题   
renderer.getSharedContext().setBaseURL("file:/D:/images/"); 
  
renderer.layout();
renderer.createPDF(os);
os.close();

   当然这里的路径最好设置为资源文件中的值,这样在上线后即便修改也无需重新部署。

 

 

问题4:关于pdf中文换行以及分页的问题

    这2个问题我在项目中没有发现,似乎使用Freemarker会使得自动完成这2个任务吧。

 

 现就这么多,以后还会有关于Freemarker和iText的东西发上来,不得不赞下这2个项目啊,真是好用,呵呵

 另外感谢pourdown大大,大家还可以参考这个文章,不过是e文的:

 http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html

分享到:
评论

相关推荐

    freemarker+itext生成PDF

    NULL 博文链接:https://yizhaorong.iteye.com/blog/2157848

    java html模板 itext 生成pdf 页眉页脚 合并pdf列子

    搜索了好多篇例子,算是强拼硬凑成现在的...此包中包含可测试成功代码,关联模板、字体文件、jar等 希望能帮助到大家。 这篇文章的作者蛮厉害,有不少借鉴。 http://blog.csdn.net/layman1024/article/details/74628658

    java根据动态模板生成pdf(包含柱状图)所需jar包

    java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker...

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    对于没有使用宏、函数等word、excel,需要按模板动态生成word、excel、html,只需要一个freemarker,先将word、excel、html等另存为**xml**,即可使用模板动态生成文件,目前xlsx是不支持的 4. PdfTemplate 对于不会...

    Java+电子签名,生成PDF格式的合同

    通过freemarker进行渲染,由html生成合同pdf。 查找指定电子签名的位置,然后再在指定位置插入签名图片,生成最终pdf。

    导出word和pdf模板示例文件

    freemarker+itext5实现用模板方式,导出word和pdf 的模板示例文件,使用已经简单编写的word,生成的xml文件和html.

    java生成pdf(利用dom4j、freemarker生成固定模板格式的pdf文件)

    iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件; Apache PDFBox,生成、合并PDF文档; docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。 比较: iText开源协议为AGPL,而其他两个框架协议均为...

    Java实现HTML页面转PDF解决方案

    而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的。而如果,大家像我这样已经有前人写好了HTML...

    freemarker生成html导出word

    使用Itextpdf组件通过freemarker模板技术生成好html内容并导出word文件,提供下载。

    pdf-kit-master.zip|pdf-kit-master.zip

    java根据模板动态生成PDF文件 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker能配置动态的...

    java根据模板导出PDF详细教程(包含统计图)

    根据业务需要,需要在服务器端生成可动态配置的PDF文档,方便数据可视化查看。此文的测试是在客户端通过java程序的测试,直接运行java类获得成功!

    java后台实现pdf下载导出

    java后台实现pdf下载,利用模板进行数据页面布局的设计,利用freemarkerm模板引擎可以方便快捷进行数据的绑定,还可以根据相关标签进行页面的优化,嵌入。

    java根据模板导出PDF详细教程(包含统计图).rar

    根据业务需要,需要在服务器端生成可动态配置的PDF文档,方便数据可视化查看。此文的测试是在客户端通过java程序的测试,直接运行java类获得成功!

    web开发常用jar

    通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试...

    flyingsaucer-R8.zip

    一个很好用的工具,可以将HTML直接转成PDF文件,包括PDF的字体、PDF的格式、Image如何处理等等,结合freemarker模板可以很好的做到PDF文件的导出。

    java开发常用jar包

    通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics