【Java】修改生成的PDF的表格中文字的字体

背景

需求是修改PDF中某些字的颜色

 

解决方法

  1. 现有代码用的是com.itextpdf依赖,因此查看此依赖中是否有设置的方法
  2. 发现setFieldProperty()方法

 

首先导入依赖(如果已经导入则不需要导入,本项目版本是5.5.10)

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.10</version>
 </dependency>

  

使用setFieldProperty()方法

  第一个参数是表格名字:表格名字可以用Adobe Acrobat DC这个软件打开PDF查看。

  第二个参数是修改这个表格的什么属性:textcolor指的是文本颜色。

  第三个参数是修改这个表格第二个参数的值:第三个参数要求BaseColor类型

  第四个参数传空即可

我需要将表格的文本改为灰色,因此如下编写该方法

// fileName
String fileName = "abc.pdf";
//填充创建pdf
PdfReader reader = new PdfReader("/pdf模板的路径");
// 创建生成pdf的目录
String root = dyhCfgProperties.getDyhTempPath();
if (!new File(root).exists()) {
    new File(root).mkdirs();
}
//取出报表模板中的所有字段
PdfStamper stamp = new PdfStamper(reader, Files.newOutputStream(new File(root, fileName).toPath()));
AcroFields form = stamp.getAcroFields();
……
……
form.setFieldProperty("${表格名字}","textcolor", BaseColor.LIGHT_GRAY, null);

附录:

setFieldProperty()的doc注释

 

posted @ 2023-06-25 16:14  onejay  阅读(497)  评论(0)    收藏  举报