我编写了一个简单的代码来编辑 pdf 中表单的内容。一切正常(新的 pdf 是用修改后的形式创建的),但是抛出了一个关于字体的奇怪异常。这是我的代码:
try {
PDDocument pdfDoc = PDDocument.load("/home/giozh/universita/schedepazienti.pdf");
PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField("dx1");
if (field != null) {
field.setValue("asd");
} else {
System.err.println("No field found with name:" + "applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
}
pdfDoc.save("/home/giozh/universita/schedepazienti1.pdf");
pdfDoc.close();
} catch (IOException ex) {
Logger.getLogger(Prove.class.getName()).log(Level.SEVERE, null, ex);
} catch (COSVisitorException ex) {
Logger.getLogger(Prove.class.getName()).log(Level.SEVERE, null, ex);
}
这是例外:
Grave: error while creating a font
java.io.IOException: Cannot create font as /SubType is not set.
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:88)
at org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:203)
at org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.getFontAndUpdateResources(PDAppearance.java:439)
at org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.setAppearanceValue(PDAppearance.java:268)
at org.apache.pdfbox.pdmodel.interactive.form.PDVariableText.setValue(PDVariableText.java:131)
at prove.Prove.main(Prove.java:37)
(第 37 行是我调用 setValue() 方法的地方)我该如何解决?