1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 使用Java实现 PDF转换成图片(每一页保存为一张图片)

使用Java实现 PDF转换成图片(每一页保存为一张图片)

时间:2022-10-02 09:27:30

相关推荐

使用Java实现 PDF转换成图片(每一页保存为一张图片)

基于maven项目

1.引入jar包

<!-- /artifact/org.apache.pdfbox/pdfbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.21</version></dependency>

2.创建工具类

package com.telit.tpc.school.web.homework.web;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.rendering.PDFRenderer;import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;/*** @description: ${description}* @author: ssang* @create: /2/20 0020 11:13**/public class PdfUtil {/**** PDF文件转PNG图片* @param PdfFilePath pdf完整路径* @param dstImgFolder 图片存放的文件夹* @param dpi dpi越大转换后越清晰,相对转换速度越慢* @param flag 页数 为0则转换全部页数* @return*/public static List pdf2Image(String PdfFilePath, String dstImgFolder, int dpi,int flag) {List list = new ArrayList();File file = new File(PdfFilePath);PDDocument pdDocument;try {String imgPDFPath = file.getParent();int dot = file.getName().lastIndexOf('.');String imagePDFName = file.getName().substring(0, dot);String imgFolderPath = null;if (dstImgFolder.equals("")) {imgFolderPath = imgPDFPath ;} else {imgFolderPath = dstImgFolder;}if (createDirectory(imgFolderPath)) {pdDocument = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(pdDocument);int pages = pdDocument.getNumberOfPages();if(flag > 0) {//大于0则打印具体页数if(flag<pages) {pages = flag;}}StringBuffer imgFilePath = null;for (int i = 0; i < pages; i++) {//开始根据分页转换图片String imgFilePathPrefix = imgFolderPath+ File.separator+ imagePDFName;imgFilePath = new StringBuffer();imgFilePath.append(imgFilePathPrefix);imgFilePath.append("-");imgFilePath.append(i + 1);imgFilePath.append(".png");File dstFile = new File(imgFilePath.toString());BufferedImage bufferedImage = renderer.renderImageWithDPI(i, dpi);ImageIO.write(bufferedImage, "png", dstFile);//当前页的PDF转为图片结束//将图片转换成base64格式,并加入list,返回到页面InputStream in;byte[] data;in = new FileInputStream(dstFile);data = new byte[in.available()];in.read(data);BASE64Encoder encoder = new BASE64Encoder();String png_base64 = encoder.encode(data).trim();png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");in.close();//注意data后面的png,需要和文件格式相同,jpg文件就是jpglist.add("data:image/png;base64,"+png_base64);}}} catch (Exception e) {System.out.println("Exception");e.printStackTrace();}return list;}private static boolean createDirectory(String folder) {File dir = new File(folder);if (dir.exists()) {return true;} else {return dir.mkdirs();}}}

3.调用

public static void main(String[] args) {pdf2Image("E:\\工作\\test.pdf", "E:\\工作\\image", 300,0);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。