MigraDoc headers 和页脚
MigraDoc headers and footers
我正在使用 MigraDoc 创建一个 PDF,我希望第一页并且只有第一页有页脚,并且每个后续页面(但不是第一页)都有 header。我已经用 DifferentFirstPageHeaderFooter
进行了试验,但它没有给我我需要的结果。我知道该设置有一些组合,以及添加 header 和页脚的正确位置,但我不知道是什么。我的代码基于 MigraDoc 发票样本。封面是一节,然后文档的其余部分是带分页符的一节。也许我需要把它分成每页一个部分?感谢您的任何提示。
编辑
我要显示 header,但似乎有比我正在做的更好的方法。页脚根本没有显示。这是我添加它们的地方:
Document document = new Document();
Section section = document.AddSection();
section.PageSetup.DifferentFirstPageHeaderFooter = true;
Paragraph paragraph = section.Footers.Primary.AddParagraph();
paragraph.AddFormattedText(ReportName, TextFormat.Bold);
paragraph.AddText("\nCreated on ");
paragraph.AddFormattedText(CreateDate, TextFormat.Bold);
paragraph.AddFormattedText("\n" + Properties.Length, TextFormat.Bold);
paragraph.AddText(" Records");
paragraph.AddFormattedText("\n" + TurnoverPercent, TextFormat.Bold);
paragraph.AddText(" Turnover Rate");
paragraph.Format.Font.Size = 10;
paragraph.Format.Alignment = ParagraphAlignment.Center;
// Later, in a different method...
Section section = document.AddSection();
// Header image
Image image = section.Headers.Primary.AddImage(filename);
image.Height = "2.5cm";
image.LockAspectRatio = true;
image.RelativeVertical = RelativeVertical.Line;
image.RelativeHorizontal = RelativeHorizontal.Margin;
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.WrapFormat.Style = WrapStyle.Through;
image = section.Headers.FirstPage.AddImage(filename);
image.Height = "2.5cm";
image.LockAspectRatio = true;
image.RelativeVertical = RelativeVertical.Line;
image.RelativeHorizontal = RelativeHorizontal.Margin;
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.WrapFormat.Style = WrapStyle.Through;
我尝试将页脚段落添加到 Primary 和 FirstPage,但似乎没有什么不同。 DifferentFirstPageHeaderFooter
只适用于部分,对吧,不是整个文档?
DifferentFirstPageHeaderFooter
就是你所需要的。
可能您的代码不正确 - 是的,我们希望看到一些代码。我们如何在没有看到您的代码的情况下为您提供帮助?
每个部分一页的许多部分都可以工作 - 但这不是 MigraDoc 的使用方式。
嗯,我已经弄明白了。 DifferentFirstPageHeaderFooter
似乎不仅适用于您设置它的部分,而且适用于每个部分。一旦我在每个部分适当地设置它,我的两个问题都解决了,页眉和页脚出现在我想要的地方。这是更新后的代码。
Section section = document.AddSection();
section.PageSetup.DifferentFirstPageHeaderFooter = true;
Paragraph paragraph = section.Footers.FirstPage.AddParagraph();
paragraph.AddFormattedText(ReportName, TextFormat.Bold);
paragraph.AddText("\nCreated on ");
paragraph.AddFormattedText(CreateDate, TextFormat.Bold);
paragraph.AddFormattedText("\n" + Properties.Length, TextFormat.Bold);
paragraph.AddText(" Records");
paragraph.AddFormattedText("\n" + TurnoverPercent, TextFormat.Bold);
paragraph.AddText(" Turnover Rate");
paragraph.Format.Font.Size = 10;
paragraph.Format.Alignment = ParagraphAlignment.Center;
// Later, in a different method...
Section section = document.AddSection();
// Need to do this even though we've never set this field on this section
section.PageSetup.DifferentFirstPageHeaderFooter = false;
// Header image
Image image = section.Headers.Primary.AddImage(filename);
image.Height = "2.5cm";
image.LockAspectRatio = true;
image.RelativeVertical = RelativeVertical.Line;
image.RelativeHorizontal = RelativeHorizontal.Margin;
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.WrapFormat.Style = WrapStyle.Through;
我正在使用 MigraDoc 创建一个 PDF,我希望第一页并且只有第一页有页脚,并且每个后续页面(但不是第一页)都有 header。我已经用 DifferentFirstPageHeaderFooter
进行了试验,但它没有给我我需要的结果。我知道该设置有一些组合,以及添加 header 和页脚的正确位置,但我不知道是什么。我的代码基于 MigraDoc 发票样本。封面是一节,然后文档的其余部分是带分页符的一节。也许我需要把它分成每页一个部分?感谢您的任何提示。
编辑
我要显示 header,但似乎有比我正在做的更好的方法。页脚根本没有显示。这是我添加它们的地方:
Document document = new Document();
Section section = document.AddSection();
section.PageSetup.DifferentFirstPageHeaderFooter = true;
Paragraph paragraph = section.Footers.Primary.AddParagraph();
paragraph.AddFormattedText(ReportName, TextFormat.Bold);
paragraph.AddText("\nCreated on ");
paragraph.AddFormattedText(CreateDate, TextFormat.Bold);
paragraph.AddFormattedText("\n" + Properties.Length, TextFormat.Bold);
paragraph.AddText(" Records");
paragraph.AddFormattedText("\n" + TurnoverPercent, TextFormat.Bold);
paragraph.AddText(" Turnover Rate");
paragraph.Format.Font.Size = 10;
paragraph.Format.Alignment = ParagraphAlignment.Center;
// Later, in a different method...
Section section = document.AddSection();
// Header image
Image image = section.Headers.Primary.AddImage(filename);
image.Height = "2.5cm";
image.LockAspectRatio = true;
image.RelativeVertical = RelativeVertical.Line;
image.RelativeHorizontal = RelativeHorizontal.Margin;
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.WrapFormat.Style = WrapStyle.Through;
image = section.Headers.FirstPage.AddImage(filename);
image.Height = "2.5cm";
image.LockAspectRatio = true;
image.RelativeVertical = RelativeVertical.Line;
image.RelativeHorizontal = RelativeHorizontal.Margin;
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.WrapFormat.Style = WrapStyle.Through;
我尝试将页脚段落添加到 Primary 和 FirstPage,但似乎没有什么不同。 DifferentFirstPageHeaderFooter
只适用于部分,对吧,不是整个文档?
DifferentFirstPageHeaderFooter
就是你所需要的。
可能您的代码不正确 - 是的,我们希望看到一些代码。我们如何在没有看到您的代码的情况下为您提供帮助?
每个部分一页的许多部分都可以工作 - 但这不是 MigraDoc 的使用方式。
嗯,我已经弄明白了。 DifferentFirstPageHeaderFooter
似乎不仅适用于您设置它的部分,而且适用于每个部分。一旦我在每个部分适当地设置它,我的两个问题都解决了,页眉和页脚出现在我想要的地方。这是更新后的代码。
Section section = document.AddSection();
section.PageSetup.DifferentFirstPageHeaderFooter = true;
Paragraph paragraph = section.Footers.FirstPage.AddParagraph();
paragraph.AddFormattedText(ReportName, TextFormat.Bold);
paragraph.AddText("\nCreated on ");
paragraph.AddFormattedText(CreateDate, TextFormat.Bold);
paragraph.AddFormattedText("\n" + Properties.Length, TextFormat.Bold);
paragraph.AddText(" Records");
paragraph.AddFormattedText("\n" + TurnoverPercent, TextFormat.Bold);
paragraph.AddText(" Turnover Rate");
paragraph.Format.Font.Size = 10;
paragraph.Format.Alignment = ParagraphAlignment.Center;
// Later, in a different method...
Section section = document.AddSection();
// Need to do this even though we've never set this field on this section
section.PageSetup.DifferentFirstPageHeaderFooter = false;
// Header image
Image image = section.Headers.Primary.AddImage(filename);
image.Height = "2.5cm";
image.LockAspectRatio = true;
image.RelativeVertical = RelativeVertical.Line;
image.RelativeHorizontal = RelativeHorizontal.Margin;
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.WrapFormat.Style = WrapStyle.Through;