Поле со списком не отображается в распечатанном PDF - PullRequest
3 голосов
/ 01 октября 2019

Я пытаюсь добавить ComboBox к ячейке в моем печатном PDF-файле, используя iTextSharp, однако он не отображается в созданном PDF-файле. Вместо этого то, что распечатывается, это просто пустая ячейка без выпадающего списка.

Я не совсем уверен, что является причиной этого, но теперь я довольно сильно озадачен. Я следил за другими примерами в Интернете, как в здесь, здесь , однако я не смог воспроизвести его.

Одна вещь, которую я должен отметить, версия iTextSharp, которую мы используем, это 1.4.3это порт iTextSharp 4.1.6, который сделал его совместимым с ядром .net, поэтому я не уверен, что причиной этого является более старая версия.

Это мой текущий код. Что я делаю неправильно?

if (_dropDownCol)
{
    PdfFormField selectGroup = PdfFormField.CreateEmpty(_Writer);
    String[] options = { "Choose first option", "Choose second option", "Choose third option" };
    String[] exports = { "option1", "option2", "option3" };
    var comboBox = new PdfPCell();
    comboBox.CellEvent = new SelectCellEvent(GetTaskDropDownValueID(task, digitalDocument), selectGroup, Orientation, "combo1", exports, options);
    comboBox.MinimumHeight = 20;
    taskArea.AddCell(comboBox);
}

и SelectedCellEvent

public class SelectCellEvent : IPdfPCellEvent
{
    private string _ID { get; set; }
    protected PdfFormField selectGroup;
    protected String name;
    protected String[] exports;
    protected String[] options;
    protected BaseFont font;
    private int _Rotation { get; set; }

    public SelectCellEvent(string id, PdfFormField selectGroup, PDFOrientation orientation, string name, string[] exports, string[] options)
    {
        _ID = id;
        this.selectGroup = selectGroup;
        this.name = name;
        this.exports = exports;
        this.options = options;
        font = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
        _Rotation = orientation == PDFOrientation.Portrait ? 0 : 90;
    }

    public void CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)
    {
        position.Left = position.Left + cell.PaddingLeft;
        PdfWriter writer = canvases[0].PdfWriter;
        TextField tf = new TextField(writer, position, _ID);
        tf.BorderStyle = PdfBorderDictionary.STYLE_BEVELED;
        tf.BorderColor = BaseColor.Gray;
        tf.ChoiceExports = exports;
        tf.Choices = options;
        tf.Alignment = Element.ALIGN_CENTER;
        selectGroup.AddKid(tf.GetComboField());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...