Java实现多个图片转化成PDF

Java实现多个图片转化成PDF

依赖

       <dependency>
            <groupId>com.lowagiegroupId>
            <artifactId>itextartifactId>
            <version>2.1.7version>
        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);
    }
}

你可能感兴趣的:(工具,java,开发语言,后端)