ActivePdf DocConverter - http://www.activepdf.com/
, Но это требует Office, установленного на сервере для преобразования хорошего качества.
Когда я работал с таблицами в iTextSharp, я нашел этот ресурс полезным:
Учебное пособие по iTextSharp - Глава 5: Таблицы
См. Раздел «Большие таблицы». Учебник включает в себя образец; Надеюсь, вы не видели этого раньше.
Я не помню, чтобы разделение таблиц по страницам было проблемой. Однако у меня была проблема: я хотел, чтобы отдельные строки могли занимать страницы. Для этого я установил для свойства SplitLate
моего PdfPTable
значение false.
Edit
Я проверил ваш код и сравнил его с моим. Я заметил большую разницу в том, что я не добавляю свой PdfPTable
в свой документ
, используя метод PdfPTable.WriteSelectedRows ()
. Вместо этого я называю документ
' s Add ()
, передавая мою PdfPTable
со всеми наборами ячеек. (Кстати, мы загружаем наши PdfPCell
аналогичным образом.) Интересно, является ли PdfPTable
, записанный в документ
через WriteSelectedRows ()
, вызывая вашу проблему.
Вы также можете увидеть, работает ли ваш код, если не добавите HeaderFooter
.
Вы должны добавить таблицу в документ с помощью Document.Add ()
, если вы хотите автоматическое разделение строк по страницам. Тогда SplitLate
и SplitRows
будут работать должным образом.
SplitLate = true
(по умолчанию), таблица будет разделена до
следующая строка, которая не помещается на странице. SplitLate = false
строка
который не полностью помещается на странице, будет разделен. SplitRows =
true
(по умолчанию) строка, которая не помещается на странице, будет разделена. SplitRows = false
, строка будет опущена. Итак,
SplitLate && SplitRows
: строка, которая не помещается на странице, будет начата на следующей странице и в конечном итоге разделится, если она не помещается на этой странице.
SplitLate &&! SplitRows
: строка, которая не помещается на страница будет запущена на следующей странице и пропущена, если она не умещается на этой странице.
! SplitLate && SplitRows
: строка, которая не помещается на странице, будет разделена и продолжена на следующей странице и разделите снова, если он слишком велик для следующей страницы.
! SplitLate &&! SplitRows
: Я немного не уверен насчет этого. Но из исходников похоже, что он такой же, как SplitLate &&! SplitRows: Строка, которая не умещается на странице, будет начата на следующей странице и опущена, если она не умещается и на этой странице.
Но что касается вашего вопроса: Document.Add ()
будет только можно использовать, если не требуется, чтобы стол был абсолютно позиционирован. Но похоже, что есть способ сделать это, добавив таблицу в ColumnText
(на самом деле это объект ColumnText
, который выполняет все разбиение таблицы), а затем полностью позиционируя этот ColumnText
. Я еще не изучал это, но займусь, как только у меня будет немного больше времени :)
ColumnText
(на самом деле это объект ColumnText
, который выполняет все разбиение таблицы), а затем полностью позиционируя этот ColumnText
. Я еще не изучал это, но займусь, как только у меня появится немного больше времени :) Add () будет использоваться только в том случае, если таблица не требует абсолютного позиционирования. Но похоже, что есть способ сделать это, добавив таблицу в ColumnText
(на самом деле это объект ColumnText
, который выполняет все разбиение таблицы), а затем полностью позиционируя этот ColumnText
. Я еще не изучал это, но займусь, как только у меня появится немного больше времени :)