java代码实现生成pdf缩略图

java代码抓取pdf部分文件生成缩略图(50%)

0. 参考博文:

java代码获取pdf文件第一页作为封面缩略图
通过BufferedImage实现将几张图片合成一张图片,图片效果类型为依次排列图片

1. 导入依赖

<!-- 生成pdf预览图的相关依赖包 -->
<dependency>
    <groupId>org.icepdf.os</groupId>
    <artifactId>icepdf-core</artifactId>
    <version>6.1.2</version>
    <exclusions>
        <exclusion>
            <groupId>javax.media</groupId>
            <artifactId>jai-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency> 

2. 具体实现如下

/**
 * pdf预览的方法
 *
 * @param inputFile  pdf位置
 * @param outputFile 图片存放位置
 */
public static void generatePdfImage(URL inputFile, String outputFile) {
    org.icepdf.core.pobjects.Document document = null;

    try {
        float rotation = 0f;
        //缩略图显示倍数,1表示不缩放,0.5表示缩小到50%
        float zoom = 1f;

        document = new org.icepdf.core.pobjects.Document();
        document.setUrl(inputFile);
        FileOutputStream out = new FileOutputStream(new File(outputFile));
        Image image1 = document.getPageImage(0, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, zoom);
        int halfPages = (document.getPageTree().getNumberOfPages()) / 2;

        // 每张图片宽度一样, 高度一样
        int width = image1.getWidth(null);
        int height = image1.getHeight(null) * halfPages;// 每张图片高度 * 图片数量
        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics graphics = bufferedImage.createGraphics();
        int heightSum = 0;
        for (int i = 0; i < halfPages; i++) {
            Image image = document.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, zoom);
            int imageHeight = image.getHeight(null);
            graphics.drawImage(image, 0,heightSum,width,imageHeight,null);// 绘制合成图片
            heightSum += imageHeight;
        }
        graphics.dispose();
        // 将绘制的图片生成至输出流
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        encoder.encode(bufferedImage);
        // 关流
        out.close();

    } catch (Exception e) {
        log.debug("生成pdf缩略图失败");
    }
}

3. 生成效果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值