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