import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
/**
* @author zly
* @since 2020/8/15 9:50
*/
public class Pdf2Image {
private final static Logger logger = LoggerFactory.getLogger(Pdf2Image.class);
/**
* pdf转PNG
*
* @param filePathAndName pdf文件地址
* @param imagePathAndName 图片路径
*/
public static String pdfToImage(String filePathAndName, String imagePathAndName) {
logger.info("-----------------------------pdf转PNG--------------------------------------");
long start = System.currentTimeMillis();
File file = new File(filePathAndName);
try (PDDocument doc = PDDocument.load(file)) {
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
for (int i = 0; i < pageCount; i++) {
// 第二个参数越大生成图片分辨率越高,转换时间也就越长
BufferedImage image = renderer.renderImage(i, 1.25f);
ImageIO.write(image, "PNG", new File(imagePathAndName));
}
long end = System.currentTimeMillis();
logger.info("------------------------pdf转PNG完成,用时:" + (end - start) + "ms--------------------------");
} catch (Exception e) {
logger.error("----------------------pdf转PNG失败,异常信息:" + e.getMessage() + "--------------------------");
}
return imagePathAndName;
}
}