具有不同首页尺寸的WPF流文档

我有一个flowdocument,其中重复了自定义DocumentPaginator生成的页眉/页脚。问题是第一页需要不同的标题大小,换句话说,第一页需要不同的PagePadding。 多次重复描述页眉/页脚的DocumentPaginator(例如herehere),但是从未描述过不同大小的页眉(非常相似的question,但没有答案) 。 我的代码段:

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,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

bin_swnswn 回答:具有不同首页尺寸的WPF流文档

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3125716.html

大家都在问