`
crabdave
  • 浏览: 1272520 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Java将PDF文件转成图片

    博客分类:
  • Java
 
阅读更多

使用Java将PDF文件转成图片

import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Created by David on 2016/11/15.
 */
public class Pdf2Pic {
    /**
     * 根据pdf文件拆分图片
     * @param ossKey
     * @param file
     * @return
     * @throws IOException
     */
    public static String splitPic(String ossKey,File file) throws IOException {
        // load a pdf from a byte buffer

        RandomAccessFile raf = new RandomAccessFile(file, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel
                .size());
        PDFFile pdffile = new PDFFile(buf);

        System.out.println("页数: " + pdffile.getNumPages());

        String getPdfFilePath = CheckResultConstances.PATH_PDF_PIC+ossKey;

        //目录不存在,则创建目录
        File p=new File(getPdfFilePath);
        if(!p.exists()){
            p.mkdir();
        }

        System.out.println("getPdfFilePath is  :"+getPdfFilePath);

        for (int i = 1; i <= pdffile.getNumPages(); i++) {
            // draw the first page to an image
            PDFPage page = pdffile.getPage(i);

            // get the width and height for the doc at the default zoom
            Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
                    .getWidth(), (int) page.getBBox().getHeight());

            // generate the image
            Image img = page.getImage(rect.width, rect.height, // width &
                    // height
                    rect, // clip rect
                    null, // null for the ImageObserver
                    true, // fill background with white
                    true // block until drawing is done
            );

            BufferedImage tag = new BufferedImage(rect.width, rect.height,
                    BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,
                    null);

            String dstName=getPdfFilePath+File.separator + i + ".jpg";
            FileOutputStream out = new FileOutputStream(dstName); // 输出到文件流
            System.out.println("成功保存图片到 :  " +getPdfFilePath+File.separator + i + ".jpg");
//
//            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//            encoder.encode(tag); // JPEG编码


            String formatName = dstName.substring(dstName.lastIndexOf(".") + 1);
            //FileOutputStream out = new FileOutputStream(dstName);
            //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            //encoder.encode(dstImage);
            ImageIO.write(tag, /*"GIF"*/ formatName /* format desired */ , new File(dstName) /* target */ );


            out.close();

        }
        return getPdfFilePath;

        // show the image in a frame
        // JFrame frame = new JFrame("PDF Test");
        // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // frame.add(new JLabel(new ImageIcon(img)));
        // frame.pack();
        // frame.setVisible(true);
    }

    public static void main(final String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                            File file = new File("/Users/David/Downloads/test.pdf");
                   new Pdf2Pic().splitPic("123",file);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        });
    }

}

  

 

pom.xml依赖配置(将附件中的该jar包上传到nexus内部仓库):

<dependency>
	<groupId>com.sun.pdfview</groupId>
	<artifactId>pdfrenderer</artifactId>
	<version>0.9.0</version>
</dependency>

 

参考:

https://my.oschina.net/shma1664/blog/270513

http://superich2008.iteye.com/blog/2047830

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics