Migradoc TextFrame Page Break - Получить текущую позицию страницы - PullRequest
0 голосов
/ 02 мая 2019

У меня есть PDF-файл MigraDoc, который я генерирую, и у меня было требование иметь несколько «встроенных» таблиц, мне нужно было получить две таблицы в строке, поэтому после изучения этого я обнаружил, что TextFrames работает отлично ... Пока он не достиг конца страницы. Оказывается, TextFrames не распознают конец страницы:

enter image description here (TextFrame - это красные поля)

Итак, мне было интересно, придумал ли кто-нибудь еще что-нибудь для этого?

Я подумал, что если я смогу найти позицию «текущего местоположения», я мог бы рассчитать, если текстовый фрейм будет слишком высоким, а затем вручную вставить разрыв страницы - но я не могу найти «текущую позицию» - вероятно, потому что он не существует, пока пост рендеринга ??

Есть ли какой-нибудь способ получить отрисованную позицию по высоте "текущей строки" при кодировании или есть лучший / более простой способ сделать то, что я ищу?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Я нашел фрагмент кода, который возвращает текущую позицию, используя вид предварительного рендеринга:

    public double GetMigraHeightPosition()
    {
        MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(this.document);
        docRenderer.PrepareDocument();

        RenderInfo[] RenderInfos = docRenderer.GetRenderInfoFromPage(docRenderer.FormattedDocument.PageCount);
        RenderInfo r = RenderInfos[RenderInfos.Count() - 1];
        return r.LayoutInfo.ContentArea.Y + r.LayoutInfo.ContentArea.Height;
    }

Так что я использую это плюс высоту таблицы, чтобы проверить, больше ли это, чем активный размер страницы (размер страницы минус поля и колонтитулы). Кажется, уловка в том, что касается остановки разливания таблиц в нижний колонтитул ... У меня все еще есть проблема со второй таблицей в первом ряду, переходящей на следующую страницу ... ?? Понятия не имею, что там происходит?

0 голосов
/ 02 мая 2019

Позиции объекта определяются, когда документ «подготавливается» перед его обработкой. Если вы внесете изменения на этом этапе, вам придется заново подготовить документ.

Вы можете создавать таблицы с "невидимыми" ячейками. Вы можете создавать таблицы внутри таблиц, но внутренние таблицы не будут иметь разрывов страниц, поэтому убедитесь, что каждая вложенная таблица помещается на одной странице.
Смотри также:
https://stackoverflow.com/a/36304148/162529

...