Java实现Html转PDF 和 Java工具类之Apache的Commons Lang和BeanUtils



项目上的客户提出一个需求,把政务流程中的表单数据导出成pdf或者图片格式,用来作电子档案材料。表单基于公司的电子政务构建平台实现,在数据库 保存的都是html格式,因此打算直接把表单html转成pdf或者图片。由于表单是已经写好了html页面,那我要做的就是能完美解析html+css 的pdf生成工具。在百度上搜索html转pdf的结果,大部分都是用itext,itext的确是java开源组件的第一选择。不过itext也有局 限,就是要自己写模版,系统中的表单数量有好几百个,为每个表单做一个导出模版不现实。 

最后,wkhtmltopdf进入了我的选择范围。wkhtmltopdf是一个使用webkit网页渲染引擎开发的用来将 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档。

官网地址 http://wkhtmltopdf.org/

github地址 https://github.com/wkhtmltopdf/wkhtmltopdf

wkhtmltopdf把html转成pdf很简单,只要在windows命令行中输入

c:\wkhtmltopdf.exe http://www.csdn.net c:\csdn.pdf

就可以把csdn网页转成pdf,并保存到C盘根目录。

在java中调用wkhtmltopdf的命令Runtime.getRuntime().exec("c:\wkhtmltopdf.exe http://www.csdn.net c:\csdn.pdf")就可以实现转换。

=========================================================

1、字符串的空判断

//isEmpty
System.out.println(StringUtils.isEmpty(null));      // true
System.out.println(StringUtils.isEmpty(""));        // true
System.out.println(StringUtils.isEmpty(" "));       // false
System.out.println(StringUtils.isEmpty("bob"));     // false
System.out.println(StringUtils.isEmpty("  bob  ")); // false

//isBlank
System.out.println(StringUtils.isBlank(null));      // true
System.out.println(StringUtils.isBlank(""));        // true
System.out.println(StringUtils.isBlank(" "));       // true
System.out.println(StringUtils.isBlank("bob"));     // false
System.out.println(StringUtils.isBlank("  bob  ")); // false

3、字符串的分割

//去除空字符串
String str3 = "aaa,,bbb";
String[] dim3 = StringUtils.split(str3, ","); // => ["aaa", "bbb"]

4、字符串的连接

//数组元素拼接
String[] array = {"aaa", "bbb", "ccc"};
String result1 = StringUtils.join(array, ","); 

System.out.println(result1);//"aaa,bbb,ccc"

//集合元素拼接
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
String result2 = StringUtils.join(list, ",");

System.out.println(result2);//"aaa,bbb,ccc"

6、随机数

// 10位英字
System.out.println(RandomStringUtils.randomAlphabetic(10));

// 10位英数
System.out.println(RandomStringUtils.randomAlphanumeric(10));

// 10位ASCII码
System.out.println(RandomStringUtils.randomAscii(10));

// 指定文字10位
System.out.println(RandomStringUtils.random(10, "abcde"));

8、日期

// 生成Date对象
Date date = DateUtils.parseDate("2010/01/01 11:22:33", new String[]{"yyyy/MM/dd HH:mm:ss"});

// 10天后
Date tenDaysAfter = DateUtils.addDays(date, 10); // => 2010/01/11 11:22:33
System.out.println(DateFormatUtils.format(tenDaysAfter, "yyyy/MM/dd HH:mm:ss"));

// 前一个月
Date prevMonth = DateUtils.addMonths(date, -1); // => 2009/12/01 11:22:33
System.out.println(DateFormatUtils.format(prevMonth, "yyyy/MM/dd HH:mm:ss"));

// 判断是否是同一天
Date date1 = DateUtils.parseDate("2010/01/01 11:22:33", new String[]{"yyyy/MM/dd HH:mm:ss"});
Date date2 = DateUtils.parseDate("2010/01/01 22:33:44", new String[]{"yyyy/MM/dd HH:mm:ss"});
System.out.println(DateUtils.isSameDay(date1, date2));// true

// 日期格式化
System.out.println(DateFormatUtils.format(new Date(), "yyyy/MM/dd HH:mm:ss"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值