在网上找过各种转pdf的方式、插件使用对比觉得itext是相对比较好的一种。查询过很多资料转PDF一般有两种,一个是html转PDF,另一个是自己拼出要的内容然后转成PDF。先说第一种用的是这三个jar包。我遇到的html转PDF,是标签直接存到数据库里面,当要查看的时候会有模板调用数据库,这个时候出现的第一个问题就是数据库中的都是宋体(汉字的形式)转换出来的这部分就是空或者格式不正确,于是用sql语句都换成了SimSun,这样才能正常显示。其次是转html的代码
1 OutputStream os = new FileOutputStream(outputFile); 2 ITextRenderer renderer = new ITextRenderer(); 3 ITextFontResolver fontResolver = renderer.getFontResolver(); 4 String pathttc = ProjectPathUtils.getClassesPath().replace("%20", " ")+ "config/";//这里是字体所在的地址,根据自己所在的位置更改 6 // fontResolver.addFont("/"+pathttc + "font/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 7 fontResolver.addFont("/"+pathttc + "font/simsun.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);// 8 renderer.setDocumentFromString(html); 9 renderer.layout(); 10 renderer.createPDF(os);
至于生成时候遇到的表格,图片问题,因为我在实际中没有用到所以也没有继续研究。itext转PDF的时候对html标签格式要求很严格,还有一个遇到的问题是html中是单标签在转换的时候会报错,类似这种
ERROR: '元素类型 "link" 必须由匹配的结束标记 "</link>" 终止。