java压缩pdf体积,图片体积

pdf整体进行压缩,图片进行压缩

java 复制代码
        // 生成主证书的PDF路径  创建一个文件
        String pdfPath = UploadDown.createFile(".pdf");
          outputStream = new FileOutputStream(pdfPath);
             bufferedOutputStream = new BufferedOutputStream(outputStream);
            writer = PdfWriter.getInstance(document, bufferedOutputStream);
            writer.setCompressionLevel(compressionLevel); // 压缩9
            writer.setFullCompression(); // 全面压缩

发现压缩力度不大,主要还是要对pdf中的图片进行压缩,我这里压缩图片的精度设置成2,具体根据你的业务逻辑来,

java 复制代码
 public static Image optimizeImage(String source) {
        // 这个自己调,如果图片过大,可以调小这个数字
        double quality = 0.2;
        try {
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            System.out.println("压缩图片路径:"+source);
            if (source.startsWith("http://") || source.startsWith("https://") || source.startsWith("ftp://")) {
                Thumbnails.of(new URL(source))
                        .scale(1)
                        .outputQuality(quality)
                        .toOutputStream(os);
            } else {
                Thumbnails.of(source)
                        .scale(1)
                        .outputQuality(quality)
                        .toOutputStream(os);
            }
            byte[] bytes = os.toByteArray();
            // 压缩后的图片用流接收
            Image image = Image.getInstance(bytes);
            return image;
        } catch (Exception e) {
            log.error("压缩图片失败", e);
            e.printStackTrace();
            throw new MyException("压缩图片失败"+e.getMessage());
        }
    }

压缩图片报错的话:

报错信息:javax.imageio.IIOException: Unsupported Image Type

是图片的格式对不上

添加下面的依赖试试:

XML 复制代码
     <!-- cmyk格式图片转换 -->
        <dependency>
            <groupId>com.twelvemonkeys.imageio</groupId>
            <artifactId>imageio-jpeg</artifactId>
            <version>3.3</version>
        </dependency>
        <dependency>
            <groupId>com.twelvemonkeys.imageio</groupId>
            <artifactId>imageio-tiff</artifactId>
            <version>3.3</version>
        </dependency>
相关推荐
胚芽鞘6813 分钟前
idea+vue3+mybatis+springBoot3前后端分离实现对一张表的增删改查(完整代码版)
java·ide·intellij-idea
studyer_domi18 分钟前
Matlab 分数阶PID控制永磁同步电机
开发语言·算法·matlab
六bring个六20 分钟前
C++双链表介绍及实现
开发语言·数据结构·c++
猫咪-952740 分钟前
数据库原理及应用mysql版陈业斌实验三
java·数据库·sql
帮帮志43 分钟前
PyCharm 开发工具 修改背景颜色
开发语言·python·青少年编程
异常君1 小时前
深入剖析 Java ReentrantLock:解锁显式锁的高级特性与实战应用
java·后端
一个天蝎座 白勺 程序猿1 小时前
Python(14)Python内置函数完全指南:从基础使用到高阶技巧
开发语言·python
张立龙6661 小时前
单链表各种操作实现(数据结构C语言多文件编写)
c语言·开发语言·数据结构
写bug写bug1 小时前
彻底搞懂如何通过 ZooKeeper 实现注册中心
java·后端·zookeeper
火山上的企鹅1 小时前
异形遮罩之QML中的 `OpacityMask` 实战
开发语言·qml·opacitymask