【发布时间】:2017-11-25 13:26:03
【问题描述】:
我遇到了 PDFBOX 的问题。
所以我创建了一个简单的代码:
public class DelegationsPdf{
public Delegations getPDF(Delegations delegations) throws IOException{
PDDocument delegation = new PDDocument();
PDDocumentCatalog catalog = delegation.getDocumentCatalog();
PDAcroForm pdAcroForm = catalog.getAcroForm();
PDPage page = new PDPage();
delegation.addPage(page);
page = delegation.getPage(0);
PDPageContentStream content = new PDPageContentStream(delegation, page);
content.beginText();
content.setFont(PDType1Font.TIMES_ROMAN, 20);
content.setLeading(14.5f);
content.newLineAtOffset(275, 750);
content.showText("Delegations");
content.endText();
content.beginText();
content.newLineAtOffset(50 ,650);
content.setFont(PDType1Font.TIMES_ROMAN, 12);
content.showText("Worker:");
content.endText();
// FILL THE FIELD
content.beginText();
PDField name = pdAcroForm.getField(delegations.getName());
content.newLineAtOffset(100 ,650);
content.setFont(PDType1Font.TIMES_ROMAN, 12);
pdAcroForm.getFields().add(name);
content.endText();
content.close();
delegation.save("C:/delegation.pdf");
delegation.close();
return delegations;
}
所以请告诉我为什么注释字段“/填充字段”下的代码不能正常工作?它从我的代表团课程中获取有关姓名的信息。你能帮助我吗?当我运行它并单击按钮时,我遇到了 NULL 错误。
【问题讨论】:
-
当然是空的。
pdAcroForm.getField(delegations.getName());不会返回任何内容,因为您的文档没有任何字段。顺便说一句,您的代码令人困惑。 PDDocument 对象应命名为“document”或“delegationDocument”,而不是“delegation”。 PDField 应称为“字段”而不是“名称”。 -
我建议你看看svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/…,这里展示了如何创建一个表单。
-
pdfbox.apache.org/2.0/faq.html#fontencoding 。当前版本是 2.0.8。
-
@KonradP 请删除您的问题或自己回答,以避免孤儿。
-
您可以使用
setLeading()设置/更改该空间。