场景

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时在指定位置添加照片相关推荐

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

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

  2. flask vue 文件流的方式下载word

    前端传递uuid,后端根据uuid找到对应的记录,把数据填充导word文档中,以文件流的方式传递给前端实现下载功能,这样后端就不用先保存再根据路径下载了 这是重点,必须加,不然下载的文件是乱码 {re ...

  3. java使用itext将图片放到pdf模板的指定位置

    java使用itext将图片放到pdf模板的指定位置 前面的准备步骤可以参考我的上一篇文章 这里直接上代码 这里用的图片是路径的形式,还有种情况是图片是base64的时候,这种情况就需要转一下图片格式 ...

  4. vue项目,把图片文件流转为base64格式以图片形式展示在前端

    问题描述 前台需要展示图片,期望后台直接返回图片地址,但是后台给的是的文件流而不是一个图片地址,需要把文件流转为base64的格式展示出来. 请求后台接口时,返回图片内容如下: 上图不是base64格 ...

  5. vue解析后台传来的文件流实现文件下载功能并兼容ie

    后台传来的文件流: 下载并兼容了ie: export function downloadFile(data, fileName, http, url) {axios({method: http,dat ...

  6. vue+elementui封装下载base64文件流,下载模板。

    前景:后台返回的是base64文件流. html <el-button class="btn-down" type="primary" @click=&q ...

  7. pdf以文件流的形式导出乱码问题解决

    将后台文件传给前端,目的要实现附件下载的效果:  实际上返回的是一堆乱码 解决方案: //attachment就是附件的形式返回,不加attachment就是文件流输出到前端,即乱码现象 respon ...

  8. 【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)

    在SpringBoot+VUE项目中引入EasyExcel实现导入导出 一.引入EasyExcel 通过maven引入,坐标如下: <dependency><groupId>c ...

  9. react集成react-pdf获取文件流预览下载pdf,展示电子签章

    1.下载依赖包 代码如下(示例): npm install react-pdf 2.引入依赖包 代码如下(示例): import { Document, Page } from 'react-pdf' ...

最新文章

  1. 构建Java并发模型框架
  2. iOS控件之UILabel
  3. Smali源代码分析教程(转)
  4. 伪类 伪元素 如何区分
  5. 刷题-CC150-Java实现
  6. java 异常 最佳实践_关于JAVA异常处理的20个最佳实践
  7. sorted函数python_python中排序函数sort,sorted和operator.itemgetter的使用
  8. nginx配置文件结构
  9. loadView 和 viewDidLoad、viewDidunload 的区别
  10. uvm 形式验证_重复使用UVM RTL验证测试进行门级仿真详细过程介绍
  11. 雪球: 关于股票的经典书籍有哪些推荐
  12. 项目启动正常,访问出现404
  13. 一款三搭_今秋内搭无需多,有“小高领”就够了!时髦百搭,配啥上衣都好看...
  14. 第十六届“振兴杯”计算机网络管理员赛项理论参考题库(2)多选
  15. 学长的白日梦C语言题目,bzoj4030【HEOI2015】小L的白日梦
  16. 微信公众号调取相册和摄像头功能,实现图片上传
  17. html自动汉字转拼音,输入汉字转换成拼音首字母js代码
  18. 在js中Date对象用getDay方法get到的是个啥玩意儿?
  19. .ts 音频文件转换成 .mp3 文件
  20. git submodule添加和删除

热门文章

  1. Python 计算机视觉(三)—— 数字图像处理基本操作
  2. 将所有单个json标注文件合并成一个总的json标注文件(COCO数据集格式)
  3. linux——虚拟机的图形安装、管理以及快照
  4. Escape The Maze (easy version) 多源最短路,bfs(1700)
  5. RocketMQ(五):教你如何调试源代码
  6. Java进阶:ReentrantLock实现原理解析(公平锁、非公平锁、可重入锁、自旋锁)
  7. mysql bandwidth_内存带宽对mysql影响多大
  8. redis 主从哨兵模式搭建
  9. HTML--猫眼电影---浮动练习
  10. zookeeper集群配置与配置文件详解