SpringBoot+Layui 打印PDF

bigsimpleton

于 2020-04-03 19:28:10 发布

2233
 收藏 8
文章标签: spring boot
版权
1、下载C_Lodop打印插件
下载插件官网:http://www.lodop.net/

2、pom.xml添加依赖

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

3、controller层
该代码是生成了一个表格,把页面传过去的参数通过findByForeach()方法找出来,用for循环叠加表格的行数。

@RequestMapping("/scorePDF")public Object scorePDF (@RequestParam("nums") Object nums, HttpServletResponse response) throws Exception {String datas = nums.toString();String[] str = datas.split(",");List<String> data = new ArrayList<String>();for (int i = 0; i < str.length; i++) {data.add(str[i]);}//用于存储listScore的每个for循环的值List list = new ArrayList<>();//查找选中的成绩信息List<StuExt> listScore = stuService.findByForeach(data);for (StuExt ext : listScore) {String[] arr = {ext.getStuno(),ext.getName(),ext.getCoursename(),String.valueOf(ext.getScore()),ext.getType()};list.add(arr);}try {Document document = new Document(PageSize.A4.rotate());File f = File.createTempFile("我的成绩单", ".pdf");PdfWriter.getInstance(document, new FileOutputStream(f));// 设置字体BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);com.itextpdf.text.Font thFont =new com.itextpdf.text.Font(bfChinese, 22, com.itextpdf.text.Font.BOLD);com.itextpdf.text.Font nomalFont = new com.itextpdf.text.Font(bfChinese, 20,com.itextpdf.text.Font.NORMAL);document.open();// table1PdfPTable table1 = new PdfPTable(5);String[] ths = {"学号", "姓名", "课程", "成绩", "类型"};for (int i = 0; i < ths.length; i++) {Paragraph para = new Paragraph(ths[i], thFont);para.setAlignment(Element.ALIGN_CENTER);PdfPCell cell = new PdfPCell(para);cell.setVerticalAlignment(Element.ALIGN_BOTTOM);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table1.addCell(cell);}document.add(table1);// table2for (int i = 0; i < list.size(); i++) {PdfPTable table2 = new PdfPTable(5);String[] arr = (String[]) list.get(i);for (int j = 0; j < arr.length; j++) {Paragraph para = new Paragraph(arr[j], nomalFont);para.setAlignment(Element.ALIGN_CENTER);PdfPCell cell = new PdfPCell(para);cell.setVerticalAlignment(Element.ALIGN_BOTTOM);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table2.addCell(cell);}document.add(table2);}document.close();PdfReader reader = new PdfReader(f.getAbsolutePath());StringBuffer script = new StringBuffer();script.append("this.print({bUI: false,bSilent: true,bShrinkToFit: false});").append("\r\nthis.closeDoc();");ByteArrayOutputStream bos = new ByteArrayOutputStream();try {PdfStamper stamp = new PdfStamper(reader, bos);stamp.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar| PdfWriter.HideWindowUI);stamp.addJavaScript(script.toString());stamp.close();} catch (DocumentException e) {}response.getOutputStream().write(bos.toByteArray());return null;} catch (Exception ex) {ex.printStackTrace();}return null;}

4、页面

<button type="button" class="layui-btn layui-btn-primary" onclick="scorePDF()">打印成绩单</button>
function scorePDF (argument) {layui.use('table',function(){var table = layui.tablevar checkStatus = table.checkStatus('csInfo');var frame = document.createElement("IFRAME");if(checkStatus.data.length==0){parent.layer.msg('请先选择要打印的数据行!', {icon: 2});return ;}var nums = "";for(var i=0;i<checkStatus.data.length;i++){nums += checkStatus.data[i].id+",";}parent.layer.msg('打印中...', {icon: 16,shade: 0.3,time:5000});frame.style.display ="none";frame.src = "scorePDF?nums="+nums;//controller层的urldocument.body.appendChild(frame);frame.contentWindow.focus();frame.contentWindow.print();});}

5、打印结果可保存为PDF文件,也可连接打印机打印

注意事项:
1、关于iText生成PDF文件,这个PDF文件的内容可以自己随心所欲,可以在网上找一些资料,我里面所描述的是一个表格,还可以生成段落等等。
2、代码中有需要的类可以找我,本人qq(2253978324),要备注好。
3、要是代码有什么写的不好,欢迎评论区评论。
————————————————
版权声明:本文为CSDN博主「bigsimpleton」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bigsimpleton/article/details/105299381

SpringBoot+Layui 打印PDF相关推荐

  1. springBoot+layui 压缩包 直接下载--或--直接压缩并下载方法

    springBoot+layui 压缩包 直接下载–或--直接压缩并下载方法 前端代码 layer.confirm('您确定要下载 ' + data.fileZipName + ' 吗?', {ico ...

  2. 基于javaweb+mysql的教务管理系统(java+jsp+spring+springboot+layui)

    基于javaweb+mysql的教务管理系统(java+jsp+spring+springboot+layui) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/mye ...

  3. 基于springboot的spire.pdf添加印章

    在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下.这样的处理,如果文档很多,且仅仅需要电子文档的就很 ...

  4. Chrome 打印PDF技巧

    Chrome 打印PDF技巧 原文地址:https://github.com/zhongxia245/blog/issues/22 欢迎star 本教程,使用Mac电脑进行演示. 常规的Chrome打 ...

  5. SSM/SpringBoot+layui实现数据表格

    1.实现拖拽上传,前台渲染并上传到数据库 先去看layui官网代码,分析了解后台需要返回什么数据 2.完整数据表格的时候 使用过程太复杂 详细代码请下载 springboot+layui数据表格

  6. 批量打印pdf并合并_CAD批量打印攻略

    小明经常因为要转上千张PDF,而转到裂开 所以又菜手又懒的他,开始想办法了 如图,有4张不同幅面的图纸需要转PDF 首先安装打图精灵,通过qp命令呼出界面 (首次可能需要输入全命令qplot,再次使用 ...

  7. Winform 打印PDF顺序混乱,获取打印队列

    Winform 打印PDF顺序混乱,获取打印队列 原文:Winform 打印PDF顺序混乱,获取打印队列 工作中PDF打印顺序混乱着实让我疼痛了好久,其实决绝方法非常简单,但没有想到这个点子的时候确实 ...

  8. java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo

    ## Java实现PDF生成并且打印pdf文件(附demo) #### 目录: 0. 效果预览 1. 准备环境 2. Java如何调用打印机进行打印 3. Java如何生成pdf打印文件 4. 实现p ...

  9. java pdf打印_Java 打印PDF文档

    本文将介绍如何在Java应用程序中打印PDF文档.一般有以下三种常见打印方式:静默打印 显示打印对话框打印 打印PDF时自定义纸张大小 使用工具:Free Spire.PDF for Java 创建运 ...

最新文章

  1. 【Azure Services Platform Step by Step-第11篇】Windows Azure兰州拉面馆-日志与队列的使用...
  2. linux/windows nginx安装
  3. 赛可达推病毒攻击检测和情报分享服务
  4. Reflector 已经out了,试试ILSpy
  5. 使用swiper_关于使用swiper制作web轮播图
  6. 定值保险计算举例_保险公司的“开门红”又要来了!理财险真的值得买吗?
  7. 专访阿里巴巴量子实验室:最强量子电路模拟器“太章”到底强在哪?
  8. maven中的groupId和artifactId到底指的是什么?
  9. 为何要弃 Java、Swift 于不顾,而选择 Python?
  10. 20191004:包装类Integer,int,String类的相互转换
  11. web 报表中电子图章 / 水印的轻松实现
  12. 如何在Ubuntu系统下安装JDK
  13. 汇编语言程序设计的实验环境及上机步骤
  14. 瑞利衰落AWGN带限信道BPSK基带传输系统误码性能仿真-python实现
  15. emos mysql_企业邮件部署详细步骤(EMOS)
  16. 联想小新一键恢复小孔_联想一键恢复系统怎么用?小新Air 13 Pro怎么还原操作系统?...
  17. matlab中如何分布运行,matlab安装、运行与其他问题集锦
  18. Flink之watermark(水印)讲解
  19. 飞天含雪看“网络红人”----社会浮躁下的一场闹剧
  20. unity3d消除你不想要的黄色警告

热门文章

  1. Photoshop文字之——制作写在宣纸上的水彩字特效
  2. 网络伤感生活日志发布:来不及凋谢的花落
  3. Vue 中路由传参(动态路由匹配)
  4. 分组交换比起电路交换快速的原因
  5. 如何选择值得深入学习的技术方向
  6. 哭了,谁还会心疼?累了,谁让我依靠?
  7. iphonex适配游戏_iPhoneX王者荣耀适配问题 iPhoneX游戏问题详解
  8. 权限管理系统设计——入门(一)
  9. Mac使用Karabiner-Elements修改mac默认快捷键
  10. 手写Spring-第十六章-旋转吧雪月花!用三级缓存解决循环依赖