kkFileView优化PDF图片预览增加JPEG2000标准图片支持

在使用kkFileView预览PDF时遇到部分包含JPEG2000图片的PDF显示空白的问题。为解决此问题,需要添加相关依赖并优化图片转换为异步多线程处理,同时对加载失败的图片进行重试,以确保PDF的正确预览。
摘要由CSDN通过智能技术生成

前言

项目在使用 kkFileView 时接到反馈说部分 PDF 在预览时没有内容,显示空白图片。
查看官方issue也发现很多类似问题,但是也没有详尽好用的解决办法。

仅仅修改依赖增加特殊标准图片的处理会降低页面打开速度,因为图片转换操作比较耗时,所以我们还需要把图片转换操作改成异步并使用多线程去增加转换效率。

下面介绍一下如何更好地处理这个 PDF 特殊图片解析问题。

项目修改

  1. 依赖添加。
    PDF 以图片模式预览时无内容是因为包含 JPEG2000 标准的图片,而 kk 并没有添加此类图片的解析依赖,所以我们要在pom.xml添加相关依赖,这个与网上搜到的方法大致相同。

<dependency>
   <groupId>com.github.jai-imageio</groupId>
   <artifactId>jai-imageio-core</artifactId>
   <version>1.3.1</version>
</dependency>
<dependency>
   <groupId>org.apache.pdfbox</groupId>
   <artifactId>jbig2-imageio</artifactId>
   <version>3.0.2</version>
</dependency>
<dependency>
   <groupId>com.github.jai-imageio</groupId>
   <artifactId>jai-imageio-jpeg2000</artifactId>
   <version>1.3.0</version>
</dependency>
  1. 图片转换代码优化。
    接到转换请求之后根据线程数及 PDF 总页数分配图片转换任务给每个线程,已经转换完成的页码不会重复转换。

/**
*  pdf文件转换成jpg图片集
* @param pdfFilePath pdf文件路径
* @param pdfName pdf文件名称
* @param baseUrl 基础访问地址
* @return 图片访问集合
*/
public List<String> pdf2jpg(String pdfFilePath, String pdfName, String baseUrl) {
   
   List<String> imageUrls = new ArrayList<>();
   Integer imageCount = this.getConvertedPdfImage(pdfFilePath);
   String imageFileSuffix = ".jpg";
   String pdfFolder = pdfName.substring(0, pdfName.length() - 4);
   String urlPrefix;
   try
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定喵君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值