iTextSharp: SplitLate/SplitRows?

ActivePdf DocConverter - http://www.activepdf.com/

, Но это требует Office, установленного на сервере для преобразования хорошего качества.

13
задан Jason 1 September 2009 в 23:38
поделиться

2 ответа

Когда я работал с таблицами в iTextSharp, я нашел этот ресурс полезным:

Учебное пособие по iTextSharp - Глава 5: Таблицы

См. Раздел «Большие таблицы». Учебник включает в себя образец; Надеюсь, вы не видели этого раньше.

Я не помню, чтобы разделение таблиц по страницам было проблемой. Однако у меня была проблема: я хотел, чтобы отдельные строки могли занимать страницы. Для этого я установил для свойства SplitLate моего PdfPTable значение false.

Edit
Я проверил ваш код и сравнил его с моим. Я заметил большую разницу в том, что я не добавляю свой PdfPTable в свой документ , используя метод PdfPTable.WriteSelectedRows () . Вместо этого я называю документ ' s Add () , передавая мою PdfPTable со всеми наборами ячеек. (Кстати, мы загружаем наши PdfPCell аналогичным образом.) Интересно, является ли PdfPTable , записанный в документ через WriteSelectedRows () , вызывая вашу проблему.

Вы также можете увидеть, работает ли ваш код, если не добавите HeaderFooter .

3
ответ дан 1 December 2019 в 19:40
поделиться

Вы должны добавить таблицу в документ с помощью Document.Add () , если вы хотите автоматическое разделение строк по страницам. Тогда SplitLate и SplitRows будут работать должным образом.

  1. Когда SplitLate = true (по умолчанию), таблица будет разделена до следующая строка, которая не помещается на странице.
  2. Если SplitLate = false строка который не полностью помещается на странице, будет разделен.
  3. Когда SplitRows = true (по умолчанию) строка, которая не помещается на странице, будет разделена.
  4. Если SplitRows = false , строка будет опущена.

Итак,

  • SplitLate && SplitRows : строка, которая не помещается на странице, будет начата на следующей странице и в конечном итоге разделится, если она не помещается на этой странице.

  • SplitLate &&! SplitRows : строка, которая не помещается на страница будет запущена на следующей странице и пропущена, если она не умещается на этой странице.

  • ! SplitLate && SplitRows : строка, которая не помещается на странице, будет разделена и продолжена на следующей странице и разделите снова, если он слишком велик для следующей страницы.

  • ! SplitLate &&! SplitRows : Я немного не уверен насчет этого. Но из исходников похоже, что он такой же, как SplitLate &&! SplitRows: Строка, которая не умещается на странице, будет начата на следующей странице и опущена, если она не умещается и на этой странице.

Но что касается вашего вопроса: Document.Add () будет только можно использовать, если не требуется, чтобы стол был абсолютно позиционирован. Но похоже, что есть способ сделать это, добавив таблицу в ColumnText (на самом деле это объект ColumnText , который выполняет все разбиение таблицы), а затем полностью позиционируя этот ColumnText . Я еще не изучал это, но займусь, как только у меня будет немного больше времени :)

Add () будет использоваться только в том случае, если таблица не требует абсолютного позиционирования. Но похоже, что есть способ сделать это, добавив таблицу в ColumnText (на самом деле это объект ColumnText , который выполняет все разбиение таблицы), а затем полностью позиционируя этот ColumnText . Я еще не изучал это, но займусь, как только у меня появится немного больше времени :)

Add () будет использоваться только в том случае, если таблица не требует абсолютного позиционирования. Но похоже, что есть способ сделать это, добавив таблицу в ColumnText (на самом деле это объект ColumnText , который выполняет все разбиение таблицы), а затем полностью позиционируя этот ColumnText . Я еще не изучал это, но займусь, как только у меня появится немного больше времени :)

31
ответ дан 1 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: