iText 5.0.0 обработка больших таблиц - PullRequest
0 голосов
/ 28 февраля 2019

Переходя прямо к точке

Я создаю большую таблицу, которая получает данные из бэкэнда.

Я использую Itextsharp 5.0.0.Невозможно выполнить обновление по определенным причинам

У меня есть родительская таблица, в которую я добавляю все таблицы как ячейку.

В родительскую таблицу я добавляю следующие свойства

SplitRowsк истине SplitLate к ложному KeepTogether к ложному

В дочерней таблице следующие свойства добавляются KeepTogether к ложному splitRows к ложному;// для некоторой таблицы После получения всех строк из другой функции, которая вызывается в основную таблицу, я применяю SetExtendedRow к false. Затем я добавляю эту таблицу в pdfdocument.

Структура основной таблицы

Main Table Structure

private PdfPTable mainTable()
{
   //PdfPTableHelper.Create-> Create Table without border
   //Create(1->Number of column)
   PdfPTable mainTable= PdfPTableHelper.Create(1);
   mainTable.KeepTogether = false;
   mainTable.SplitRows = true;
   mainTable.SplitLate = false;
   foreach(var part in parts)
   {
      ChildTable1(ref mainTable,part);
      ChildTable2(ref mainTable,part); 
      ChildTable3(ref mainTable,part);
   }
   mainTable.SetExtendedRow(false,false);
}
private PdfPTable ChildTable1(ref PdfPTable    mainTable,XElement part)
{
   PdfPTable childTable1 = PdfPTableHelper.Create(4);
   childTable1.KeepTogether = false;
   //CreatePdfCell(Value of the cell, font, number of column)
   childTable1.AddCell(CellHelper.CreatePdfCell("Cell1: "+part.Cell1.value,defaultFont,1));
   childTable1.AddCell(CellHelper.CreatePdfCell("Cell2: "+part.Cell2.value,defaultFont,3));
   childTable1.AddCell(CellHelper.CreatePdfCell("Cell3: "+part.Cell3.value,defaultFont,1));
   childTable1.AddCell(CellHelper.CreatePdfCell("Cell14 "+part.Cell4.value,defaultFont,3));
   childTable1.splitRows = false;//For some table
   mainTable.AddCell(childTable1);
}

Точно так же другие дочерние таблицы создаются и добавляются в основную таблицу

Все проблемы возникают, когда itext пытается отобразить таблицу в конце страницы.,Моя цель - контент может перетекать через страницу.Но не должно быть никакой потери данных.

Если мы не используем splitRows в false.В некоторых случаях мы теряем одну часть таблицы, как показано ниже

Data missing from row

На этом изображении вы видите, что содержимое cell2 с правой стороны переходит на следующую страницу. Но в конце страницы первая часть PdfPRow пропущена. Itext полностью игнорирует это и переходит к следующей части строки, отображает ее в начале следующей страницы.

Почему это происходит?Я устал от поиска не может получить какую-либо соответствующую информацию Если мы применяем splitRow -> false к этой таблице, полная строка будет перенаправлена ​​на следующую страницу.Сохраняя значительное количество места на последней странице, что не в порядке.

image false">

У меня есть вопросы ниже

  1. В чем недостатокsplitLate -> false, происходит ли потеря данных из-за этого, если да, как этого избежать, у меня не может быть пробелов на страницах.

  2. Какое свойство следует применить к родительской таблице, чтобыон сохраняет все дочерние таблицы без изменений.Не приводит к потере данных.

Я знаю, что Itext 5.0.0 вроде как мертв.Но я ничего не могу сделать в моем случае, чтобы обновить его до последней версии.

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