码迷,mamicode.com
首页 > 其他好文 > 详细

利用 ICEpdf 快速实现 pdf 文件预览功能

时间:2016-04-16 23:14:59      阅读:555      评论:0      收藏:0      [点我收藏+]

标签:

之前工作中,需要实现一个在线预览pdf的功能,一开始用的的 jQuery-media 插件来实现的,后来感觉有点慢,就继续寻找更好的替代品,直到遇见了 ICE pdf。。。

ICEpdf (官网:http://www.icesoft.org/java/home.jsf) 原理是基于 Java SE 中的 Swing 实现的 (谁说 Swing 没有用武之地了。。。) ,将一个 PDF 文件作为一个 Document 对象,调用封装的方法,将该文件的每一页生成一张图片!

关键代码如下:

public static void main(String[] args) {
        String filePath = "test.pdf";

        // open the file
        Document document = new Document();
        try {
            document.setFile(filePath);
        } catch (PDFException e) {
            System.out.println("parsing PDF document failure" + e);
        } catch (PDFSecurityException e) {
            System.out.println("encrytion not supported " + e);
        } catch (IOException e) {
            System.out.println("IOException " + e);
        }

        // save page captures to file
        float scale = 2.0f;
        float rotation = 360f;

        // Paint each pages content to an image and write the image to file
        System.out.println("The number of page: " + document.getNumberOfPages());
        for (int i = 0; i < 5; i++) {
            BufferedImage image = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.PRINT, Page.BOUNDARY_TRIMBOX, rotation, scale);
            try {
                System.out.println("capturing page: " + i);
                File file = new File("imageCapture_" + i + ".png");
                ImageIO.write(image, "png", file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            image.flush();
        }
        // clean up resources
        document.dispose();


    }

我的 jar 包用的是 icepdf-core-6.0.0.jar ,技术分享

首先,声明一个 Document 对象,调用 setFile(String filePath) 方法,参数为 pdf 绝对或者相当路径;

变量 scale 代表放缩比例,默认为 1,越大生成的图片越清晰;

变量 rotation 为旋转角度,360度一个周期,可以设置任意值试试;

然后调用 getPageImage() 方法,生成图片流,然后对图片进行处理,可以输出到本地,也可以以流的形式传到页面,实现快速预览的效果。

技术分享

最后,我利用这个功能,在首次预览时,生成对应页码图片到本地或者服务器,第二次预览则直接查看图片,使得用户体验更好~

利用 ICEpdf 快速实现 pdf 文件预览功能

标签:

原文地址:http://www.cnblogs.com/JavaSubin/p/5399546.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!