В сгенерированных iText7 таблицах PDF отсутствует нижняя граница - PullRequest
0 голосов
/ 01 марта 2019

В настоящее время я использую C # для создания PDF с таблицами данных внутри, но я столкнулся с проблемой, когда у всех моих таблиц нет нижней границы.

Например, Missing Bottom Border

Я совершенно уверен, что проблема здесь заключается в том, что метод table.Complete (), заданный библиотекой iText7, не используется, но при использовании этого метода возвращается ошибка, сообщающая System.NullReferenceException: «Ссылка на объект не установлена ​​наэкземпляр объекта.что сбивает меня с толку, потому что без этого метода моя таблица генерируется прекрасно в PDF, кроме как без нижней границы.Я попытался просмотреть документацию по iText7 и, возможно, просто ослеп, но не уверен, является ли это проблемой с кодом или моим непониманием при использовании таблиц в iText7.

Пример кода его генерации перед этимдобавлен в PDF

/* Test Table */
            Paragraph glueTitle = new Paragraph("Test");
            glueTitle.SetFontSize(15);
            glueTitle.SetTextAlignment(TextAlignment.CENTER);
            DataTable glueData = sql.loadGlue();
            cellArrList = new List<Cell[]>();
            headerInfo = new string[]
            {
                "Sensitive Info Placeholder"
            };
            Table glueTable = new Table(headerInfo.Length, true);
            glueTable.SetTextAlignment(TextAlignment.CENTER);
            glueTable.SetFontSize(8);
            for (int i = 0; i < headerInfo.Length; i++)
            {
                Cell cell = new Cell();
                cell.SetBackgroundColor(WebColors.GetRGBColor("dodgerblue"));
                cell.SetFontColor(WebColors.GetRGBColor("white"));
                cell.SetBold();
                cell.Add(new Paragraph(headerInfo[i]));
                glueTable.AddHeaderCell(cell);
            }
            foreach (DataRow row in glueData.Rows)
            {
                Cell[] cellArr = new Cell[headerInfo.Length];
                for (int i = 0; i < headerInfo.Length; i++)
                {
                    int x = i;
                    cellArr[i] = new Cell();
                    cellArr[i].SetBorderBottom(new SolidBorder(1f));
                    if (i == 2)
                        x = 3;
                    else if (i == 3)
                        x = 2;
                    cellArr[i].Add(new Paragraph(row[x + 1].ToString()));
                }
                if (row[2].ToString().Replace(" ", "") != "")
                {
                    cellArr[1].SetBackgroundColor(ColorPickerPDF(CompareNumbers(length, row[2].ToString(), 1)));
                    cellArr[2].SetBackgroundColor(ColorPickerPDF(CompareNumbers(length, row[3].ToString(), 0)));
                    cellArr[3].SetBackgroundColor(ColorPickerPDF(CompareNumbers(width, row[4].ToString(), 1)));
                    cellArr[4].SetBackgroundColor(ColorPickerPDF(CompareNumbers(width, row[5].ToString(), 0)));
                    if (selection[1].Equals("1"))
                        cellArr[6].SetBackgroundColor(ColorPickerPDF(row[7].ToString().Equals("5")));
                    else
                        cellArr[6].SetBackgroundColor(WebColors.GetRGBColor("MediumSeaGreen"));
                }
                cellArrList.Add(cellArr);
            }
            foreach (Cell[] cellArr in cellArrList)
            {
                foreach (Cell cell in cellArr)
                {
                    glueTable.AddCell(cell);
                }
            }

1 Ответ

0 голосов
/ 01 марта 2019

Я обнаружил ошибку в этом, я не знал о необходимости добавлять мои элементы pdf в элемент документа перед тем, как делать какие-либо добавления к нему, и .Complete (), возвращающий ноль, был результатом этого.Я оставлю здесь свой вопрос для будущих пользователей, которым нужна ссылка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...