以相同的方式创建 2 个 PdfSignatureFormFields,我在 Adobe Reader 中以不同方式显示了 2 个字段:一个带有指示签名字段的小图片,另一个没有指示。
我使用 Cell setNextRenderer 调用来创建这些字段,如下一个提取所示:
static private Cell createSignatureFieldCell(PdfDocument document, String name, String label, PdfFont font) {
Cell cell = new Cell();
cell.setHeight(100);
cell.setNextRenderer(new SignatureCellEvent(cell,name,label));
return cell;
}
static private class SignatureCellEvent extends CellRenderer
{
protected String fieldname;
protected String labelcontent;
public SignatureCellEvent(Cell modelElement, String fieldname,String label) {
super(modelElement);
this.fieldname=fieldname;
this.labelcontent=label;
}
@Override
public void draw(DrawContext drawContext)
{
float x = getOccupiedAreaBBox().getLeft() ;
float y = (getOccupiedAreaBBox().getTop() + getOccupiedAreaBBox().getBottom()) / 2;
PdfDocument doc=drawContext.getDocument();
PdfAcroForm form=PdfAcroForm.getAcroForm(doc, true);
Rectangle rect = new Rectangle(x, y - 10, 50, 50);
PdfSignatureFormField field = PdfFormField.createSignature(doc,rect);
field.setFieldName(fieldname);
field.setRequired(true);
form.addField(field);
}
}