zoukankan      html  css  js  c++  java
  • 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();
                }
            }
    
    
    }
  • 相关阅读:
    《大数据——大价值、大机遇、大变革》试读
    div+csS中的一些技巧和浏览器兼容的办法
    js正则表达式
    布局 IE haslayout
    几个好的网站
    ie6 几个li上下排列会闪动的问题,嵌套div—外层div内层div都设置背景颜色,内层div背景色不显示的问题
    live()解决Jquery采用append添加的元素事件无效和获取不到添加元素的值
    SQL语句写返回一天内的纪录,得到一周内星期几的时间
    网易邮箱添加附件功能原理浅析转
    实体类序列化
  • 原文地址:https://www.cnblogs.com/haciont/p/10592692.html
Copyright © 2011-2022 走看看