PPT在线预览 转换为图片实现方案 Apache POI 实现时踩坑:含嵌入文件ppt转换报错 ArrayStoreException

本文介绍了使用Apache POI将PPT转换为图片时遇到的挑战,包括中文乱码、处理嵌入文件导致的ArrayStoreException,以及转换效率问题。解决方案包括安装中文字体、升级xmlbeans版本和采用并发转换策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

背景:最近项目需要实现PPT预览功能,以及项目APP上浏览ppt,初步方案是ppt转为图片。

实现

1、ppt转为pdf,然后pdf转为图片

该种实现,先将ppt转为pdf文件,实现方式有很多,可参考之前文章 文档在线预览,将文档转为pdf

然后实现将pdf转为图片,实现方式有很多,这里介绍其中一种, apache pdfbox ,具体如下:

maven依赖:

            <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>fontbox</artifactId>
                <version>2.0.12</version>
            </dependency>
            <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>pdfbox</artifactId>
                <version>2.0.12</version>
            </dependency>

java代码:

        try {
            int dpi = 296;
            PDDocument pdDocument = PDDocument.load(new File("pdf file path"));
            PDFRenderer renderer = new PDFRenderer(pdDocument);
            int pageCount = pdDocument.getNumberOfPages();
            /* dpi越大转换后越清晰,相对转换速度越慢 */
            for (int i = 0; i < pageCount; i++) {
                File dstFile = new File("png file path");
                BufferedImage image = renderer.renderImageWithDPI(i, dpi);
                ImageIO.write(image, "png", dstFile);
            }
        }catch (Exception e){
            e.printStackTrace();
        }

转换之后,可自行添加finally对资源进行处理 

 

2、利用apache poi直接将ppt转为图片

上述方案中,有两步实现,先转pdf,再转图片。转pdf方案中,比较靠谱快速的方法可能需要依赖外部 liberoffice 或者 openoffice. 实现ppt预览,也可通过apache poi 将ppt直接转为图片

apache poi提供丰富的office操作api,可直接通过java代码读写操作excel sheet,表格,内容等。也可以直接操作ppt slider,插入,读取内容等。

talk is cheap, show my code

maven 依赖:

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>${appache.poi.version}</version>
            </dependency>
            <dependenc
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值