【实用工具类】使用IText实现多图片转PDF文件~~复制粘贴直接用

【实用工具类】使用IText实现多图片转PDF文件

【🍔Java全生态技术学习笔记,一起超神吧🍔】:飞机票

“复制粘贴直接用的JAVA工具类”

说明

最近公司有一个需求,想要将企业的营业执照等图片数据全都打包到一个PDF文件当中。由于当时对IText一无所知,所以Gogle了很多资料完成了当时的需求,在此做一下记录以及分享。

需要引入的POM

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

DEMO示例

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

/**
 * @author Eayon
 * @ClassName ImgeToPdf
 * @Description 使用Itext 将图片转成PDF
 * @Copyright 2020 © kuwo.cn
 * @date 2020/8/4 20:37
 * @Version: 1.0
 */
public class ImgeToPdf {

    /**
     * 测试
     * @Author: Eayon
     * @param args
     */
    public static void main(String[] args) {
        //这个可以放多个图片地址,然后用逗号分开
        String imgUrl = "E:\\qqq.jpg,E:\\ttt.jpg";
        //PDF文件生成路径
        String filepath = "E:\\企业信息.pdf";

        new ImgeToPdf().imgOfPdf(filepath,imgUrl);
    }

    /**
     * @Description: 通过图片路径及生成pdf路径,将图片转成pdf
     * @Author: Eayon
     * @Date: 2020/8/4
     */
    public void imgOfPdf(String filepath, String imgUrl) {
        try {
            //图片list集合
            ArrayList<String> imageUrllist = new ArrayList<String>();
            String[] imgUrls = imgUrl.split(",");
            for (int i=0; i<imgUrls.length; i++) {
                imageUrllist.add(imgUrls[i]);
            }
            //输出pdf文件路径
            String pdfUrl =  filepath;
            //生成pdf
            File file = Pdf(imageUrllist, pdfUrl);
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static File Pdf(ArrayList<String> imageUrllist, String mOutputPdfFileName) {
        new一个pdf文档   PageSize.A4:是设置文档大小的意思 一般都是A4标准
        Document document = new Document(PageSize.A4, 0, 0, 0, 0);
        try {
            PdfWriter.getInstance(document, new FileOutputStream(mOutputPdfFileName)); //pdf写入
            //打开文档
            document.open();
            // 添加PDF文档的某些信息,比如作者,主题等等
            //document.addTitle("标题:企业信息");
            //document.addAuthor("作者:zhengtai.li@kuwo.cn");
            //document.addSubject("主题:企业信息");
            // 写入一段文字
            document.add(new Paragraph("Test! Test! Test! Test! Test! Test!"));

            //循环图片List,将图片加入到pdf中
            for (int i = 0; i < imageUrllist.size(); i++) {
                //在pdf创建一页
                //document.newPage();

                //通过文件路径获取image
                Image png1 = Image.getInstance(imageUrllist.get(i));
                float heigth = png1.getHeight();
                float width = png1.getWidth();
                int percent = getPercent(heigth, width);
                png1.setAlignment(Image.MIDDLE);//Image.ALIGN_CENTER
                //设置图片的绝对位置
                //png1.setAbsolutePosition(0, 0);
                // 表示是图像的比例;
                png1.scalePercent(percent);
                //将图片添加到文件中
                document.add(png1);
            }
            document.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        File mOutputPdfFile = new File(mOutputPdfFileName);  //输出流
        if (!mOutputPdfFile.exists()) {
            mOutputPdfFile.deleteOnExit();
            return null;
        }
        return mOutputPdfFile; //反回文件输出流
    }


    /**
     * 计算图片大小(生成的图片小一点)
     * @Author: Eayon
     * @param h
     * @param w
     * @return
     */
    public static int getPercent(float h, float w) {
        int p = 0;
        float p2 = 0.0f;
        if (h > w) {
            p2 = 297 / h * 100;
        } else {
            p2 = 210 / w * 100;
        }
        p = Math.round(p2);
        return p;
    }

    /**
     * 计算图片大小(生成的图片大一点)
     * @Author: Eayon
     * @param h
     * @param w
     * @return
     */
    public static int getPercent2(float h, float w) {
        int p = 0;
        float p2 = 0.0f;
        p2 = 530 / w * 100;
        p = Math.round(p2);
        return p;
    }
}

效果

实现效果图

【🍔Java全生态技术学习笔记,一起超神吧🍔】:飞机票

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值