使用pdfbox实现pdf转image

使用soffice的命令把pdf转image的话,默认只能转一页的,这个有点费劲,于是也不打算沿用soffice的方案了,改用pdfbox来实现。

maven

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.4</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox-tools</artifactId>
            <version>2.0.4</version>
        </dependency>

转换

public static List<BufferedImage> convertToImage(File file) throws IOException {
        PDDocument document = PDDocument.load(file);
        PDFRenderer pdfRenderer = new PDFRenderer(document);
        List<BufferedImage> bufferedImageList = new ArrayList<>();

        for (int page = 0;page<document.getNumberOfPages();page++){
            BufferedImage img = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
            bufferedImageList.add(img);
        }
        document.close();

        return bufferedImageList;
    }

concat

public static BufferedImage concat(BufferedImage[] images) throws IOException {
        int heightTotal = 0;
        for(int j = 0; j < images.length; j++) {
            heightTotal += images[j].getHeight();
        }

        int heightCurr = 0;
        BufferedImage concatImage = new BufferedImage(images[0].getWidth(), heightTotal, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = concatImage.createGraphics();
        for(int j = 0; j < images.length; j++) {
            g2d.drawImage(images[j], 0, heightCurr, null);
            heightCurr += images[j].getHeight();
        }
        g2d.dispose();

        return concatImage;
}

小结

这样基本就大功告成了,不足的地方是性能太低,有待优化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近在做一个Web项目,需要用户把Word上传然后展示到页面,但是Word在线浏览的功能不及PDF,因此需要将Wo...
    GISerliang阅读 77,279评论 20 26
  • Html转Pdf(Image)的方案应该很多,这里介绍的是docker的一个微服务的方式,利用了工具wkhtmlt...
    biaoqianwo阅读 9,751评论 0 4
  • 最近项目中新增了一个分享pdf文件的的功能,把一个界面以pdf文件的形式分享出去,刚开始接触pdf,没一点思路,各...
    幽城88阅读 4,398评论 0 0
  • 尼玛我怎么想起来我们在南京东大街往坐地铁方向走的路上,那是一条丁字路,走到头了,就像我们的感情也走到头了…… 尼玛...
    乔文亮阅读 1,706评论 0 0
  • 这是我半年前写的文章,那时还是冬天,现在已经是夏天了。小妍的故事没有下文,他们就真的这么分开了,各自天涯。我们听过...
    公子念北冥有鱼其名为鲲阅读 4,216评论 0 0

友情链接更多精彩内容