C # iText длинный абзац в перекрытии ячейки таблицы

#c# #itext7

#c# #itext7

Вопрос:

Я использую iText версии 7 на C #. Я добавляю system.data.Данные, доступные для iText.Макет.Элемент.Таблица.

Моя проблема заключалась в том, что когда абзац в ячейке был длинным, 2-я строка абзаца «перекрывалась» с первой строкой. Я попытался установить высоту абзаца равной 12. Но это все равно не удается. Могу ли я узнать, как это исправить?

введите описание изображения здесь

 public void AddByTable(DataTable dbResult)
        {
            float[] columnWidths = { 25, 3, 3, 3 };
            Table table = new Table(UnitValue.CreatePercentArray(columnWidths)).UseAllAvailableWidth();
            //add header
            table.AddCell(_AddNewParagraph("Desc", padding: 1)) ;
            table.AddCell(_AddNewParagraph("DO", padding: 1));
            table.AddCell(_AddNewParagraph("Rec", padding: 1));
            table.AddCell(_AddNewParagraph("Var", padding: 1));

            table.SetKeepWithNext(true);
            var strItemDesc="";
            foreach (DataRow row in dbResult.Rows)
            {
                strItemDesc = row["vch_desc"].ToString();
                //table.AddCell(_AddNewParagraph(strItemDesc, padding: 1,fontSize:6));
                //table.AddCell(
                //    new Paragraph(strItemDesc)
                //    .SetFixedLeading(2.0f)
                //    .SetFont(_font)
                //    .SetFontSize(6)
                //    .SetPadding(1)
                //    );

                Cell c= new Cell();
                c.Add(
                    new Paragraph(strItemDesc)
                    .SetFixedLeading(2.0f)
                    .SetFont(_font)
                    .SetFontSize(6)
                    .SetPadding(1)
                    .SetHeight(12) //this height did no solve the overflow problem.
                    );
                table.AddCell(c) ;

                table.AddCell(_AddNewParagraph(row["DOQty"].ToString(), padding: 1, fontSize: 6));
                table.AddCell(_AddNewParagraph(row["RcvQty"].ToString(), padding: 1, fontSize: 6));
                table.AddCell(_AddNewParagraph(row["VAR"].ToString(), padding: 1, fontSize: 6));
            }

            _doc.Add(table);
        }
  

Ответ №1:

Вы используете

 .SetFixedLeading(2.0f)
  

который запрашивает именно то поведение, которое вы видите. Если вы не хотите, чтобы строки перекрывались, не устанавливайте начало в слишком маленьком значении.