MigraDoc Абсолютное позиционирование текстового фрейма нижнего колонтитула по краю нижней страницы - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно выровнять свой нижний колонтитул по абсолютному низу каждой страницы и охватить всю страницу.

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

Я пытался:

  fr.Top =  *any number*; 
  fr.Top = ShapePosition.Bottom;

Ни один из них не вызывает его движение вообще

 fr.RelativeVertical = RelativeVertical.Page;

Это делает его идеально расположенным сверху, но мне нужно его внизу

Я думаю, что мне нужно смещение, но я не знаю, как его применить, так как свойство top делаетничего для меня.

Настройка моей страницы выглядит следующим образом:

        section.PageSetup.PageFormat = PageFormat.A4;
        section.PageSetup.OddAndEvenPagesHeaderFooter = true;

        AddFooter(ref section);

        section.PageSetup.LeftMargin = "1 cm";
        section.PageSetup.TopMargin = "1 cm";
        section.PageSetup.RightMargin = "1 cm";
        section.PageSetup.BottomMargin = "1 cm";

        section.PageSetup.HeaderDistance = "1 cm";
        section.PageSetup.FooterDistance = "0 cm";

С Addfooter, как это:

 public static void AddFooter(ref Section section)
    {
        Unit pageWidth = GetWidth(section);<- custom function

        TextFrame fr = new TextFrame();
        var footerTable = fr.AddTable();

      ~~footer table info here~~

        fr.Width = new Unit(pageWidth);
        fr.MarginLeft = new Unit(4);//set as 4 because for some reason it as
       sitting slightly to the left

         /**
      SET BOTTOM POSITION HERE
        **/

     fr.RelativeHorizontal = RelativeHorizontal.Page;//This makes it sit to the left of the page

        section.Footers.Primary.Add(fr.Clone());
        section.Footers.EvenPage.Add(fr.Clone());
    }

1 Ответ

0 голосов
/ 11 июня 2019

Не устанавливайте свойство Top TextFrame, установите вместо него свойство WrapFormat.DistanceTop.Также установите для свойства WrapFormat.Style значение WrapStyle.Through.
См. Также: https://forum.pdfsharp.net/viewtopic.php?p=6922#p6922

AFAIK. Вам не нужно устанавливать свойство MarginLeft для фрейма, если вы устанавливаете свойство Rows.LeftIndent.таблицы в 0. По умолчанию таблицы имеют отрицательный отступ, поэтому текст в таблицах выравнивается по тексту вне таблиц.

...