多图片合成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>
大家觉得可以,给点个赞 谢谢~