2016-08-18 6 views
0

У меня есть таблица в моей PDF-форме, и я использовал помощник PdfpCellevent для вставки текстовых полей в строки, однако я могу вводить значения в текстовое поле, и он просто перетекает в невидимую часть поле ячейки.Предельная длина PdfPCellEvent

Как можно ограничить длину видимой области в pdfPcellevent в itext?

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

+0

Пожалуйста, покажите нам свой код и ожидаемое поведение. –

+0

Возможно, вы используете 'ColumnText.showTextAligned()' вместо создания 'ColumnText', установив размер столбца, добавив контент и используя метод' go() '. Я согласен с Алексеем. Вы не должны ожидать более сложного ответа, если вы не укажете какой-либо код. –

+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 примеров.

+0

Спасибо, это сработало! @BrunoLowagie –

Смежные вопросы