如何为 PdfWidgetAnnotation 设置字体名称和字体大小? - Java 的 iText 7.1.0
How do I set font name and font size for PdfWidgetAnnotation? - iText 7.1.0 for Java
"fName" 领域的 2 个代表现在工作正常。但我不知道如何为 2 个小部件设置字体名称和字体大小。没有字体 属性。我尝试了很多但没有成功。也许可以为文档和所有创建的小部件设置标准字体名称和字体大小?
感谢您的帮助!德克
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.forms.fields.PdfTextFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfWidgetAnnotation;
public class problem5 {
public static void main(String[] args) throws IOException {
String fnPdf = "results/problem5.pdf";
PdfWriter writer = new PdfWriter(fnPdf);
PdfDocument pdf = new PdfDocument(writer);
PdfPage page = pdf.addNewPage();
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
// field
PdfTextFormField field = PdfFormField.createText(pdf);
field.setFieldName("fName");
// widget 1
Rectangle rect1 = new Rectangle(40, 750, 150, 20);
PdfWidgetAnnotation widget1 = new PdfWidgetAnnotation(rect1);
widget1.makeIndirect(pdf);
widget1.setFlag(PdfAnnotation.PRINT);
page.addAnnotation(widget1);
field.addKid(widget1);
// widget 2
Rectangle rect2 = new Rectangle(240, 750, 150, 20);
PdfWidgetAnnotation widget2 = new PdfWidgetAnnotation(rect2);
widget2.makeIndirect(pdf);
widget2.setFlag(PdfAnnotation.PRINT);
page.addAnnotation(widget2);
field.addKid(widget2);
// field
field.setValue("Dirk");
form.addField(field, page);
// ----
pdf.close();
Desktop.getDesktop().open(new File(fnPdf));
}
}
iText7 目前不允许为单个文本字段的小部件配置不同的字体和字体大小。但是,如果具有相同的外观很好,那么您可以在设置值之前为字段本身设置字体和字体大小。这将传播到所有子窗口小部件。
PdfFont font = PdfFontFactory.createFont(StandardFonts.COURIER);
field.setFont(font);
field.setFontSize(5);
field.setValue("Dirk");
form.addField(field, page);
请注意,这不是字体名称本身,而是一个 PdfFont
实例。如果您尝试使用的字体不是标准字体之一,那么您必须在调用 PdfFontFactory.createFont
.
时指定字体文件的路径
"fName" 领域的 2 个代表现在工作正常。但我不知道如何为 2 个小部件设置字体名称和字体大小。没有字体 属性。我尝试了很多但没有成功。也许可以为文档和所有创建的小部件设置标准字体名称和字体大小?
感谢您的帮助!德克
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.forms.fields.PdfTextFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfWidgetAnnotation;
public class problem5 {
public static void main(String[] args) throws IOException {
String fnPdf = "results/problem5.pdf";
PdfWriter writer = new PdfWriter(fnPdf);
PdfDocument pdf = new PdfDocument(writer);
PdfPage page = pdf.addNewPage();
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
// field
PdfTextFormField field = PdfFormField.createText(pdf);
field.setFieldName("fName");
// widget 1
Rectangle rect1 = new Rectangle(40, 750, 150, 20);
PdfWidgetAnnotation widget1 = new PdfWidgetAnnotation(rect1);
widget1.makeIndirect(pdf);
widget1.setFlag(PdfAnnotation.PRINT);
page.addAnnotation(widget1);
field.addKid(widget1);
// widget 2
Rectangle rect2 = new Rectangle(240, 750, 150, 20);
PdfWidgetAnnotation widget2 = new PdfWidgetAnnotation(rect2);
widget2.makeIndirect(pdf);
widget2.setFlag(PdfAnnotation.PRINT);
page.addAnnotation(widget2);
field.addKid(widget2);
// field
field.setValue("Dirk");
form.addField(field, page);
// ----
pdf.close();
Desktop.getDesktop().open(new File(fnPdf));
}
}
iText7 目前不允许为单个文本字段的小部件配置不同的字体和字体大小。但是,如果具有相同的外观很好,那么您可以在设置值之前为字段本身设置字体和字体大小。这将传播到所有子窗口小部件。
PdfFont font = PdfFontFactory.createFont(StandardFonts.COURIER);
field.setFont(font);
field.setFontSize(5);
field.setValue("Dirk");
form.addField(field, page);
请注意,这不是字体名称本身,而是一个 PdfFont
实例。如果您尝试使用的字体不是标准字体之一,那么您必须在调用 PdfFontFactory.createFont
.