MigraDoc Абсолютное расположение текстового фрейма нижнего колонтитула к нижнему краю страницы

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

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

Я пытался :

  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());
    }

person Bex    schedule 10.06.2019    source источник


Ответы (1)


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

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

person I liked the old Stack Overflow    schedule 11.06.2019
comment
установка fr.WrapFormat.Style = WrapStyle.Through; заставляет его идти вниз, но часть моей таблицы уходит со страницы. верхняя часть wrapformat.distance, похоже, ничего не меняет. Как его немного поднять? - person Bex; 11.06.2019