使用Java将PDF文件转成图片

标签: java pdf 文件 | 发表时间:2016-11-16 03:13 | 作者:crabdave
出处:http://www.iteye.com

使用Java将PDF文件转成图片

 

import java.awt.Image;
import java.awt.Rectangle;
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;
import javax.swing.SwingUtilities;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

/**
 * Created by David on 2016/11/15.
 */
public class Pdf2Pic {

    public static void setup() throws IOException {
        // load a pdf from a byte buffer
        File file = new File("/Users/David/Downloads/testoss.pdf");
        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 = System.getProperty("user.dir")+File.separator+"pdfPicFile";

        //目录不存在,则创建目录
        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);



            FileOutputStream out = new FileOutputStream( getPdfFilePath+File.separator + i + ".jpg"); // 输出到文件流
                    System.out.println("成功保存图片到 :  " +getPdfFilePath+File.separator + i + ".jpg");

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(tag); // JPEG编码

            out.close();
        }

        // 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 {
                    Pdf2Pic.setup();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        });
    }

}

 

 

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

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

 





已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [java pdf 文件] 推荐:

java合并PDF

- - Java - 编程语言 - ITeye博客
15.         * * 合並pdf文件 * * @param files 要合並文件數組(絕對路徑如{ "e:\\1.pdf", "e:\\2.pdf" ,. 17.         * 合並後新產生的文件絕對路徑如e:\\temp.pdf,請自己刪除用過後不再用的文件請 * @return boolean.

使用Java将PDF文件转成图片

- - 编程语言 - ITeye博客
使用Java将PDF文件转成图片. System.out.println("页数: " + pdffile.getNumPages());. //目录不存在,则创建目录. FileOutputStream out = new FileOutputStream( getPdfFilePath+File.separator + i + ".jpg"); // 输出到文件流.

Java iText使用PDF模板生成PDF文档

- - CSDN博客综合推荐文章
我们系统需要生成一个可以打印的PDF文档,老板给了我一个Word文档,按照这个Word文档的格式生成PDF文档. 第一步:下载AdobeAcrobat DC,必须使用这个来制作from域. 第二步:使用AdobeAcrobat DC将Word导成PDF文档. 第三步:由于还要加水印的效果,所以还是使用AdobeAcrobat DC来添加水印,非常方便;.

iText 5.4.0 发布,Java 的 PDF 开发包

- - 开源中国社区最新新闻
iText 5.4.0 除了修复很多 bug 之外,主要是侧重于创建结构化的 PDF 文档,当使用 Document, Paragraph, PdfPTable 创建 PDF 时可自动进行标识,标识的 PDF 是更好支持 PDF/UA 和 PDF/A 兼容性的第一步. iText是一个非常著名的能够快速产生PDF文件的Java类库.

JAVA自动转换PDF文档为SWF文件类似豆丁和百度文库的效果并自动获取缩略图

- - CSDN博客推荐文章
JAVA自动转换PDF文档为SWF文件类似豆丁和百度文库的效果并自动获取缩略图. 该组件在 Windows 系统 和 linux 系统下面测试成功. 下载下面两个 JAR 文件放到工程的 LIB 里面,直接调用方法即可:.      * 生成首页图片.      * @param pdfpath PDF 文件的绝对路径.

Android下载并打开pdf文件

- - ITeye博客
下载并打开pdf文件,前提是手机上有可打开pdf文件的应用. System.out.println("我点击了按钮");. System.out.println("下载完成");. System.out.println("打开");. System.out.println("打开失败");. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

将PPT转化为PDF我的JAVA代码实现!

- - CSDN博客推荐文章
jacob的方法,足可以解决这个问题,但是我既然以前曾经做过报表,就想尝试不同的方法. JACOB是一座连接JAVA和微软的桥,所有的解析由微软解析. POI是没有微软解析的那么原汁原味的,所以如果要求高的话,还是使用JACOB. 大致思路很简单,将PPT先转化为图片,然后将图片写入PDF. 转化图片是用POI,操作PDF使用ITEX.

Java实现HTML页面转PDF解决方案

- - Java - 编程语言 - ITeye博客
首先,当然是找到能够解析PDF的完美组件,. 而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的. 而如果,大家像我这样已经有前人写好了HTML页面或者懒得写FreeMarker模板的话.

Java实现HTML代码生成PDF文档

- - 企业架构 - ITeye博客
1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源. 2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),开源. 3、PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体,商业.

java操作pdf制作电子签章 - CSDN博客

- -
java操作pdf制作电子签章. 电子签章,与我们所使用的数字证书一样,是用来做为身份验证的一种手段,泛指所有以电子形式存在,依附在电子文件并与其逻辑关联,可用以辨识电子文件签署者身份,保证文件的完整性,并表示签署者同意电子文件所陈述事实的内容. 一般来说,对电子签章的认定,都是从技术角度而言的. 主要是指通过特定的技术方案来鉴别当事人的身份及确保交易资料内容不被篡改的安全保障措施.