我想利用iText7的PdfFontFactory库;但是,我不能再使用FontConstants(即FontConstants.COURIER)。这些常量已被标记为已弃用,但我找不到应该用其替换的常量。
该程序使用iText7(库也使用slf4j)。我尝试创建自己的字体,但这利用了Font类,我不确定应从哪里导入常量(第一次尝试是java.awt,该方法不起作用)。我还尝试为参数设置自己的值,并且尝试使用代码中前面看到的无参数版本。我从iText教程中获得了以下代码和常量:https://itextpdf.com/en/resources/books/itext-7-jump-start-tutorial-java/chapter-5-manipulating-existing-pdf-document
PdfDocument pdfDoc = null;
try {
pdfDoc = new PdfDocument(new PdfReader(sourcePDF), new PdfWriter(destPDF));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
PdfAnnotation ann = new PdfTextAnnotation(new Rectangle(400, 795, 0, 0))
.setTitle(new PdfString("iText"))
.setContents("Please, fill out the form.");
pdfDoc.getFirstPage().addAnnotation(ann);
PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage());
canvas.beginText().setFontAndSize(
PdfFontFactory.createFont(), 12)
.moveText(265, 597)
.showText("I agree to the terms and conditions.")
.endText();
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
Map<String, PdfFormField> fields = form.getFormFields();
fields.get("language").setValue("English");
fields.get("experience1").setValue("Yes");
fields.get("experience2").setValue("Yes");
fields.get("experience3").setValue("Yes");
fields.get("shift").setValue("Any");
PdfFont courier = PdfFontFactory.createFont(FontConstants.COURIER);
fields.get("info")
.setValue("I was 38 years old when I became a 007 agent.", courier, 7);
pdfDoc.close();
使用此代码运行时,我没有得到任何错误,但是由于不推荐使用的值,eclipse会引发一些警告。
答案 0 :(得分:1)
itext已弃用原始的FontConstants.java,并将所有与字体相关的常量移动到了 com.itextpdf.io.font.constants ,因此您可以使用以下选项代替FontConstants.java。
https://api.itextpdf.com/iText7/7.1.2/com/itextpdf/io/font/constants/StandardFontFamilies.html
https://api.itextpdf.com/iText7/7.1.2/com/itextpdf/io/font/constants/StandardFonts.html
答案 1 :(得分:0)
您现在可以使用 StandardFonts 而不是 FontConstants。
PdfFont courier = PdfFontFactory.createFont(StandardFonts.COURIER);