首页 > 编程知识 正文

多片合并在一张片,怎么将多张片合并成一张

时间:2023-05-03 11:23:50 阅读:262676 作者:2845

需要使用的依赖

<dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>4.2.2</version> </dependency> package com.tgpms.web.tongfei.utils;import cn.hutool.core.collection.CollectionUtil;import com.itextpdf.text.Document;import com.itextpdf.text.Image;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.PdfWriter;import javax.servlet.http.HttpServletResponse;import java.awt.image.BufferedImage;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.net.URLEncoder;import java.util.List;/** * @Author: jiangli * @Date: 2021/1/6 16:37 * 将多张图片合并转为PDF */public class ImageToPdfUtil { /** * 保存到本地 * * @param imageFolderPath 图片文件夹地址 * @param pdfPath PDF文件保存地址 */ public static void toPdf(String imageFolderPath, String pdfPath) { //创建一个文档对象 Document doc = new Document(); try { // 输入流 FileOutputStream fos = new FileOutputStream(pdfPath); // 写入PDF文档 PdfWriter.getInstance(doc, fos); //开启文档 doc.open(); // 获取图片文件夹对象 File file = new File(imageFolderPath); File[] files = file.listFiles(); // 循环获取图片文件夹内的图片 if (files != null && files.length > 0) { for (File f : files) { if (f.getName().endsWith(".png") || f.getName().endsWith(".jpg") || f.getName().endsWith(".gif") || f.getName().endsWith(".jpeg") || f.getName().endsWith(".tif")) { String imagePath = imageFolderPath + f.getName(); // 实例化图片 Image image = Image.getInstance(imagePath); //设置图片居中显示 image.setAlignment(Image.MIDDLE); // 添加图片到文档 doc.add(image); // 换行,增加间距 doc.add(new Paragraph("n")); } } } // 关闭文档 doc.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 通过流下载 * @param imageList image集合 * @param response 响应 */ public static void downloadPdf(List<BufferedImage> imageList, HttpServletResponse response) { String fileName = "材料二维码.pdf"; //创建一个文档对象 Document doc = new Document(); try(OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());) { // 防止中文乱码 fileName = URLEncoder.encode(fileName, "UTF-8"); response.reset(); response.setHeader("Content-Disposition", "attachment; filename="" + fileName + """); response.setContentType("application/octet-stream;charset=UTF-8"); // 写入PDF文档 PdfWriter.getInstance(doc, outputStream); //开启文档 doc.open(); // 循环获取图片文件夹内的图片 if (CollectionUtil.isNotEmpty(imageList)) { for (BufferedImage bufferedImage : imageList) { // 实例化图片 Image image = Image.getInstance(bufferedImage, null); //设置图片居中显示 image.setAlignment(Image.MIDDLE); // 添加图片到文档 doc.add(image); // 换行,增加间距 doc.add(new Paragraph("n")); } } // 关闭文档 doc.close(); outputStream.flush(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { toPdf("D:/", "D:/test.pdf"); }}

将4张图片合并到一个pdf下载到本地和通过浏览器下载

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。