java图片转pdf
加入配置包
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
复制代码创建一个转换的工具类
package com.test.utils;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;
import org.apache.pdfbox.util.PDFMergerUtility;
import javax.imageio.ImageIO;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class PdfUtil {
/**
* 将图片转换为PDF
* @param imagePath
* @param img
* @param descfolder
* @return
* @throws Exception
*/
public static String Img2PDF(String imagePath,BufferedImage img,String descfolder) throws Exception{
String pdfPath = "";
try {
//图片操作
Image image = null;
File file = new File(descfolder);
if (!file.exists()){
file.mkdirs();
}
pdfPath = descfolder +"/"+System.currentTimeMillis()+".pdf";
String type = imagePath.substring(imagePath.lastIndexOf(".")+1);
Document doc = new Document(null, 0, 0, 0, 0);
//更换图片图层
BufferedImage bufferedImage = new BufferedImage(img.getWidth(), img.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
bufferedImage.getGraphics().drawImage(img, 0,0, img.getWidth(), img.getHeight(), null);
bufferedImage=new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY),null).filter (bufferedImage,null);
//图片流处理
doc.setPageSize(new Rectangle(bufferedImage.getWidth(), bufferedImage.getHeight()));
System.out.println(bufferedImage.getWidth()+"()()()()()"+bufferedImage.getHeight());
ByteArrayOutputStream out = new ByteArrayOutputStream();
boolean flag = ImageIO.write(bufferedImage, type, out);
byte[] b = out.toByteArray();
image = Image.getInstance(b);
//写入PDF
System.out.println("写入PDf:" + pdfPath);
FileOutputStream fos = new FileOutputStream(pdfPath);
PdfWriter.getInstance(doc, fos);
doc.open();
doc.add(image);
doc.close();
} catch (IOException e) {
e.printStackTrace();
} catch (BadElementException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
return pdfPath;
}
/**
* 获取文件夹下的PDF
* @param folder
* @return
* @throws IOException
*/
private static String[] getFiles(String folder) throws IOException {
File _folder = new File(folder);
String[] filesInFolder;
if (_folder.isDirectory()) {
filesInFolder = _folder.list();
return filesInFolder;
} else {
throw new IOException("Path is not a directory");
}
}
/**
* 合成PDF
* @param files
* @param desfolder
* @param mergeFileName
* @throws Exception
*/
public static void mergePDF(String[] files,String desfolder,String mergeFileName ) throws Exception{
PDFMergerUtility mergePdf = new PDFMergerUtility();
for (String file :files) {
if (file.toLowerCase().endsWith("pdf"))
mergePdf.addSource(file);
}
mergePdf.setDestinationFileName(desfolder+"/"+mergeFileName);
mergePdf.mergeDocuments();
System.out.println("merge over");
}
public static void main(String[] args) throws Exception{
ImgUtil imageUtil = new ImgUtil();
String[] files = new String[5];
files[0] = "C:/Users/yushuaiqi/Pictures/Saved Pictures/gvm.jpg";
files[1] = "C:/Users/yushuaiqi/Pictures/Saved Pictures/hjbbu.jpg";
files[2] = "C:/Users/yushuaiqi/Pictures/Saved Pictures/j.png";
files[3] = "C:/Users/yushuaiqi/Pictures/Saved Pictures/jhk.jpg";
files[4] = "C:/Users/yushuaiqi/Pictures/Saved Pictures/uyo.jpg";
String folder = "F:/pdf位置";
String mergeFileName = "final.pdf";
for (int i=0;i<files.length;i++) {
String file = files[i];
if (file.toLowerCase().endsWith(".png")
|| file.toLowerCase().endsWith(".jpg")
|| file.toLowerCase().endsWith(".gif")
|| file.toLowerCase().endsWith(".jpeg")
|| file.toLowerCase().endsWith(".gif")) {
BufferedImage bi = imageUtil.rotateImage(file);
if (bi==null)
continue;
String pdffile = Img2PDF(file,bi,folder);
files[i] = pdffile;
}
}
mergePDF(files,folder,mergeFileName);
}
}