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

时间:2016-08-22 14:59:51

标签: java pdfbox

我正在使用 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

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:3)

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

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”。