PDF转图片工具类
亲测可以使用,无需下载其他jar包
pom.xml
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.20</version>
</dependency>
PDFToIMG.java
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Iterator;
import java.util.List;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.springframework.stereotype.Component;
/**
* @description: PDF转图片工具类
* @author: LCHYUE
* @time: 2021/6/15 13:35
*/
@Component
public class PDFToIMG {
public final static String IMG_TYPE_JPG = "jpg";
public final static String IMG_TYPE_PNG = "png";
// public static void main(String[] args) throws IOException {
// App app = new App();
// app.pdf2img("D:\\测试文件.pdf", "D:", IMG_TYPE_PNG);
PDDocument pdDocument = app.pdfInfo("D:\\api.pdf");
// }
/**
* @param pdfPath pdf文件的路径
* @param savePath 图片保存的地址
*/
public void pdf2img(String pdfPath, String savePath) {
//imgType 图片保存方式
String imgType = IMG_TYPE_PNG;
// String fileName = pdfPath.substring(pdfPath.lastIndexOf("\\") + 1, pdfPath.length());/*---window---*/
String fileName = pdfPath.substring(pdfPath.lastIndexOf(File.separator) + 1, pdfPath.length());/*---linux---*/
fileName = fileName.substring(0, fileName.lastIndexOf("."));
InputStream is = null;
PDDocument pdDocument = null;
try {
is = new BufferedInputStream(new FileInputStream(pdfPath));
PDFParser parser = new PDFParser(is);
parser.parse();
pdDocument = parser.getPDDocument();
List pages = pdDocument.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
// String saveFileName = savePath + "\\" + fileName + i + "." + imgType; /*---window---*/
String saveFileName = savePath + File.separator + fileName + i + "." + imgType;/*---linux---*/
PDPage page = (PDPage)pages.get(i);
pdfPage2Img(page, saveFileName, imgType);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (pdDocument != null) {
try {
pdDocument.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* pdf页转换成图片
*
* @param page
* @param saveFileName
* @throws IOException
*/
public void pdfPage2Img(PDPage page, String saveFileName, String imgType) throws IOException {
BufferedImage img_temp = page.convertToImage();
Iterator it = ImageIO.getImageWritersBySuffix(imgType);
ImageWriter writer = (ImageWriter) it.next();
ImageOutputStream imageout = ImageIO.createImageOutputStream(new FileOutputStream(saveFileName));
writer.setOutput(imageout);
writer.write(new IIOImage(img_temp, null, null));
}
public PDDocument pdfInfo(String filePath) throws IOException {
InputStream is = new BufferedInputStream(new FileInputStream(filePath));
PDFParser parser = new PDFParser(is);
parser.parse();
PDDocument pdDocument = parser.getPDDocument();
System.out.println("pageNum:" + pdDocument.getNumberOfPages());
return pdDocument;
}
public void createPdf() throws COSVisitorException, IOException {
PDDocument document = new PDDocument();
PDPage blankPage = new PDPage();
document.addPage(blankPage);
document.save("D:\\test.pdf");
document.close();
}
}
版权声明:本文为weixin_45652692原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。