java多个pdf合并为一个pdf,并通过feign下载
1.首先pom文件添加依赖,操作pdf文件工具类
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.21</version></dependency>
2.pdf合并操作
public ResponseEntity<byte[]> mergePdf(MultipartFile[] files) {//pdf合并工具类PDFMergerUtility mergePdf = new PDFMergerUtility();//合并pdf生成的文件名String filename = "d:/"+new Date().getTime()+".pdf";for (MultipartFile multipartFile : files) {try {byte[] bytes = multipartFile.getBytes();InputStream in = new ByteArrayInputStream(bytes);mergePdf.addSource(in); // 合并pdf} catch (IOException e) {throw new BaseException("Error merging pdf files- " + filename, e);}}try {// 设置合并生成pdf文件名称及路径mergePdf.setDestinationFileName(filename);mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());} catch (IOException e) {e.printStackTrace();}return exportFile(new File(filename), filename);}
注意:在feign之间传输二进制流时,返回值必须为 ResponseEntity 类型,所以封装了个私有方法,如下:
private ResponseEntity<byte[]> exportFile(File file, String filename) {HttpHeaders headers = new HttpHeaders();ResponseEntity<byte[]> entity = null;InputStream in=null;try {in=new FileInputStream(file);byte[] bytes = new byte[in.available()];filename = URLEncoder.encode(filename, "utf-8");in.read(bytes);headers.add("Content-Disposition", "attachment;filename="+filename);entity = new ResponseEntity<>(bytes, headers, HttpStatus.OK);} catch (Exception e) {e.printStackTrace();}finally {if(in!=null) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}return entity;}
注意:feign层代码接收类型 必须为 feign.Response
Response mergePdf(@RequestPart("file") MultipartFile[] file);
3.消费层 controller代码:
public void mergePdf(@RequestPart("file") MultipartFile[] file, HttpServletResponse response){InputStream inputStream = null;OutputStream outputStream = null;try {// 调用feign层代码获取Response Response responseEntity = orderService.mergePdf(file);// Response 获取响应体Response.Body body = responseEntity.body();// 通过响应体来获取 一个输入流inputStream = body.asInputStream();BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);// 设置http 响应头信息等response.setContentType("multipart.form-data");response.setHeader("Content-Disposition", responseEntity.headers().get("Content-Disposition").toString().replace("[","").replace("]",""));outputStream = new BufferedOutputStream(response.getOutputStream());int length = 0;byte[] temp = new byte[1024 * 10];while ((length = bufferedInputStream.read(temp)) != -1) {// 输出二进制流outputStream.write(temp, 0, length);}outputStream.flush();} catch (IOException e) {e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (outputStream != null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
最后调用接口,可以发现浏览器响应一个 blob 协议地址,最终由前端处理为二进制文件
java多个pdf合并为一个pdf,并通过feign下载相关推荐
- Java使用iText PDF合并PDF(将多个PDF合并成一个PDF)
1 配置pom文件 我用的是5.4.3的版本 <dependency><groupId>com.itextpdf</groupId><artifactId&g ...
- Java 多个pdf合并成一个pdf
前言 实际开发过程中,会因实际业务原因需把多个pdf合并成一个pdf. 代码如下: import com.itextpdf.text.pdf.*; import com.itextpdf.text.D ...
- 多个vue项目合并成一个_集美们,快看如何一步将多个PDF合并成一个PDF
之前的推文有提到,如何将多幅图片从word中提取出来.今天我们就一起来康康如何快速将多个PDF合并成一个PDF吧! 首先,我们需要一个PDF阅读器,这个阅读器可以是Foxit PDF Editor,也 ...
- 如何将几个pdf合并成一个pdf?教你pdf合并最快速的方法
如何将几个pdf合并成一个pdf?想必很多朋友在日常的工作中,都会接触到pdf文件.有时候我们面对大量的pdf文件,为了方便查看和管理,就需要将几个pdf合并成一个pdf,那么具体该怎么操作呢?相信有 ...
- 如何把很多个pdf合成一个?pdf合并成一个pdf软件?
怎么把多个pdf合成一个pdf?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云 ...
- pdf合并成一个pdf软件?能合并pdf的软件?
多个pdf合并成一个pdf软件工具? 现在PDF文件是我们日常办公中比较常见的一种文件格式, 我们在处理PDF文件的时候,难免会遇到各种各样的问题.有时候我们需要把多个pdf合并成一个pdf,但是还有 ...
- 如何免费将多个PDF合并成一个PDF文件?
PDF文档方便阅读.不可直接编辑等特性相信大家都有所了解,但在工作和学习中不可避免的需要将多个PDF合并成一个PDF文档,今天就来分享一下如何免费将多个PDF合并成一个PDF文档吧. 1.使用福昕PD ...
- 如何把多个pdf合并成一个pdf?
如何把多个pdf合并成一个pdf?在电脑上我们经常需要使用各种pdf文件,也需要对pdf文件进行各种操作,除了pdf格式转换外,还有一种pdf文件操作的次数也比较多,那就是pdf合并,将多个pdf文件 ...
- pdf合并成一个pdf工具,可以合并pdf的软件哪个好?
pdf合并成一个pdf工具哪个好? 现在PDF文件是我们日常办公中比较常见的一种文件格式, 我们在处理PDF文件的时候,难免会遇到各种各样的问题.有时候我们需要把多个pdf合并成一个pdf,但是还有些 ...
- pdf合并成一个pdf顺序不对怎么办?为什么pdf合并完顺序乱了?
怎么合并pdf顺序不会乱?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云pdf ...
最新文章
- UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
- 二叉排序树的建立、先序/中序/后序遍历、查找
- 新架构让数据中心犹如PC
- mysql存储过程 --游标的使用 取每行记录 (多字段)
- Android 标题栏(2)
- Moss网站在不同服务器的迁移
- WPS简历模板的图标怎么修改_个人简历模板集锦,简历自我评价怎么写?
- 分解质因数_java
- 滴滴顺风车即将重新上线,试运营方案涉嫌歧视女性乘客
- 深度学习分类问题中accuracy等评价指标的理解
- ps 图片 透明度 设置
- 软件架构-解密电商系统商品模块业务
- word必备快捷键使用
- 静态路由 动态路由 php,静态路由汇总(路由聚合)
- 【Python量化】风险平价策略
- 数字逻辑·逻辑代数【运算、函数】
- 查找计算机里包含相关文字,windows7如何搜索包含关键字的文件_win7电脑文件怎么查关键字文件...
- MT7628路由器工作原理,MT7628处理器相关参数介绍
- 如何去掉图片上的水印 图片水印怎么去掉
- android单元测试AndroidTestCase
热门文章
- 幂等 (idempotence) 的概念
- 2022中央财经大学《901C语言程序设计》考研编程题回忆版
- alios下载_AliOS-Things ESP8266 编译下载
- php记录访问者ip和次数,一个能对访问者进行编号、记录访问次数、IP、时间的统计制作实例...
- Matlab中的ismember和contains傻傻分不清
- VMware收购云监控公司Wavefront
- IOS中结构体(struct)
- Java秒杀系统实战系列~构建SpringBoot多模块项目
- mysql如何高效存储IPv4、IPv6地址
- Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)