场景

iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

官网:

The Leading PDF Library for Developers | iText

Itext实现导出PDF常用方法说明

Itext实现导出PDF常用方法说明_BADAO_LIUMANG_QIZHI的博客-CSDN博客

实现

打开pom.xml导入项目依赖

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.2.0</version>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>

前端实现

打印按钮

<button id="printPdfBtn" class="btn btn-info " type="button"><i class="fa fa-trash-o"></i> pdf打印</button>

js中按钮的点击事件

 $("#printPdfBtn").click(function () {var data = t.rows(['.selected']).data()[0];if(undefined===data){swal({type: 'warning',title: '提示:',text: '请首先选择一行数据!',confirmButtonColor: "#1ab394",})}else{exportPdf(data.id);}});

其中 var data = t.rows(['.selected']).data()[0];
是dataTables中获取选中行的id属性。

exportPdf(data.id)负责执行具体的导出PDF请求

先判断能不能执行导出,如果能导出则跳转Url并将参数id传递。

function  exportPdf(id){$.post("/wmsInOrder/isExport.do",{id:id}).done(function (res) {if(res.status){if(res.data ==true){                  window.location.href="/wmsInOrder/exportPdf.html?orderId="+id;}else{Swal.fire('请选择已完成的单',res.data,'warning')}}else{Swal.fire('导出失败!',res.data,res.msg)}}).fail(function (err) {Swal.fire('异常提示','执行导出操作失败','error')});}

来到url="/wmsInOrder/exportPdf.html?orderId="+id所对应的后台。

 @Description("pdf导出")@RequestMapping(value = "/exportPdf.html")public void excelPdf(long orderId,HttpServletRequest request, HttpServletResponse response) throws Exception {this.inOrderService.exportPdf(orderId, request, response);}

来到service层

 void exportPdf(Long orderId, HttpServletRequest request, HttpServletResponse response) throws Exception ;

来到serviceImpl层

具体方法作用参照代码注解。

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();}

效果

点击按钮

打开PDF

SpringBoot加itext实现PDF导出相关推荐

  1. SpringBoot中用itext实现PDF导出时实现循环添加元素

    场景 SpringBoot加itext实现PDF导出下载 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89475877 Itex ...

  2. java springboot使用itext 为PDF添加文字水印并铺满屏

    java springboot使用itextpdf 为PDF添加文字水印并铺满屏 代码如下 如果对你有帮助希望你能点个赞 结尾 这是我第一次发博客,也是第一次使用itext添加水印.遇到一些大大小小的 ...

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

    场景 SpringBoot加itext实现PDF导出: SpringBoot加itext实现PDF导出_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面实现导出pdf的基础上,怎样结合 ...

  4. springboot集成PDF导出

    内容目录 知识准备 什么是itext itext的历史版本和License问题 标准的itextpdf导出的步骤 实现案例 Pom依赖 导出PDF 添加页眉页脚和水印 进一步理解 遇到license问 ...

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

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

  6. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

    pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...

  7. itex将html转成pdf加水印,itext操作PDF文件添加水印

    功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...

  8. 用Itext把数据导出到Pdf文档

    工夫不负有心人!先用POI实现了把数据导出为Excel,现在又实现了用Itext把数据导出为Pdf文档.因为这些技术是以前都没有接触的,而现在又都基本掌握了,所以心里略有一些成就感.现把完整程序代码列 ...

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

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

最新文章

  1. php文章列表样式,css列表样式有哪些?css设置列表样式的方法
  2. 妙味课堂——HTML+CSS(第一课)
  3. I2C原理及应用实例
  4. 八、探索性数据分析——数字化探索
  5. PHP 获取JSON json_decode返回NULL解决办法
  6. Android 四大组件之 Activity
  7. r语言descstats_一条命令轻松绘制CNS顶级配图-ggpubr
  8. 【elasticsearch系列】windows安装kibana
  9. 容器化时代到来!跳转机分配问题终于“有救”了
  10. python的exe缺少dll_python错误py2exe(缺少DLL)
  11. (23)VHDL实现乘法器
  12. 深入理解Unity刚体(Rigidbody)、碰撞器(Collider)、触发器(Trigger)
  13. 手机突然变卡,不得不重置
  14. java .jar下载_java jar包全集
  15. photoshop cs3 调色教程 让夏天成秋天
  16. 【AutoSec 汽车安全直播课】:整车网络安全威胁分析与风险评估(TARA)方法与实践
  17. SAP Scripting Tracker基本使用技巧
  18. java输出hello word,新手求教如何输出helloword
  19. 解决win10使用电池时自动调节亮度问题
  20. 全球与中国一次性三通旋塞阀市场前景方向预测与投资战略分析报告2022-2028年

热门文章

  1. centos php5.2安装教程,CentOS 5.2 x86 64(AMD)编译安装PHP小记
  2. python刷leetcode_零基础python刷leetcode -- 3. Longest Substring Without Repeating Characters
  3. activemq配置与启动
  4. Java获取近七天的数据条数,及页面实现折线图(附前后端代码)
  5. php 状态模式,PHP设计模式之状态模式
  6. 如何python安装hadoop_使用Python操作Hadoop,Python-MapReduce
  7. django设置mysql数据库连接_django如何设置连接mysql数据库
  8. spring el表达式 if else_vue指令集合:v-for,v-show,v-if等
  9. linux命令11,每日一个linux命令11-more
  10. 傅里叶变换的初级理解一