场景

SpringBoot加itext实现PDF导出下载

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89475877

实现

1.设置响应格式

 response.setContentType("application/pdf");response.setHeader("Expires", "0");response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");response.setHeader("Pragma", "public");

2.设置纸张规格并创建文档实例

//设置纸张规格为A4纸
Rectangle rect = new Rectangle(PageSize.A4);
//创建文档实例
Document doc=new Document(rect);

3.添加中文字体

BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

4.设置字体样式

Font textFont = new Font(bfChinese,11, Font.NORMAL); //正常
//Font redTextFont = new Font(bfChinese,11,Font.NORMAL,Color.RED); //正常,红色
Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗
//Font redBoldFont = new Font(bfChinese,11,Font.BOLD,Color.RED); //加粗,红色
Font firsetTitleFont = new Font(bfChinese,22,Font.BOLD); //一级标题
Font secondTitleFont = new Font(bfChinese,15,Font.BOLD, CMYKColor.BLUE); //二级标题
Font underlineFont = new Font(bfChinese,11,Font.UNDERLINE); //下划线斜体

5.设置字体

com.itextpdf.text.Font FontChinese24 = new com.itextpdf.text.Font(bfChinese, 24, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese18 = new com.itextpdf.text.Font(bfChinese, 18, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese16 = new com.itextpdf.text.Font(bfChinese, 16, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese12 = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);com.itextpdf.text.Font FontChinese11Bold = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese11 = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.ITALIC);com.itextpdf.text.Font FontChinese11Normal = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.NORMAL);

6.设置要到处PDF响应并设置导出PDF标题

String title = "霸道流氓气质";response.setHeader("Content-disposition","attachment; filename=".concat(String.valueOf(URLEncoder.encode(title + ".pdf", "UTF-8"))));

7.输出流转换

OutputStream out = response.getOutputStream();
PdfWriter.getInstance(doc,out);
doc.open();
doc.newPage();

8.新建段落

Paragraph   p1 = new Paragraph("二级标题", secondTitleFont);

9.设置段落行高

 p1.setLeading(0);

10.设置段落文本居中

 p1.setAlignment(Element.ALIGN_CENTER);

11.将段落添加到文档上

 doc.add(p1);

12.设置空行

Paragraph blankRow1 = new Paragraph(18f, " ", FontChinese11);
doc.add(blankRow1);

13.新建表格列数为2

 PdfPTable table1 = new PdfPTable(2);

14.给表格设置宽度

int width1[] = {80,60};
table1.setWidths(width1);

15.新建单元格并赋值加设置字体

PdfPCell cell11 = new PdfPCell(new Paragraph("姓名:  "+name,boldFont));

16.设置单元格边框

cell11.setBorder(0);

17.表格中添加单元格

table1.addCell(cell11);

18.关闭文档

doc.close();

完整示例代码

