java -- 将PDF文件的首页提取为图片

由于最近在做一个图书分享的应用,需要将PDF格式书籍的首页提取出来作为一张图片来展示。于是在网上找了一些文章和开源的工具。其中个人感觉总结的比较好的:http://www.oschina.net/question/250267_41156 

 

对于文章中介绍的几种开源工具,我只用过pdfbox和icepdf。我最开始用的是pdfbox,但是问题就在于pdfbox对于稍微大点的文件,比较容易发生内存溢出,网上的解释为其会将整个pdf都加载到内存中,对于我只取其中首页来说,有点不太合适。于是后来我选择了icepdf,基本上,这个工具挺不错的,转换速度也挺快,而最为重要的一点就是我还没遇到过内存溢出的情况。不过,如果需要对文件进行索引的话,还是pdfbox会比较好些,其集成了Lucene.

 

pdfbox官网:http://pdfbox.apache.org/

icepdf官网:http://www.icepdf.org/

 

我这里使用的是icepdf,导入icepdf相关jar,编写程序如下:

    /**
     * 生成一本书的缩略图
     * @param inputFile        需要生成缩略图的书籍的完整路径
     * @param outputFile    生成缩略图的放置路径
     */
    public void generateBookIamge(String inputFile, String outputFile) {
        Document document = null;
        
        try {
            float rotation = 0f;
            //缩略图显示倍数,1表示不缩放,0.5表示缩小到50%
            float zoom = 0.8f;
            
            document = new Document();
            document.setFile(inputFile);
             // maxPages = document.getPageTree().getNumberOfPages();
            
            BufferedImage image = (BufferedImage)document.getPageImage(0, GraphicsRenderingHints.SCREEN, 
                        Page.BOUNDARY_CROPBOX, rotation, zoom);
            
            Iterator iter = ImageIO.getImageWritersBySuffix("jpg");
            ImageWriter writer = (ImageWriter)iter.next();
            
            FileOutputStream out = new FileOutputStream(new File(outputFile));
            ImageOutputStream outImage = ImageIO.createImageOutputStream(out);
            
            writer.setOutput(outImage);
            writer.write(new IIOImage(image, null, null));
        
        } catch(Exception e) {
            log.warn("to generate thumbnail of a book fail : " + inputFile);
            log.warn(e);
        } 
    }

 

 

 

转载于:https://www.cnblogs.com/yjfengwen/archive/2013/01/01/2841719.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值