Rowspan с iTextSharp не работает должным образом - PullRequest
3 голосов
/ 14 октября 2010

Я пытаюсь создать простую таблицу с iTextSharp, так же с C #.Целью является таблица, подобная этой:

Проблема в том, что если я применяю rowspan как 2 к ячейке A, iTextSharp не рендерит ячейку с разметкой строк, это означает, чтоячейка имеет одинаковую высоту ячейки B. Вот код:

    PdfPTable corporateTable = new PdfPTable(2);
    corporateTable.HeaderRows = 1;
    corporateTable.TotalWidth = pdfWidth - 50;

    PdfPCell vCell = new PdfPCell();
    vCell.Border = Rectangle.BOX;
    vCell.Rowspan = 2;
    vCell.Phrase = new Phrase("A", new Font(fontLh, 7f, 1, BaseColor.BLACK));
    corporateTable.CompleteRow();
    corporateTable.AddCell(vCell);


    PdfPCell vCellx = new PdfPCell();
    vCellx.Phrase = new Phrase("B", new Font(fontLh, 7f, 1, BaseColor.BLACK));
    vCellx.Colspan = 3;
    corporateTable.AddCell(vCellx);

    PdfPCell vCell1 = new PdfPCell();
    vCell1.Phrase = new Phrase("C", new Font(fontValue, 7f, 0, BaseColor.BLACK));
    corporateTable.AddCell(vCell1);

    corporateTable.WriteSelectedRows(0, -1, 100f, 100f, writer.DirectContent);
    document.Close();

Что не так?Я использую последнюю версию DLL.

Ответы [ 3 ]

4 голосов
/ 14 октября 2010

Ну, основной ответ: это работает!если вы добавите еще две ячейки, вы увидите, что одна ячейка (расположенная под буквой А) не заполнена.

Но это не то, что вы ожидаете (как, впрочем, и я).Для достижения желаемого результата используйте вложенные таблицы, это означает:

  • создать таблицу с двумя столбцами
  • вставить ячейку A в таблицу
  • создать ячейку 2
  • создать еще одну таблицу с 1 столбцом
    • вставить ячейку B в таблицу 2
    • вставить ячейку c в таблицу 2
  • вставить таблицу 2 вячейка 2

для поиска itext rowspan, вы найдете несколько полностью напечатанных примеров.

hth

Mario

0 голосов
/ 28 января 2019

Проблема в

vCellx.Colspan = 3; 

Используйте

vCellx.Colspan = 1; 

, потому что вы объявили таблицу pdf с двумя столбцами.Вы уже добавили один столбец со строкой 3, поэтому у вас есть только один столбец, а не три столбца

0 голосов
/ 08 мая 2014

Я думаю, что это будет работать.Попробуйте удалить следующие строки кода:

corporateTable.CompleteRow();
...
vCellx.Colspan = 3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...