来自WPF报告的XPS中的自定义页面大小输出

时间:2013-07-26 19:08:06

标签: wpf pdf-generation xpsviewer xps-generation

我有一个WPF报告,它以自定义页面大小绘制报告内容(我们可以将其视为A4,问题是相同的),如果我将输出发送到打印机(物理或虚拟,如PDFCreator)我的为每个页面正确保留自定义页面大小。

但是当我将其输出为XPS格式时,页面将适应Letter页面大小。

如何在将WPF报告输出到XPS时保留自定义页面大小?

我的最终目标:是否有来自WPF的PDF,我的方法是使用PDFSharper将XPS转换为PDF。转换效果很好,但XPS输出会破坏我的自定义页面大小。其他方法是受欢迎的,但无论如何我想了解并控制XPS输出页面大小。

示例项目:Test_WpfToPDF_withXpsCorruptingPageSizeToLetter.zip

1 个答案:

答案 0 :(得分:3)

当您将用户控件(报表)包装在另一个元素中时,它似乎也可以工作,同时提供实际大小而不会忘记放置背景。 我不确切知道为什么,但背景似乎与大小一起。

public override DocumentPage GetPage(int pageNumber) {
    var page = new MyUserControl();

    Border wrapper = new Border();
    wrapper.Width = this.PageSize.Width;
    wrapper.Height = this.PageSize.Height;
    wrapper.Background = Brushes.White;

    wrapper.Child = page;

    wrapper.Measure(this.PageSize);
    wrapper.Arrange(new Rect(new Point(0, 0), this.PageSize));
    wrapper.UpdateLayout();

    return new DocumentPage(wrapper);
}