这里使用到的jar包 是 // https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox compile group: ‘org.apache.pdfbox’, name: ‘fontbox’, version: ‘1.8.16’ // https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox compile group: ‘org.apache.pdfbox’, name: ‘pdfbox’, version: ‘1.8.16’
pdf转单页图片 合并一张的工具库 前往aspose-words word转图片 下载使用
/**
* 将pdf转成一张图片
* @param pdffile
* @return
* @throws IOException
*/
public static String getPDFBinary(String pdffile) throws IOException {
//文件流
InputStream inputStream = new FileInputStream(pdffile);
//文件 获取文件名字
File file = new File(pdffile);
String name = file.getName();
//截取不带后缀名的字段
String fileName = name.substring(0, name.lastIndexOf("."));
//文件上传路径
String parent = file.getParent();
PDDocument doc = PDDocument.load(inputStream);
//获取pdf文件 页数
List<PDPage> pages = doc.getDocumentCatalog().getAllPages();
List<BufferedImage> imageList = new ArrayList<BufferedImage>();
BufferedImage image = null;
for (int i = 0; i < pages.size(); i++) {
PDPage page = (PDPage)pages.get(i); // 获取第i页
image = page.convertToImage();
imageList.add(image);
//合并一张
image = MergeImage.mergeImage(false, imageList);
}
boolean png = ImageIO.write(image, "png", new File(parent +"/"+ fileName + ".png"));
if(png == false){
return "转换失败";
}
//关闭流
inputStream.close();
return "转换成功";
}
pdf 每页转图片 放到文件夹内 转换成压缩包 也可以不放压缩包 随意 压缩包工具类 java实现文件压缩,文件夹压缩,以及文件和文件夹的混合压缩
// 将pdf 转化为 图片分页 压缩包
public static String getPDFBinarys(String pdffile) throws IOException {
//文件流
InputStream inputStream = new FileInputStream(pdffile);
PDDocument doc = PDDocument.load(inputStream);
//文件 获取文件名字
File file = new File(pdffile);
String name = file.getName();
//截取不带后缀名的字段
String fileName = name.substring(0, name.lastIndexOf("."));
//文件上传路径
String parent = file.getParent();
//获取pdf文件 页数
List<PDPage> pages = doc.getDocumentCatalog().getAllPages();
BufferedImage image = null;
//创建同名文件夹
new File(parent+"/"+ fileName).mkdir();
for (int i = 0; i < pages.size(); i++) {
PDPage page = (PDPage) pages.get(i); // 获取第i页
image = page.convertToImage();
ImageIO.write(image, "png", new File(parent +"/"+ fileName +"/"+ "第"+ i +"页" + fileName + ".png"));
}
//压缩同名文件夹
File f = new File(parent +"/" + fileName );
new CompactAlgorithm(new File( parent+ "/",f.getName()+".zip")).zipFiles(f);
//关闭流
inputStream.close();
return "转换成功"+pages.size()+"页";
}