学习记录:PDF转图片
怕忘记,所以记录一下
第一步:添加依赖
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.8</version>
</dependency>
第二步:代码开始
private final String UPLOAD_FILE = "uploadFile/file/";
/**
* 根据页码生成图片
*startPage:起始页
*endPage:结束页
*/
@RequestMapping("pdf2Img")
public String pdf2Img(MultipartFile file, Integer startPage, Integer endPage) {
if (!file.isEmpty()) {
String saveFileName = file.getOriginalFilename();
//getAbsolutePath() = session.getServletContext().getRealPath("");
String newFileName = getAbsolutePath() + File.separator + UPLOAD_FILE + saveFileName;
File newFile = new File(newFileName);
if (!newFile.exists()) {
newFile.mkdirs();
}
PDDocument pdDocument;
// OutputStream outputStream = null;
try {
String rootPath = newFile.getParent();
int dot = newFile.getName().lastIndexOf(".");
// 获取图片文件名
String imagPdfName = newFile.getName().substring(0, dot);
// 保存图片的文件地址
String rootPath1 = request.getServletContext().getRealPath("uploadFile/pdf2Imag");
File rootFile = new File(rootPath1);
if (!rootFile.exists()) {
rootFile.mkdirs();
}
file.transferTo(newFile);
InputStream inputStream = new FileInputStream(newFile);
pdDocument = PDDocument.load(inputStream);
PDFRenderer renderer = new PDFRenderer(pdDocument);
PdfReader reader = new PdfReader(newFileName);//读取pdf文件
int pages = reader.getNumberOfPages();//pdf的总页数
StringBuffer buffer = null;
int j;
if (null == startPage && null == endPage) {
j = 0;
} else {
j = startPage - 1;
pages = endPage;
}
//放获取的图片地址
List<String> resultList = new TreeList<String>();
for (int i = j; i < pages; i++) {
String imagePath = rootPath1 + File.separator + imagPdfName;
String image = imagePath + "_" + i + ".jpg";
// 服务器地址 + 图片地址
String absolutPath = agentService.getServerPath() + "uploadFile/pdf2Imag/" + imagPdfName + "_" + i + ".jpg";
resultList.add(absolutPath);
buffer = new StringBuffer();
buffer.append(image);
File imgFile = new File(buffer.toString());
BufferedImage bufferedImage = renderer.renderImageWithDPI(i, 300);
ImageIO.write(bufferedImage, "jpg", imgFile);
}
reader.close();
inputStream.close();
pdDocument.close();
loger.debug("pdf转图片成功");
return CommUtil.toJson(resultList);
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
return null;
}