1

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

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

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

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

示例项目:Test_WpfToPDF_withXpsCorruptingPageSizeToLetter.zip

4

1 回答 1

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);
}
于 2013-08-06T14:03:40.750 回答