我正在使用 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
感谢您的帮助。谢谢。
答案 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”。