0%

我们使用 apache 的 pdfbox 工具,来处理 pdf。在把 pdf 转图片时,会遇到如下一些问题。

1
WARN 8776 --- [           main] o.a.pdfbox.pdmodel.font.PDType0Font      : No Unicode mapping for CID+3585 (3585) in font DJXXII+PingFangSC-Regular

这个应该是找不到字体,不过是 WARN 级别,在这里可以不用太在意。我找到很多方法,也没能解决掉这个警告。

处理字体时,需要加入以下依赖。

1
2
3
4
5
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.19</version>
</dependency>
1
ERROR 8776 --- [           main] o.a.p.contentstream.PDFStreamEngine      : Cannot read JBIG2 image: jbig2-imageio is not installed

需要添加如下依赖:

1
2
3
4
5
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jbig2-imageio</artifactId>
<version>3.0.3</version>
</dependency>
1
ERROR 9074 --- [           main] o.a.p.contentstream.PDFStreamEngine      : Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed

需要添加如下依赖:

1
2
3
4
5
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-jpeg2000</artifactId>
<version>1.3.0</version>
</dependency>

jai-imageio-jpeg2000 会依赖相同版本的 jai-imageio-core,但我们可以使用最新版本的 jai-imageio-core

1
2
3
4
5
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>

查如下代码,User 实体类有5个属性,如果属性再多一些,每次赋值时就非常麻烦。

1
2
3
4
5
6
User user = new User();
user.setId(0L);
user.setName("");
user.setAge(0);
user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(LocalDateTime.now());

如果使用 IntelliJ IDEA 的话,则可以安装 GenerateAllSetter 插件,一键生成所有 Setter 方法。

把光标放在 user 上面,然后使用快捷键 alt + enter

选择 Generate all setter with default value 就可以了,非常方便。

在 IntelliJ IDEA 中,如果方法体很长,这时想查看方法有哪些出口,可以这样操作:

Windows:

把光标放在 return 上面,再按 ctrl + shift + F7