pdf预览、导出、文字、图片水印(表格样式)
<!-- pdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
</dependency>
<!-- pdf 转 图片 -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
</dependency>
<!-- 字体 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
</dependency>
PDFUtils.java :主要操作页面转换为pdf
FileUtils.java : 导出、预览pdf使用
config.properties :pdf中使用的字体的位置(部分字体无法显示中文,建议华文系列)
工具类地址 密码:eqqu
config.properties中配置文件内容
@RequestMapping("exprotPDF")
public @ResponseBody void exprotPDF(Integer mode, HttpServletResponse response) throws Exception {
// 从数据库查询出需要转换的内容
PageInfo<Funds> page = fundsService.queryByPage(null, 1, 100);
// 创建一个文档对象
Document document = new Document();
// 生成pdf文件名称
String pdf = UUID.randomUUID().toString() + ".pdf";
// 建立一个pdf的书写器,跟上面文档建立关系 可以将文档写入磁盘
PdfWriter writer = PDFUtils.createDoc(document, "d:/mypdf/" + pdf);
// 文档中要添加的内容 标题 等等
ArrayList<String> list = new ArrayList<>();
list.add("基金列表");
// 通过工具类给文档对象添加并规定字体大小
PDFUtils.addContent(document,list,20);
// 给文档对象添加表格,标明表头,实体类中名称,数据来源,页面从左向右偏移量,从下向上偏移量
PDFUtils.addTable(writer,new String[] {"基金编号","基金名称","基金价格"},new String[]{"id","name","price"},page.getList(),40,600);
// 一定要先关闭 在添加水印
document.close();
writer.close();
// 添加水印 参数:要作为水印的图片位置,文件输入流(未加水印的位置),文件输出流(添加完水印的pdf要输出位置),文字水印
PDFUtils.markImage("G:\\img\\323743.jpg",new FileInputStream("d:/mypdf/"+ pdf),new FileOutputStream("d:/mypdf1/"+pdf),"版权所有");
// 下载文件 响应对象,加完水印之后的位置,要生成的文件名,状态(0:导出,1:预览)
FileUtils.download(response,"d:/mypdf1/"+pdf,"基金列表.pdf",mode);
}