2012-10-15 2 views
4

Я использую Migradoc для создания некоторых PDF-файлов. У меня есть код для создания таблицы текста для каждого элемента в массиве, и я печатаю страницы с этими таблицами.Как определить, будет ли таблица Migradoc разделена на две страницы?

Однако требования, которые мне даны, это то, что если у меня есть 2 таблицы, а вторая таблица не будет помещаться на странице из-за длины первой таблицы, мне нужна вторая таблица, чтобы начать следующую страницу. Затем мне нужно повторить это для каждой таблицы, которую я добавляю в свой документ.

Как бы я это сделал?

ответ

5

Если все таблицы являются достаточно маленькими, чтобы соответствовать одной странице, тогда существует простое решение: установите свойство KeepWith первой строки для подсчета числа минус один, чтобы сохранить всю таблицу на одной странице.

Если таблицы не всегда соответствуют одной странице: вы можете попробовать взломать, например. установка KeepWith на 6 или 8 или 10 (зависит от высоты строк таблицы). Если значение близко к тому, что подходит для одной страницы (без перехода), таблицы будут начинаться на новой странице автоматически.
Очевидно, что это будет работать очень хорошо, если строки таблицы имеют постоянную высоту; если строки строк имеют разную высоту, это не будет работать надежно, но все равно будет препятствовать таблицам, которые будут иметь только одну или две строки на первой странице (это не ваше требование, но, возможно, это требование можно обсудить?).

Чистый (но сложный) способ выполнить ваши требования: получить доступ к внутреннему методу GetRenderInfoFromPage. Вам нужно будет начать инкрементный процесс:
1) визуализировать документ;
2) если вы найдете раздвоение таблицу, вставить разрыв страницы перед этой таблицы и повторите с 1
Смотрите также здесь:
http://forum.pdfsharp.net/viewtopic.php?p=1960#p1960

+0

Каждая таблица должна быть не более 3/4ths на странице, поэтому KeepWith свойство должно быть достаточным. Я отмечу это как ответ, как только смогу, наконец, проверить его! – KallDrexx

+0

Работает отлично, спасибо! – KallDrexx

Смежные вопросы