pdf转ofd之移花接木

1.pdf转ofd的方法

1.1 spire.pdf.free

    这个是一个半开源的类库,免费版本的在转换的时候会有一个10的限制,所以不推荐使用,具体教程网上都有,这里只是分享有这么一个坑。

image-20250824140411498

1.2 ofdrw

    这个是个国产开源的类库,只不过它的更新处于停滞的状态,所依赖的pdfbox(2.x)的版本还比较低

    依赖如下:

<dependency>
   <groupId>org.ofdrw</groupId>
   <artifactId>ofdrw-converter</artifactId>
   <version>2.3.5</version>
</dependency>
<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>pdfbox</artifactId>
  <version>2.0.25</version>
</dependency>

    这种搭配可以正常使用

2.移花接木

    如果把pdfbox的版本升级到3.x那么ofdrw就会报错使用不了了,所以就需要修改ofdrw的源码兼容pdfbox3.x的api:

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

    先将ofdrw2.0.25中的org.ofdrw.converter.ofdconverter.PDFConverter类复制放到项目的src/main/java下:

image-20250824143807293

    需要改动的类的源码位置如下:

image-20250824142907907

    只需要将上面标红的那个api换成如下的代码:

PDDocument pdfDoc = Loader.loadPDF(FileUtil.readBytes(filepath.toFile()));

    FileUtil工具类是Hutool里面的引入Hutool的依赖就可以使用这个FileUtil工具类了,很方便,不用自己去写读取文件转byte数据的代码了。

3.总结

    这也是我在做项目的时候发现升级版本带来的坑,然后我就去翻源码,结果我在源码中找到了一个新的api,修改源码接上去就可以用了,亲测有效,希望我的分享对你有所帮助,请一键三连,么么么哒!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值