使用 PDFBox - 2.0.2 更改 PDField 的字体颜色和背景颜色

Change font colour and background colour of PDField using PDFBox - 2.0.2

我正在使用 pdfbox-2.0.2,我想更改 PDField 字体的颜色。

我可以找到 pdfbox-1.8.0 的示例,但不能找到 pdfbox-2.0.2 的示例。

我正在使用以下代码获取 PDFields -

PDDocument doc = PDDocument.load(inputTemplateNameFile);
PDDocumentCatalog catalog = doc.getDocumentCatalog();
PDAcroForm form = catalog.getAcroForm();
List<PDField> acroFormfieldsTemplateList = form.getFields();

for(PDField field: acroFormfieldsTemplateList){
   if(field.getFullyQualifiedName().equals("TEST_FIELD_NAME")){
      field.setValue("TEST_TEXT");
   }
}

在上面的代码中我想改变TEST_TEXT的字体颜色。

使用的 Jar 文件 - pdfbox-2.0。2.jar pdfbox-app-2.0.2.jar

感谢您的帮助。谢谢。

您需要更改默认外观字符串。

PDVariableText field = (PDVariableText) form.getField("TEST_FIELD_NAME");
String da = field.getDefaultAppearance();
//TODO replace the color here
field.setDefaultAppearance(da);
field.setValue("TEST_TEXT");

上面的代码假定您的字段是文本字段,即 PDVariableText 类型。我还删除了您代码中的循环。那部分是不正确的,因为它 return 只有根字段(请参阅 getFields 的 javadoc)。

默认的外观字符串通常会有类似“/Helv 10 Tf 0 g”的内容,但也可以不同。所以要设置蓝色,你可以这样做:

da = "/Helv 10 Tf 0 0 1 rg";

"rg" 是 RGB 颜色的运算符。值介于 0 和 1 之间。"g" 是灰色的运算符。 0 是黑色,1 是白色。要使用中间值,您可以使用实数,例如"0.5".

如果想第一次更改PDField的字体颜色和背景颜色,可以用Adobe Acrobat Pro DC制作表格。例如,它允许为 PDFField 设置透明背景。

创建 pdf 后,您可以获取磁盘的 PDF 并将 PDFField 设置为您喜欢使用 PDFBox - 2.0.2 的 setValues。

PDDocument.load(new File("ModelosContratos/FormPDF/prueba.pdf")) // get PDFDocument
.getDocumentCatalog().getAcroForm() // get form of PDF
.getField("lessorName") // get field of form by its name
.setValue("Caridad");  // set value desired