Добавить нижний колонтитул на последнюю страницу Migradoc - PullRequest
0 голосов
/ 30 декабря 2018

Мне нужно добавить нижний колонтитул в MigraDoc.Следующий код добавляет нижний колонтитул ко всем страницам.

Страница имеет заголовок, который должен отображаться на каждой странице.

 Document document = new Document();
 PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(false);
 Section HeaderSection = document.AddSection();
 HeaderSection.PageSetup.DifferentFirstPageHeaderFooter = false;

 MigraDoc.DocumentObjectModel.Shapes.Image image = HeaderSection.Headers.Primary.AddImage("../images/logo.jpg");
 image.Height = new Unit(65);
 image.Width = new Unit(150);
 image.LockAspectRatio = false;
 image.RelativeVertical = RelativeVertical.Line;
 image.RelativeHorizontal = RelativeHorizontal.Margin;

 Paragraph ParaHead1 = HeaderSection.AddParagraph();
 Parahead1.AddFormattedText("..dfg");
 Table table = HeaderSection.Footers.Primary.AddTable();
 table.Borders.Width = 0;

 Column column = table.AddColumn();
 column.Width =Unit.FromPoint(300);
 column.Format.Alignment = ParagraphAlignment.Left;
 Column column1 = table.AddColumn();
 column1.Width = Unit.FromPoint(200);
 column1.Format.Alignment = ParagraphAlignment.Left;
 Row row = table.AddRow();

 Cell cell = row.Cells[0];
 cell.AddParagraph("Regards,");
 cell = row.Cells[1];
 Paragraph para1 = cell.AddParagraph();
 para1.AddFormattedText("Support Team");

Мне нужно, чтобы таблица нижнего колонтитула отображалась только на последней странице.,

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

Содержимое на странице является динамическим.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Подход, который я использовал, заключался в добавлении флага в PageSetup в разделе.Флаг указывает движку заменять верхний и нижний колонтитул последней страницы на те, которые заданы ключевыми словами LastPageHeader и LastPageFooter.

Это пример раздела, поддерживающего верхний и нижний колонтитул последней страницы (в нем используется специальный синтаксис Migradoc / xml)., но поддерживается и с оригинальным mddl):

<Section>
      <Attributes>
          <PageSetup PageHeight="29.7cm" PageWidth="21cm" Orientation="Portrait" DifferentLastPageHeaderFooter="true"/>
      </Attributes>
      <LastPageHeader>
      ....
      </LastPageHeader>
      <LastPageFooter>
      ....
      </LastPageFooter>
  </Section>

Доступен форк, поддерживающий эту функцию: https://github.com/emazv72/MigraDoc
Обратите внимание, что LastPageHeader и LastPageFooter работают только с PDF, а не с RTF.

0 голосов
/ 31 декабря 2018

Нельзя использовать нижние колонтитулы MigraDoc для нижнего колонтитула только на последней странице.

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

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

Чтобы ответить на вопроскомментарий:

  • Чтобы нижний колонтитул располагался непосредственно под содержимым, просто добавьте его в основную часть в любой форме (таблица, абзац, ...)
  • Чтобы нижний колонтитул находился в абсолютном положении (например, с помощью TextFrame): я рекомендую добавить пустой текстовый абзац в основной текст (если необходимо), чтобы нижний колонтитул не перекрывался с основным;высота фиктивного абзаца будет высотой нижнего колонтитула, который перекрывается с основной областью тела документа
...