我的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;
}
下图显示了目前的情况:
以下是我的期望:
答案 0 :(得分:0)
你说你想要这个:
换句话说,您需要多行文本字段。
你明白了:
这些是单行字段,这是正常的,因为您创建了这样的字段:
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示例。