多图片合成PDF

多图片合成PDF


最近博主所在的公司有一个这样的业务,需要前端截多张图片,将多张图片生成pdf文件。废话不多说 放上核心代码,拿走不谢~


package com.enn.common.utils;

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;
import lombok.extern.log4j.Log4j2;

import java.io.File;
import java.io.FileOutputStream;

/**
 * @ClassName PrintToPdfUtil
 * @Description TODO
 * @Author zhouzpa
 * @Date 2021/7/8 9:50
 * @Version 1.0
 */
@Log4j2
public class PrintToPdfUtil {
    /**
     *
     * @param outPdfFilepath 生成pdf文件路径
     * @param imageFiles 需要转换的图片File类Array,按array的顺序合成图片
     */
    public static void imagesToPdf(String outPdfFilepath, File[] imageFiles) throws Exception {

        log.info("进入图片合成PDF工具方法");

        File file = new File(outPdfFilepath);
        // 第一步:创建一个document对象。
        Document document = new Document();
        document.setMargins(0, 0, 0, 0);
        // 第二步:
        // 创建一个PdfWriter实例,
        PdfWriter.getInstance(document, new FileOutputStream(file));
        // 第三步:打开文档。
        document.open();
        // 第四步:在文档中增加图片。
        int len = imageFiles.length;

        for (int i = 0; i < len; i++) {
            if (imageFiles[i].getName().toLowerCase().endsWith(".bmp")
                    || imageFiles[i].getName().toLowerCase().endsWith(".jpg")
                    || imageFiles[i].getName().toLowerCase().endsWith(".jpeg")
                    || imageFiles[i].getName().toLowerCase().endsWith(".gif")
                    || imageFiles[i].getName().toLowerCase().endsWith(".png")) {
                String temp = imageFiles[i].getAbsolutePath();
                log.info("图片路径:"+temp);
                Image img = Image.getInstance(temp);
                img.setAlignment(Image.ALIGN_CENTER);
                //图片自适应
                img.scaleToFit(794, 1123);
                //img.scaleAbsolute(597, 844);// 直接设定显示尺寸
                // 根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效
                //document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
                document.setPageSize(new Rectangle(794, 1123));
                document.newPage();
                document.add(img);
            }
        }
        // 第五步:关闭文档。
        document.close();
        log.info("图片合成PDF完成");
    }

/*    public static void main(String[] args) throws Exception {
        String outPdfPath = "D:\\Img2pdf.pdf";

        File[] imgNameArray=new File []{
               new File("D:\\pic\\1.jpg"), new File("D:\\pic\\2.jpg"),new File("D:\\pic\\3.jpg")
        };
        imagesToPdf(outPdfPath, imgNameArray);
    }*/

}

引入依赖:

  <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

大家觉得可以,给点个赞 谢谢~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值