• 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);
            } 
        }
  • 相关阅读:
    javascript 解析json数据
    解析 对象列表的JSON数据 []、[{}] 中括号
    # 指针
    # 栈内存和堆内存
    # Linux学习笔记
    # jsp及servlet学习笔记
    # Git学习笔记
    # Excel批量处理数据
    # 数学建模算法
    # VsCode 配置C++调试运行
  • 原文地址:https://www.cnblogs.com/yjfengwen/p/2841719.html
Copyright © 2020-2023  润新知