使用Flying Saucer生成pdf

实现思路:
利用FreeMarker编写HTML模板,通过Flying Saucer生成pdf。

一、maven添加依赖

本项目使用maven构建,基于spring架构

在pom.xml中添加

<dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-saucer-pdf</artifactId><version>9.0.9</version>
</dependency>

它的依赖关系图为

二、用FreeMarker编写模板

  1. 在webroot目录下新建一个pdfTemplate的文件夹

在里面新建一个freemarker的模板文件,命名为: template.ftl
其中头部代码要使用标准的html文档声明,否则iText会解析失败。

<!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>
<title>${title}</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"></meta>
<style type="text/css"> body {font-family: SimSun;}
</style>
</head>
<body></body>
</html>

需要注意的几点:

  1. HTML页面必须是标准的XHTML页面
  2. 所有的html标签必须使用小写字母,同时也要使用闭合写法,因为Flying Saucer按xml语法解析
  3. 需统一文件编码,避免乱码的出现
  4. 中文乱码的问题和css样式文件引入还有图片资源引入的问题,这个下面单独讲
  5. 页面里的js代码都将不起作用
  6. 表格不支持thead标签

三、

<servlet>
<servlet-name>exportPDF</servlet-name>
<servlet-class>com.tg.servlet.ExportPDFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>exportPDF</servlet-name>
<url-pattern>/exportPDF/*</url-pattern>
</servlet-mapping>

#

#

#

- 语法严格

2.要用到图片的地方写相对路径的形式,比如:

<img src="a.jpg" alt="323" width="252" height="80" />

  而它的图片位置则必须在Java代码中指定。

  renderer.getSharedContext().setBaseURL(“file:/D:/”);

  也有另一种方法就是直接在标签中写绝对路径。

宋体。也可以添加其他字体。

使用Flying Saucer生成pdf相关推荐

  1. Flying Saucer生成pdf报表

    使用Flying Saucer生成pdf报表: 1.首先看一下Flying Saucer的官方介绍: https://github.com/flyingsaucerproject/flyingsauc ...

  2. flyingsaucer转换多个html,用 flying saucer 生成pdf文件 Css及html的问题

    我用  flying saucer  生成PDF文件,因为要生成文章,而文章是由tinymce发布的.可能有些文章发布出去后格式有问题,比如说标签不规范,有的没有闭合. 这样 flying sauce ...

  3. freemark与flying saucer生成PDF

    freemark与flying saucer生成PDF 1.导入flying saucer与freemark的包. 2.利用freemark生成html文件. 3.利用flying saucer进行p ...

  4. itext文本域自动换行_iText+Flying Saucer生成pdf文档,中文不显示和不自动换行问题...

    一.重写Breaker,添加中文识别 // Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov. // Jad home page: ...

  5. itext文本域自动换行_iText+Flying Saucer生成pdf文档,重写Breaker中文可以换行,但是英文单词会截断问题

    网上有好多重新的Breaker的案例或者代码,但是如果其中涉及到英文,那么单词也会直接被拦腰截断,这不是我们想要的结果,我有重写了一下Breaker,完美解决这个问题,废话不多说,代码如下: pack ...

  6. 使用flying saucer将html文件转成PDF

    使用flying saucer生成PDF文件之前,先要使用freemarker生成html文件,然后将html文件转成pdf.生成html文件的东东网上一搜一大堆,大家找找就成. 当然"使用 ...

  7. Flying Saucer一些问题

    使用Flying Saucer生成PDF的一些问题 1.有xercesimpl.jar的时候,如果<img>标签中有id属性时,将会报错误,这个时候要么去掉xercesimpl.jar要么 ...

  8. iText和flying saucer结合生成pdf的技术

    原博文地址 http://blog.csdn.net/shanliangliuxing/article/details/6833471 下面是我自己利用flying saucer技术生成pdf文档的实 ...

  9. itext转html为pdf 锚点,flying saucer html转pdf经验分享

    对比了很多生成pdf的方案,最终还是决定使用flying saucer,网上能搜出N多相关文章,但是照着做了会出现各种问题,还是得自己一点点摸索,前后花了两天时间才达到自己的目标,下面把过程中的经验总 ...

最新文章

  1. 使用自定义材质球,实现NGUI屏幕溶解和灰显
  2. CentOS 6.8 安装 RabbitMQ
  3. 10 个常见的 Linux 终端仿真器
  4. TC字符界面-菜单程序【原创】
  5. 垃圾分类智能化-垃圾分类机器人
  6. 异步udpserver接收rtp转html5(一)
  7. 高效的java异常处理
  8. 部署ganglia3.7
  9. mysql学习之mysql集群
  10. 3.Python标准库—math库的使用
  11. PMP专题练习-整合管理
  12. Matlab线性拟合和非线性拟合
  13. BLC 以及 线性化
  14. ubuntu16.04安装翻译软件stardict
  15. c++ 栈 stack 用法
  16. 杯具的无线鼠标安装记
  17. 苹果授权登录Sign In With Apple亲测通过版[100%成功]
  18. 电子计算机技发展趋势,现代电子信息技的现况及发展趋势.ppt
  19. camera sensor crosstalk 详细介绍
  20. 基于JSP的婚恋交友网

热门文章

  1. 将文件夹的分组方式应用到电脑的所有文件夹
  2. 怎么制作鸿蒙系统启动盘,开物成务,鸿蒙操作系统全景解构
  3. jdk9 jdk10 jdk11启动rocketMQ的问题
  4. 万豪国际集团贵州首家万枫酒店在贵阳会展中心开业
  5. IPv6地址自动配置
  6. 卢克的HTML与CSS基础
  7. 移动开发大作业————随手记(主界面和编辑界面)
  8. github windows系统监控_谷歌发布Flutter Alpha:支持Windows
  9. 贸易融资实务:出口押汇与进口押汇
  10. 软件设计模式—命令模式