public void exportPdf(Long orderId, HttpServletRequest request, HttpServletResponse response) throws Exception {//设置响应格式等response.setContentType("application/pdf");response.setHeader("Expires", "0");response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");response.setHeader("Pragma", "public");Map<String,Object> map = new HashMap<>();//设置纸张规格为A4纸Rectangle rect = new Rectangle(PageSize.A4);//创建文档实例Document doc=new Document(rect);//添加中文字体BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//设置字体样式Font textFont = new Font(bfChinese,11, Font.NORMAL); //正常//Font redTextFont = new Font(bfChinese,11,Font.NORMAL,Color.RED); //正常,红色Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗//Font redBoldFont = new Font(bfChinese,11,Font.BOLD,Color.RED); //加粗,红色Font firsetTitleFont = new Font(bfChinese,22,Font.BOLD); //一级标题Font secondTitleFont = new Font(bfChinese,15,Font.BOLD, CMYKColor.BLUE); //二级标题Font underlineFont = new Font(bfChinese,11,Font.UNDERLINE); //下划线斜体//设置字体com.itextpdf.text.Font FontChinese24 = new com.itextpdf.text.Font(bfChinese, 24, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese18 = new com.itextpdf.text.Font(bfChinese, 18, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese16 = new com.itextpdf.text.Font(bfChinese, 16, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese12 = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);com.itextpdf.text.Font FontChinese11Bold = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font FontChinese11 = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.ITALIC);com.itextpdf.text.Font FontChinese11Normal = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.NORMAL);//设置要导出的pdf的标题String title = "霸道流氓气质";response.setHeader("Content-disposition","attachment; filename=".concat(String.valueOf(URLEncoder.encode(title + ".pdf", "UTF-8"))));OutputStream out = response.getOutputStream();PdfWriter.getInstance(doc,out);doc.open();doc.newPage();//新建段落//使用二级标题 颜色为蓝色Paragraph   p1 = new Paragraph("二级标题", secondTitleFont);//设置行高p1.setLeading(0);//设置标题居中p1.setAlignment(Element.ALIGN_CENTER);//将段落添加到文档上doc.add(p1);//设置一个空的段落,行高为18  什么内容都不显示Paragraph blankRow1 = new Paragraph(18f, " ", FontChinese11);doc.add(blankRow1);//新建表格 列数为2PdfPTable table1 = new PdfPTable(2);//给表格设置宽度int width1[] = {80,60};table1.setWidths(width1);//新建单元格String name="霸道";String gender="男";//给单元格赋值 每个单元格为一个段落,每个段落的字体为加粗PdfPCell cell11 = new PdfPCell(new Paragraph("姓名:  "+name,boldFont));PdfPCell cell12 = new PdfPCell(new Paragraph("性别:  "+gender,boldFont));//设置单元格边框为0cell11.setBorder(0);cell12.setBorder(0);table1.addCell(cell11);table1.addCell(cell12);doc.add(table1);PdfPTable table3 = new PdfPTable(2);table3.setWidths(width1);PdfPCell cell15 = new PdfPCell(new Paragraph("博客主页: https://me.csdn.net/BADAO_LIUMANG_QIZHI  ",boldFont));PdfPCell cell16 = new PdfPCell(new Paragraph("当前时间:  "+DateConvert.formatDateToString(new Date(),DateStyle.YYYY_MM_DD),boldFont));cell15.setBorder(0);cell16.setBorder(0);table3.addCell(cell15);table3.addCell(cell16);doc.add(table3);doc.close();}

效果

Itext实现导出PDF常用方法说明相关推荐

  1. Spring Boot 之 itext导出pdf下载

    Java操作pdf框架详解 itext是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有 ...

  2. Java 根据模板导出PDF

    文章目录 前言 思路一:直接导出pdf 使用itext模板导出pdf 思路二:先导出word再转成pdf 1)导出word 2)word转pdf 最终方案 ~~docx4j~~ spire.doc.f ...

  3. Itext导出pdf文件

    使用iText生成pdf文件并导出 前言: 项目中需要给用户提供一个可以导出pdf文件的功能,用来展示本月的数据.像excel.word这种直接就可以使用POI进行导出了,但是导出pdf格式的文件 我 ...

  4. SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片

    场景 SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF: SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF_BADAO_LIUMANG_QIZHI的 ...

  5. java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成

    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 前言 有时候,业务系统要求提供一个PDF文件导出的功能,这时候我们就需要将数据库的对应数据查询出来,然后生成 ...

  6. Java和iText导出pdf文档

    一:工程截图: 二:项目运行截图: 三:源代码: Book.java package com.iText.bean;public class Book {private int bookId;// 图 ...

  7. iText导出pdf,poi导出excel并下载到客户端

    项目中需要做导出功能,要支持excel,pdf导出. excel导出我选择使用poi:pdf导出我选择使用iText,在此单独做记录. 先说说在设计与开发中的问题,从整体上把握设计思路. 思路(一) ...

  8. iText导出pdf、word、图片

    一.前言  在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示 ...

  9. Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印

    前段时间,为了解析PDF,花了不少时间去学习PDFbox和itext,这两个都是处理PDF的开源库,有java和C#的.作为一个刚开始学习这两个开源库的,感觉百度上的资源还是太少了.我做的是一个关于P ...

最新文章

  1. 在ChemDraw中如何使用ChemACX
  2. distribution counting—a sorting method from aocp
  3. 供应链金融3.0化解新车流通金融难题
  4. python 读行为数组_python将多列文件读入数组
  5. __thread 和 __typeof__关键字
  6. 字符ascii码值转换_没想到 Unicode 字符还能这样玩?
  7. Java 遍历指定目录下的所有目录
  8. 什么是openstack_谁是OpenStack大使?
  9. OCR电子发票批量自动合成软件
  10. 杰理AC692X系列---关于692x及693x的打开在线调EQ功能(4)
  11. 使用google图片搜索寻找高质量的图片
  12. oeasy教您玩转vim - 60- # vim选项
  13. 报错Found existing installation: tensorflow 1.2.1
  14. 数据库表插入中文数据时报错Incorrect string value: ‘\xE4\xBB\x8E\xE5\x85\xA5...‘ for column ‘name‘ at r
  15. 简述python语言的主要功能和特点_python语言的特点有哪些
  16. qq飞车手游忘记哪个区了服务器也没显示,qq飞车手游大区查询方法,轻松几步让你知道你是哪个区...
  17. Lerna管理npm包
  18. 戴仁光:神奇的推广力量——软文
  19. vue在移动端实现电子签名手写板
  20. FastDFS-6.06安装(Centos 7)

热门文章

  1. CentOS7安装笔记:minio分布式集群搭建
  2. 每天学一点儿shell:Shell的常用语法规则
  3. 数组模拟队列(代码实现)
  4. java io删除文件_java IO 文件操作方法总结
  5. python构建区块链_用python构建区块链(1)---基本结构
  6. mysql 触发器_进阶msql触发器-指南
  7. 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案
  8. laravel修改storage目录和bootstrap目录
  9. 启动mysql会遇到的问题_MySQL学习(一)——启动和登录MySql遇到的问题及解决
  10. mysql 员工工资上涨5%_工资从1万到3万,你还差mysql数据库优化之系列五