flyingsaucer转换多个html,使用flying-saucer 实现 html转pdf实现input框select,textarea
使用flying-saucer 实现 html转pdf实现input框select,textarea
使用flying-saucer 实现 html转pdf实现input框select,textarea checkbox等的显示
为什么80%的码农都做不了架构师?>>>
昨天研究html转pdf,使用itextpdf 5.5.9版本(上一篇博客:https://my.oschina.net/u/1778261/blog/809757)
com.itextpdf
itextpdf
${itextpdf.version}
com.itextpdf
itext-asian
${itext.asian.version}
中文显示问题解决了,当时碰到了打印表单中input框等不显示的问题。
今天换了个方案使用flying-saucer 实现html转pdf
org.xhtmlrenderer
flying-saucer-pdf-itext5
9.1.1
实现代码如下:
public void html2pdf(String html, File file, String fontDir) throws I18NIllegalArgumentException {
try (OutputStream os = new FileOutputStream(file); ){
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = (ITextFontResolver) renderer.getSharedContext().getFontResolver();
//添加字体库 begin
File f = new File(fontDir);
if (f.isDirectory()) {
File[] files = f.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
String lower = name.toLowerCase();
return lower.endsWith(".otf") || lower.endsWith(".ttf") || lower.endsWith(".ttc");
}
});
for (int i = 0; i < files.length; i++) {
fontResolver.addFont(files[i].getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}
}
//添加字体库end
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(os);
} catch (Exception e) {
throw new I18NIllegalArgumentException(e);
}
}
网上查的都是添加字体的方法都是这样实现的:
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont("C:/Windows/Fonts/simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fontResolver.addFont("C:/Windows/Fonts/simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
这样实现有个缺陷:字体的路径都是系统的目录,不同系统(windows,Linux)字体目录不同,对系统依赖太高。
为了解决这个问题:找到字体库文件,复制到项目的目录中,在代码中直接遍历这个目录,添加所有的字体。
注意:页面中字体不能使用中文,需要使用英文名称,而且是大小写敏感的!例如宋体的英文名称是 SimSun(注意不是simsun!,首字母都是大写的)
错误写法:font-family:'宋体' 或者 font-family:'simsun' 或者 font-family: '微软雅黑'
正确写法:font-family:'SimSun' 或者 font-family:'SimHei'或者 font-family: 'Microsoft YaHei'
另外: html的格式要求符合xml格式(即必须有结束标签)
测试:
测试用html代码:
我是标题
*{font-family: 'SimSun';}
我是内容
asdfsdf今晚打老虎
运动睡觉
html浏览器显示结果:
生成的pdf:
转载于:https://my.oschina.net/u/1778261/blog/810277
使用flying-saucer 实现 html转pdf实现input框select,textarea相关教程
flyingsaucer转换多个html,使用flying-saucer 实现 html转pdf实现input框select,textarea相关推荐
- flyingsaucer转换多个html,用 flying saucer 生成pdf文件 Css及html的问题
我用 flying saucer 生成PDF文件,因为要生成文章,而文章是由tinymce发布的.可能有些文章发布出去后格式有问题,比如说标签不规范,有的没有闭合. 这样 flying sauce ...
- itextpdf将带复选框的html_使用flying-saucer 实现 html转pdf实现input框select,textarea checkbox等的显示...
com.itextpdf itextpdf ${itextpdf.version} com.itextpdf itext-asian ${itext.asian.version} 中文显示问题解决了, ...
- php stream_select w3c,使用flying-saucer 实现 html转pdf实现input框select,textarea checkbox等的显示...
com.itextpdf itextpdf ${itextpdf.version} com.itextpdf itext-asian ${itext.asian.version} 中文显示问题解决了, ...
- flyingsaucer转换多个html,Flying Saucer实现html转pdf(一些有关问题,持续更新)
Flying Saucer实现html转pdf(一些问题,持续更新) Flying Saucer实现html转pdf(及一些问题,持续更新) 关于FlyingSaucer的使用官网上有详细的介绍. 官 ...
- Flying Saucer实现html转pdf(一些问题,持续更新)
Flying Saucer实现html转pdf(及一些问题,持续更新) 关于FlyingSaucer的使用官网上有详细的介绍. 官网地址: https://today.java.net/pub/a/t ...
- iText和flying saucer结合生成pdf的技术
原博文地址 http://blog.csdn.net/shanliangliuxing/article/details/6833471 下面是我自己利用flying saucer技术生成pdf文档的实 ...
- flying saucer做导PDF踩过的坑~
最近公司要求做一个导出PDF报表的功能.由于时间比较紧张,而且导出的内容暂时为一个报表而已,所以我采用了flying saucer+freemaker来做. flying sauce源码:https: ...
- Flying Saucer 不支持中文,换行,粗体,CheckBox多选框的解决方案
最近要生成打印版的保单信息,内容比较多,也比较复杂,iText直接生成的话,想必花很多时间,而且可能也很难维护,偶然看到了HTML 在 Fly Saucer的帮助下能转换成PDF,解析CSS还不错,顿 ...
- Flying Saucer生成pdf报表
使用Flying Saucer生成pdf报表: 1.首先看一下Flying Saucer的官方介绍: https://github.com/flyingsaucerproject/flyingsauc ...
最新文章
- .ajax get获取案例,$.ajax GET请求案例
- web 点击劫持 X-Frame-Options
- socket接收的消息怎么更新到页面_spring boot 集成 websocket 实现消息主动
- pyDash : Linux 性能监测工具
- 颠沛流离的Arcsight,辉煌不再
- Java 调用树莓派硬件资源
- 注册刷短信验证码的问题
- spring核心功能包中已经包含了cglib功能
- ActionContextCleanUp作用
- Direct2D 如何关闭抗锯齿
- C++ string字符串的增删改查
- IDEA的创建javaWeb工程以及修改默认的class文件输出
- 修改表名的sql语句_SQL第一关——入门
- java ajax 进度条_java使用ajax实现进度条
- PHP代码审计工具RIPS
- 企业实现均衡生产,车间管理系统来支持
- CentOS7.6 部署 Snipe-it 资产管理系统
- 一个P9告诉你为什么某电商怕了拼多多
- 在linux文件下执行.kjb文件和trans文件
- css控制文本超出省略(单行、两行、多行)