iText 4 - группируйте / храните ряды вместе, чтобы предотвратить неправильную упаковку - PullRequest
0 голосов
/ 23 января 2020

Я работаю над отчетом в формате PDF в Java. Мне нужно использовать библиотеку iText 4 (старая версия!) Для создания таблиц (PdfPTable) внутри класса Document. Однако данных много, поэтому я хотел иметь строку заголовка на каждой странице для указанной таблицы. Прежде чем вы начнете читать, это лучшее объяснение: Проблемы с таблицей

В PdfPTable есть метод setHeaderRows (X), который повторяет первые X строк на каждой странице. Это замечательно, однако приводит к двум основным проблемам:

  1. Если одна таблица начинается после другой, иногда остается только место только для заголовка таблицы - остальные данные перемещаются на следующую страницу. Однако, если я установлю setHeaderRows, то следующая страница начинается с того же заголовка таблицы. Таким образом, я получаю заголовок на первой странице и заголовок и данные на второй странице.

  2. Последняя строка таблицы состоит из строки Summary (с colspan). Может возникнуть ситуация, когда на следующую страницу перемещается только строка «Сводка», и, как я уже упоминал, столбец заголовка повторяется на каждой странице. Поэтому я получил строку заголовка и сводку (с colspan). Это плохо, потому что раздел сводки не относится к заголовкам таблицы. Это только итоговое значение.

Я хотел бы сгруппировать / сохранить строки, которые я указал на прикрепленном экране. Как я могу это сделать? Я думаю, что последний iText имеет метод keepRowsTogether, но я должен использовать iText4. Я мог бы поместить эти две строки во внутреннюю таблицу, а внутреннюю таблицу поместить в последнюю / первую строку. Это решение подходит для последней строки, но если я хочу повторить первую строку (заголовок), оно не будет работать.

...