Java使用icepdf将pdf文件按页转成图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013024120/article/details/53584520

Java使用icepdf将pdf文件按页转成图片


  • Maven icepdf包,这里过滤掉jai-core
<dependency>
    <groupId>org.icepdf.os</groupId>
    <artifactId>icepdf-core</artifactId>
    <version>6.1.2</version> 
    <exclusions>
        <exclusion>
            <groupId>javax.media</groupId>
            <artifactId>jai-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 代码如下
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;

import org.apache.commons.logging.LogFactory;
import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;


public class test20160929 {
    public static final String FILETYPE_JPG = "jpg";

    /**
     * 
     * 将指定的pdf文件转换为指定路径的图片
     * 
     * @param filepath 原文件路径,例如d:/test/test.pdf
     * 
     * @param imagepath 图片生成路径,例如 d:/test/
     * 
     * @param zoom 缩略图显示倍数,1表示不缩放,0.3则缩小到30%
     * 
     */
    public static void tranfer(String filepath, String imagepath, float zoom) throws PDFException, PDFSecurityException, IOException {
        Document document = null;
        float rotation = 0f;
        document = new Document();
        document.setFile(filepath);
        int maxPages = document.getPageTree().getNumberOfPages();

        for (int i = 0; i < maxPages; i++) {
            BufferedImage img = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, zoom);
            Iterator iter = ImageIO.getImageWritersBySuffix(FILETYPE_JPG);
            ImageWriter writer = (ImageWriter) iter.next();
            File outFile = new File(imagepath + new File(filepath).getName() + "_" + new DecimalFormat("000").format(i) + "." + FILETYPE_JPG);
            FileOutputStream out = new FileOutputStream(outFile);
            ImageOutputStream outImage = ImageIO.createImageOutputStream(out);
            writer.setOutput(outImage);
            writer.write(new IIOImage(img, null, null));
        }
        System.out.println("转换完成");
    }

    public static void main(String[] args) throws PDFException, PDFSecurityException, IOException {
        tranfer("d:/test/test.pdf", "d:/test/", 1);
    }
}

猜你喜欢

转载自blog.csdn.net/u013024120/article/details/53584520