一,pdf图片转换工具
import org.apache.http.entity.ContentType;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* pdf转换成图片工具类
*/
@Component
public class PdfConvertPictureUtil {
@Resource
private MultipartFileToFile multipartFileToFile;
@Resource
private OOSUtils oosUtils;
/**
* pdf转换图片
* bucketName 桶名
* objectKey key
* @param fileInput
*/
public List<File> pdf2png(MultipartFile fileInput) {
String originalFilename = fileInput.getOriginalFilename();
//String currentUserGroupType = transferUtil.getCurrentEnterpriseId().toString();//当前用户所在的企业id
// String currentUserGroupType = "1562634732836425730";//当前用户所在的企业
// String original = originalFilename.split("\\.")[0];
// String path=currentUserGroupType+"/"+original+"/";//企业文件夹+pdf文件名
List<File> fileList=new ArrayList<>();
PDDocument doc=null;
try {
File file = multipartFileToFile.ultipartFileToFile(fileInput);
doc = PDDocument.load(file);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
for (int i = 0; i < pageCount; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
// BufferedImage srcImage = resize(image, 240, 240);//产生缩略图
File file1 = new File("./file" + "/" + originalFilename + "_" + (i + 1) + "." + "jpg");//写出的文件
ImageIO.write(image, "jpg", file1);
fileList.add(file1);
// String key=path+original + "_" + (i + 1) + "." + "jpg";
// oosUtils.putObjectFile1(bucketName,key,file1);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (doc != null) {
try {
doc.close();
} catch (IOException ioe){
ioe.printStackTrace();
}
}
}
return fileList;
}
/**
* File文件转为MultipartFile文件
*
* @param file
* @return
*/
private MultipartFile getMultipartFile(File file) {
if(!file.exists()){
throw new RuntimeException("文件不存在");
}
FileInputStream fileInputStream = null;
MultipartFile multipartFile = null;
try {
fileInputStream = new FileInputStream(file);
multipartFile = new MockMultipartFile(file.getName(), file.getName(),
ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
} catch (Exception e) {
e.printStackTrace();
}
return multipartFile;
}
}
二 删除临时文件 方
public void deleteFiles(File file ) {
if (!file.exists()) {
System.out.println("文件:" + file+ "不存在!");
}
if (!file.delete()) System.out.println("文件:" + "删除失败!");
System.out.println("文件:" + "删除成功");
}
删除临时文件方法二
/**
* 删除临时文件
*
* @param files
*/
public void deleteFiles(Set<Map<String, String>> files) {
for (Map<String, String> file : files) {
File f = new File(file.get("path"));
if (!f.exists()) {
System.out.println("文件:" + file.get("name") + "不存在!");
continue;
}
if (!f.delete()) System.out.println("文件:" + file.get("name") + "删除失败!");
System.out.println("文件:" + file.get("name") + "删除成功");
}
}