C# 具有不同首页大小的WPF flowdocument
我有一个带有重复页眉/页脚的C# 具有不同首页大小的WPF flowdocument,c#,wpf,flowdocument,C#,Wpf,Flowdocument,我有一个带有重复页眉/页脚的flowdocument,它是用自定义DocumentPaginator生成的。问题是我需要为第一页设置不同的页眉大小,或者换句话说,我需要为第一页设置不同的PagePadding。 带有重复页眉/页脚的DocumentPaginator被多次描述(例如or),但从未针对不同大小的页眉(非常相似,没有答案)。 我的代码片段: public class ReportPaginator : DocumentPaginator { private DocumentP
flowdocument
,它是用自定义DocumentPaginator
生成的。问题是我需要为第一页设置不同的页眉大小,或者换句话说,我需要为第一页设置不同的PagePadding
。
带有重复页眉/页脚的DocumentPaginator
被多次描述(例如or),但从未针对不同大小的页眉(非常相似,没有答案)。
我的代码片段:
public class ReportPaginator : DocumentPaginator
{
private DocumentPaginator _flowDocumentpaginator;
private readonly FlowDocument _flowDocument;
public ReportPaginator(FlowDocument document)
{
_flowDocumentpaginator = ((IDocumentPaginatorSource)document).DocumentPaginator;
_flowDocument = document;
}
public override DocumentPage GetPage(int pageNumber)
{
DocumentPage page = _flowDocumentpaginator.GetPage(pageNumber);
ContainerVisual newVisual = new ContainerVisual();
DrawingVisual header = new DrawingVisual();
if (pageNumber == 0)
{
//smaller header
[...]
}
else
{
//normal header
[...]
}
newVisual.Children.Add(header);
if (pageNumber == 0)
{
//set different margins for the first page
_flowDocument.PagePadding = new Thickness(0.7 * 96, 93.2, 0.7 * 96, 74);
_flowDocumentpaginator = ((IDocumentPaginatorSource)_flowDocument).DocumentPaginator;
page = _flowDocumentpaginator.GetPage(pageNumber);
}
else if (pageNumber == 1)
{
//set "normal" margins for other pages
_flowDocument.PagePadding = new Thickness(0.7 * 96, 180, 0.7 * 96, 74);
_flowDocumentpaginator = ((IDocumentPaginatorSource)_flowDocument).DocumentPaginator;
page = _flowDocumentpaginator.GetPage(pageNumber);
}
newVisual.Children.Add(page.Visual);
DrawingVisual footer = new DrawingVisual();
[...]
newVisual.Children.Add(footer);
return new DocumentPage(newVisual, page.Size, page.BleedBox, page.ContentBox);
}
}
此代码生成大小正确的页面(第一个页面比其他页面大),但分页已中断:第一个页面底部的几行在第二个页面顶部重复,因为更改PagePadding
后会重新计算分页