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);
}
}