• Java PDF转图片


    maven依赖:

          <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>pdfbox</artifactId>
                <version>2.0.4</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.lowagie</groupId>
                <artifactId>itext</artifactId>
                <version>2.1.7</version>
            </dependency>    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.rendering.PDFRenderer;
    
    import com.lowagie.text.pdf.PdfReader;
    public class test1 {
    
        public static void main(String[] args) {
                pdf2Image("D:/1.pdf", "D:/pdf", 130);
            }
    
            /***
             * PDF文件转PNG图片,全部页数
             *
             * @param PdfFilePath pdf完整路径
             * @param imgFilePath 图片存放的文件夹
             * @param dpi dpi越大转换后越清晰,相对转换速度越慢
             * @return
             */
            public static void pdf2Image(String PdfFilePath, String dstImgFolder, int dpi) {
                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 + File.separator + imagePDFName;// 获取图片存放的文件夹路径
                    } else {
                        imgFolderPath = dstImgFolder + File.separator + imagePDFName;
                    }
    
                    if (createDirectory(imgFolderPath)) {
    
                        pdDocument = PDDocument.load(file);
                        PDFRenderer renderer = new PDFRenderer(pdDocument);
                    /* dpi越大转换后越清晰,相对转换速度越慢 */
                        PdfReader reader = new PdfReader(PdfFilePath);
                        int pages = reader.getNumberOfPages();
                        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(String.valueOf(i + 1));
                            imgFilePath.append(".png");
                            File dstFile = new File(imgFilePath.toString());
                            BufferedImage image = renderer.renderImageWithDPI(i, dpi);
                            ImageIO.write(image, "png", dstFile);
                        }
                        System.out.println("PDF文档转PNG图片成功!");
    
                    } else {
                        System.out.println("PDF文档转PNG图片失败:" + "创建" + imgFolderPath + "失败");
                    }
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            private static boolean createDirectory(String folder) {
                File dir = new File(folder);
                if (dir.exists()) {
                    return true;
                } else {
                    return dir.mkdirs();
                }
            }
    
    
    }
  • 相关阅读:
    整理15款实用javascript富文本编辑器
    深度选择器
    字帖工具 免费打印 生成pdf
    说说市场经济
    看windows变化的感想
    观念总结
    Bittly 不只是一个串口调试助手
    [POI2013] SPAWalk 引理证明
    JAVA基础之泛型
    macaca,request,unitest,flask 框架介绍和理解
  • 原文地址:https://www.cnblogs.com/haciont/p/10592692.html
Copyright © 2020-2023  润新知