Как сделать выпадающий список Acrofield в iText - PullRequest
0 голосов
/ 21 января 2020

Мне очень сложно найти информацию об акрополях в iText (до iText7). У меня уже есть некоторые поля Acrofields в таблице, но мне нужно сделать некоторые из них выпадающими.

В настоящее время у меня есть этот код:

Мой класс Acrofield:

class MyCellField implements PdfPCellEvent {
    protected String fieldname;
    public MyCellField(String fieldname) {
        this.fieldname = fieldname;
    }

    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 ioe) {
            throw new ExceptionConverter(ioe);
        } catch (final DocumentException de) {
            throw new ExceptionConverter(de);
        }
    }
}

И вот как я использую его в ячейке таблицы:

float[] widths = {20f, 80f};
PdfPTable table = new PdfPTable(widths);
table.setWidthPercentage(100f);
PdfPCell cell = new PdfPCell();
cell.setUseAscender(true);
cell.setUseDescender(true);
cell.setBorderWidthBottom(0.0f);
cell.setBorderWidthLeft(0.0f);
cell.setBorderWidthRight(0.0f);
cell.setBorderWidthTop(0.0f);

Paragraph ph = new Paragraph("Key:", TextUtilities.getInstance().SMALLBOLDFONT);
cell.addElement(ph);
table.addCell(cell);

cell = new PdfPCell();
cell.setUseAscender(true);
cell.setUseDescender(true);
cell.setBorderWidthBottom(0.5f);
cell.setBorderWidthLeft(0.0f);
cell.setBorderWidthRight(0.0f);
cell.setBorderWidthTop(0.0f);
cell.setCellEvent(new MyCellField(""));
ph = new Paragraph("", TextUtilities.getInstance().SMALLBOLDFONT);
cell.addElement(ph);
table.addCell(cell);
...