PDFBox转图片问题汇总

1. Pdfbox介绍

pdfbox是一款Apache的开源工具,可以进行对pdf进行操作,如题,转图片也包含在里面,还有添加、删除、编辑pdf页,提取文字等功能。对于基本语法可参考官网,这里不再讲解基础,只列出一些问题。

官网:https://pdfbox.apache.org/

2. 依赖

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

我们在转化过程中可能会遇到转换缺失等问题,请加上以下依赖:
(1) jpegerror的异常

<dependency>
    <groupId>com.twelvemonkeys.imageio</groupId>
    <artifactId>imageio-jpeg</artifactId>
    <version>3.4.2</version>
</dependency>

(2) ERROR: Cannot read JBIG2 image: jbig2-imageio is not installed

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>jbig2-imageio</artifactId>
    <version>3.0.2</version>
</dependency>

(3) Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-core</artifactId>
    <version>1.4.0</version>
</dependency>

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-jpeg2000</artifactId>
    <version>1.3.0</version>
</dependency>

3. 常见问题

  • (1)为何我的图片转的那么慢?
    如果您的目标图片是PNG图片,这种图片不易失真,如果PDF本身体积就大,或者图片色彩鲜艳,用ImageIO.write时,可能会消耗1~2秒(看文件本身),并且CPU会消耗的非常高。

  • (2)如何解决上面的问题呢?
    官方提供了两种方法,renderImage和renderImageWithDPI 。前者第二个参数是浮点型,可以放大倍数。后者貌似是按照像素来转化。由于我们公司要求的比较高,前者放大5~7倍,和后者设置DPI为350~400的效果差不过,后者速度更快。

  • (3)生产环境中,为什么和我本地转化出来的图片不同?
    生产环境一般用Linux主机,当然Linux主机也有自己的字体,我们一般开发环境用的是Windows自带的字体文件。

    我们的做法是,直接把Windows下的字体(C:\Windows\Fonts)文件移动到Linux下(可行)。

#cd /usr/share/fonts/   // 进入系统自带的字体目录
#mkdir myfonts  // myfonts 是你自己随便取得文件夹名字
#将字体文件拷贝到这个文件夹下,在cd /usr/share/fonts/目录下执行以下命令
#mkfontscale   
#mkfontdir
#fc-cache -fv           //更新字体缓存
#source /etc/profile    // 执行以下命令让字体生效
#fc-list    // 查看系统中所有得字体,可用于测试是否安装字体成功

参考:
https://blog.csdn.net/u014155085/article/details/86077614

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 9,078评论 0 7
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,907评论 1 32
  • 小虫外公阅读 1,841评论 0 0
  • 很久没回家了,回到家中的我有种久违的轻松,我对自己职业的寒暑假有种满足感,又可以与父母一起享受一段平常又踏...
    雪中韩阅读 2,713评论 0 4
  • 下载简书APP已经有很长时间了,要说具体时间,还真是有点记不得了。当初,下载APP还是在网上搜索哪些软件即...
    瓜胖子阅读 1,558评论 0 10

友情链接更多精彩内容