Java实现多个图片转化成PDF

Java实现多个图片转化成PDF

依赖

       <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>2.1.7</version>
        </dependency>
    </dependencies>

文件处理工具类

package com.alvin.file;

import java.io.File;

/** * 文件处理工具类 */
public class FileUtil { 
    private static int index = 0;  //存储数组
    /** * 截取文件后缀名 * @param file 文件类 * @return */
    public static String fileLastName(File file) { 
        if (file == null) { 
        		return null;
        	}
        String filename = file.getName();
        String[] split = filename.split("\\.");
        if (split.length > 1) { 
            return split[split.length - 1];
        } else { 
            return "";
        }
    }

    /** * 返回列表文件 * @param filePath 字符串 文件的路径 比如 G:/HTML/testData * @return */
    public static String[] getFileList(String filePath){ 
        File file = new File(filePath); //获得文件路径
        File []fileList = file.listFiles(); //获得下属列表
        String[] strList = new String[1024];    //数组存储
        for(File f :fileList){ 
            //只要图片
            if(fileLastName(f) == "jpg" || fileLastName(f).equals("jpg") || fileLastName(f) == "png" || fileLastName(f).equals("png")){ 
                strList[index++] = f.toString();         //存储进去
            }
        }
        return strList;
    }
}

图片转换PDF类

package com.alvin.file.pdf;

import com.alvin.file.FileUtil;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/** * 图片转换PDF类 */
public class ImgPDF { 
    /** * 将图片转换成PDF * @param source 文件路径的集合 可以调用 FileUtil.getFileList() 方法 * @param target PDF的名字和位置 */
    public static void ImgChangePDF(String []source, String target) { 
        //创建一个文档对象
        Document doc = new Document();
        try { 
            //定义输出文件的位置
            PdfWriter.getInstance(doc, new FileOutputStream(target));
            //开启文档
            doc.open();
            // 循环获取图片文件夹内的图片
            for (int i = 0; i < source.length; i++) { 
                if(source[i] == null){       //前面的方法默认了数组长度是1024,所以这里就让它提前退出循环
                    break;
                }
                //路径
                Image  img = Image.getInstance(source[i]);
                //获得宽高
                Float h = img.getHeight();
                Float w = img.getWidth();
                //统一压缩
                Integer percent = getPercent(h, w);
                //图片居中
                img.setAlignment(Image.MIDDLE);
                //百分比显示图
                img.scalePercent(percent);
                //设置高和宽的比例
                doc.add(img);
            }
            // 关闭文档
            if(doc != null){ 
                doc.close();
            }
        } catch (IOException e) { 
            e.printStackTrace();
        } catch (BadElementException e) { 
            e.printStackTrace();
        } catch (DocumentException e) { 
            e.printStackTrace();
        }
    }
    /** * 压缩 * @param */
    public static Integer getPercent(Float h,Float w)
    { 
        Integer g=0;
        Float g2=0.0f;
        g2=480/w*100;
        g=Math.round(g2);
        return g;
    }
}

最后测试

public class Test { 
    public static void main(String[] args) { 
        String[] fileList = FileUtil.getFileList("G:/HTML/testData");
        String target = "G:/HTML/testData/0.pdf";
        ImgPDF.ImgChangePDF(fileList,target);
    }
}
    原文作者:算法爱好者丶
    原文地址: https://blog.csdn.net/qq_41424688/article/details/121224188
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