SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片
场景
SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF:
SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF_BADAO_LIUMANG_QIZHI的博客-CSDN博客
在上面的基础上怎样实现在导出pdf时在指定的位置插入照片,并设置照片大小。
注:
博客:
BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_CSDN博客-C#,SpringBoot,架构之路领域博主
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、前后端请求的流程同上面一样,准备一张照片,这里路径是D:\badao.jpg
2、然后后台在doc对象上继续添加Image对象
//添加照片Image jpg = Image.getInstance("D:\\badao.jpg");//设置图片坐标位置jpg.setAbsolutePosition(400,100);//设置图片长和宽的缩放,这里都缩放到50%jpg.scalePercent(50f,50f);doc.add(jpg);
注意这里的Image是com.itextpdf.text包下的。
然后可以通过setAbsolutePosition设置图片的位置。
还可以通过scalePercent设置长和宽的缩放百分比
3、完整后台Controller代码
@RequestMapping("/getPdfWithImage")public void getPdfWithImage(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://blog.csdn.net/BADAO_LIUMANG_QIZHI ",boldFont));PdfPCell cell16 = new PdfPCell(new Paragraph("当前时间: "+new Date().toString(),boldFont));cell15.setBorder(0);cell16.setBorder(0);table3.addCell(cell15);table3.addCell(cell16);doc.add(table3);//添加照片Image jpg = Image.getInstance("D:\\badao.jpg");//设置图片坐标位置jpg.setAbsolutePosition(400,100);//设置图片长和宽的缩放,这里都缩放到50%jpg.scalePercent(50f,50f);doc.add(jpg);doc.close();}
SpringBoot+Vue+Itext实现前端请求文件流的方式导出PDF时在指定位置添加照片相关推荐
- SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF
场景 SpringBoot加itext实现PDF导出: SpringBoot加itext实现PDF导出_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面实现导出pdf的基础上,怎样结合 ...
- flask vue 文件流的方式下载word
前端传递uuid,后端根据uuid找到对应的记录,把数据填充导word文档中,以文件流的方式传递给前端实现下载功能,这样后端就不用先保存再根据路径下载了 这是重点,必须加,不然下载的文件是乱码 {re ...
- java使用itext将图片放到pdf模板的指定位置
java使用itext将图片放到pdf模板的指定位置 前面的准备步骤可以参考我的上一篇文章 这里直接上代码 这里用的图片是路径的形式,还有种情况是图片是base64的时候,这种情况就需要转一下图片格式 ...
- vue项目,把图片文件流转为base64格式以图片形式展示在前端
问题描述 前台需要展示图片,期望后台直接返回图片地址,但是后台给的是的文件流而不是一个图片地址,需要把文件流转为base64的格式展示出来. 请求后台接口时,返回图片内容如下: 上图不是base64格 ...
- vue解析后台传来的文件流实现文件下载功能并兼容ie
后台传来的文件流: 下载并兼容了ie: export function downloadFile(data, fileName, http, url) {axios({method: http,dat ...
- vue+elementui封装下载base64文件流,下载模板。
前景:后台返回的是base64文件流. html <el-button class="btn-down" type="primary" @click=&q ...
- pdf以文件流的形式导出乱码问题解决
将后台文件传给前端,目的要实现附件下载的效果: 实际上返回的是一堆乱码 解决方案: //attachment就是附件的形式返回,不加attachment就是文件流输出到前端,即乱码现象 respon ...
- 【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)
在SpringBoot+VUE项目中引入EasyExcel实现导入导出 一.引入EasyExcel 通过maven引入,坐标如下: <dependency><groupId>c ...
- react集成react-pdf获取文件流预览下载pdf,展示电子签章
1.下载依赖包 代码如下(示例): npm install react-pdf 2.引入依赖包 代码如下(示例): import { Document, Page } from 'react-pdf' ...
最新文章
- 构建Java并发模型框架
- iOS控件之UILabel
- Smali源代码分析教程(转)
- 伪类 伪元素 如何区分
- 刷题-CC150-Java实现
- java 异常 最佳实践_关于JAVA异常处理的20个最佳实践
- sorted函数python_python中排序函数sort,sorted和operator.itemgetter的使用
- nginx配置文件结构
- loadView 和 viewDidLoad、viewDidunload 的区别
- uvm 形式验证_重复使用UVM RTL验证测试进行门级仿真详细过程介绍
- 雪球: 关于股票的经典书籍有哪些推荐
- 项目启动正常,访问出现404
- 一款三搭_今秋内搭无需多,有“小高领”就够了!时髦百搭,配啥上衣都好看...
- 第十六届“振兴杯”计算机网络管理员赛项理论参考题库(2)多选
- 学长的白日梦C语言题目,bzoj4030【HEOI2015】小L的白日梦
- 微信公众号调取相册和摄像头功能,实现图片上传
- html自动汉字转拼音,输入汉字转换成拼音首字母js代码
- 在js中Date对象用getDay方法get到的是个啥玩意儿?
- .ts 音频文件转换成 .mp3 文件
- git submodule添加和删除
热门文章
- Python 计算机视觉(三)—— 数字图像处理基本操作
- 将所有单个json标注文件合并成一个总的json标注文件(COCO数据集格式)
- linux——虚拟机的图形安装、管理以及快照
- Escape The Maze (easy version) 多源最短路,bfs(1700)
- RocketMQ(五):教你如何调试源代码
- Java进阶:ReentrantLock实现原理解析(公平锁、非公平锁、可重入锁、自旋锁)
- mysql bandwidth_内存带宽对mysql影响多大
- redis 主从哨兵模式搭建
- HTML--猫眼电影---浮动练习
- zookeeper集群配置与配置文件详解