限制长度PdfPCellEvent

时间:2016-08-18 07:51:10

标签: java pdf itext

我的PDF表格中有一个表格,我使用了PdfpCellevent帮助程序在行中插入文本字段,但是我可以在文本字段中输入值,它只是流入单元格字段的不可见部分。

如何在itext中将pdfPcellevent中的长度限制为可见区域?

static class MyCellField implements PdfPCellEvent{
    public String fieldname;
    public MyCellField(String fieldname){
    this.fieldname= fieldname;
    }
    @Override 

  public void cellLayout(PdfPCell cell, Rectangle rectangle, PdfContentByte[] canvases) {
    final PdfWriter writer = canvases[0].getPdfWriter();
    final TextField textField = new TextField(writer, rectangle, fieldname);
    try {
        final PdfFormField field = textField.getTextField();
        writer.addAnnotation(field);
    } catch (final IOException | DocumentException ioe) {
        throw new ExceptionConverter(ioe);
    }
}
} 

  private static PdfPCell createPdfCell(String phrase, String eventValue){
        PdfPCell pdfCell = new PdfPCell();
        pdfCell.addElement(new Phrase(phrase, FontFactory.getFont(FontFactory.TIMES, 11)));
        pdfCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        pdfCell.setBorderColor(BaseColor.BLACK);
        pdfCell.setPadding(2);
        pdfCell.getFixedHeight();
        pdfCell.setCellEvent(new MyCellField(eventValue));
        pdfCell.setRowspan(3);
        return pdfCell;
}

下图显示了目前的情况:

enter image description here

以下是我的期望:

enter image description here

1 个答案:

答案 0 :(得分:0)

你说你想要这个:

enter image description here

换句话说,您需要多行文本字段。

你明白了:

enter image description here

这些是单行字段,这是正常的,因为您创建了这样的字段:

TextField textField = new TextField(writer, rectangle, fieldname);
PdfFormField field = textField.getTextField();

您应该创建这样的字段:

TextField textField = new TextField(writer, rectangle, fieldname);
textField.setOptions(TextField.MULTILINE);
PdfFormField field = textField.getTextField();

选项TextField.MULTILINE会将您的单行文字字段更改为多行文字字段。

请参阅official documentation了解更多multi line field示例。