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

Java 使用PDFBox-2.0.2更改PDField的字体颜色和背景颜色,java,pdfbox,Java,Pdfbox,我正在使用pdfbox-2.0.2,我想更改PDField字体的颜色 我可以找到pdfbox-1.8.0的示例,但无法找到pdfbox-2.0.2的示例 我使用以下代码获取PDF字段- PDDocument doc = PDDocument.load(inputTemplateNameFile); PDDocumentCatalog catalog = doc.getDocumentCatalog(); PDAcroForm form = catalog.getAcroForm(); List&

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

我可以找到pdfbox-1.8.0的示例,但无法找到pdfbox-2.0.2的示例

我使用以下代码获取PDF字段-

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");
   }
}
PDDocument doc=PDDocument.load(inputTemplateNameFile);
PDDocumentCatalog=doc.getDocumentCatalog();
PDAcroForm form=catalog.getAcroForm();
List acroFormfieldsTemplateList=form.getFields();
用于(PDField字段:acroFormfieldsTemplateList){
if(field.getFullyQualifiedName().equals(“TEST\u field\u NAME”)){
字段设置值(“测试文本”);
}
}
在上面的代码中,我想更改测试文本的字体颜色

使用的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类型。我还删除了代码中的循环。这部分是不正确的,因为它只返回根字段(请参阅getFields的javadoc)

默认外观字符串通常包含“/Helv 10 Tf 0 g”之类的内容,但也可能不同。因此,要设置为蓝色,可以执行以下操作:

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

“rg”是RGB颜色的运算符。这些值介于0和1之间。“g”是灰色的运算符。0为黑色,1为白色。要在值之间使用,请使用实数,例如“0.5”。

顺便说一句,如果使用pdfbox-app-2.0.2.jar,则不需要pdfbox-2.0.2.jar。方法名称略有不同-String da=field.getDefaultAppearance();字段设置默认外观(da);更改方法名称后,它工作了。