Как я могу определить, будет ли таблица Migradoc разделена на две страницы?

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

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

Как бы я поступил так?

1 ответ

Решение

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

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

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

Другие вопросы по тегам