java pdf转图片

<dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.19</version>
        </dependency>

        <dependency>
            <groupId>com.twelvemonkeys.imageio</groupId>
            <artifactId>imageio-jpeg</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>jbig2-imageio</artifactId>
            <version>3.0.2</version>
        </dependency>

        <dependency>
            <groupId>com.github.jai-imageio</groupId>
            <artifactId>jai-imageio-core</artifactId>
            <version>1.4.0</version>
        </dependency>

        <dependency>
            <groupId>com.github.jai-imageio</groupId>
            <artifactId>jai-imageio-jpeg2000</artifactId>
            <version>1.3.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox -->
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>fontbox</artifactId>
            <version>2.0.16</version>
        </dependency>
依赖包
public static List<String> pdfToImage(String pdfPath,int size) {
        List<String> list = new ArrayList<>();
        String imagePath;
        try {
            String fileName = pdfPath.substring(0, pdfPath.lastIndexOf("."));
            //图像合并使用参数
            // 总宽度
            int width = 0;
            // 保存一张图片中的RGB数据
            int[] singleImgRGB;
            int shiftHeight = 0;
            //保存每张图片的像素值
            BufferedImage imageResult = null;
            //利用PdfBox生成图像
            PDDocument pdDocument = PDDocument.load(new File(pdfPath));
            PDFRenderer renderer = new PDFRenderer(pdDocument);
            //循环每个页码
            for (int i = 0, len = pdDocument.getNumberOfPages(); i < len; i++) {
                if (i == size) {
                    break;
                }
                BufferedImage image = renderer.renderImageWithDPI(i, 105, ImageType.RGB);
                int imageHeight = image.getHeight();
                int imageWidth = image.getWidth();
                //计算高度和偏移量
                //使用第一张图片宽度;
                width = imageWidth;
                //保存每页图片的像素值
                imageResult = new BufferedImage(width, imageHeight, BufferedImage.TYPE_INT_RGB);
                //这里有高度,可以将imageHeight*len,我这里值提取一页所以不需要
                singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width);
                // 写入流中
                imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width);
                File f = new File(fileName);
                if (!f.exists()) {
                    f.mkdir();
                }
                imagePath = fileName + "/image" + i+1 + ".png";
                File file = new File(imagePath);
                if (!file.exists()) {
                    file.mkdir();
                }
                // 写图片
                ImageIO.write(imageResult, "png", new File(imagePath));
                list.add(imagePath);
            }
            pdDocument.close();

        } catch (Exception e) {

            e.printStackTrace();
        }
        return list;
        //OVER
    }
method
 

猜你喜欢

转载自www.cnblogs.com/changeEveryDay/p/12375804.html