我有一个WPF报告,它以自定义页面大小绘制报告内容(我们可以将其视为A4,问题是一样的),如果我将输出发送到打印机(物理或虚拟,如PDFCreator),我的自定义页面大小将正确保留为每页。
但当我将其输出为XPS格式时,页面会调整为Letter页面大小。
如何在将WPF报告输出到XPS时保留我的自定义页面大小?
我的最终目标:是从WPF获得PDF,我的方法是使用PDFSharper将XPS转换为PDF。转换效果良好,但XPS输出破坏了我的自定义页面大小。其他方法是受欢迎的,但无论如何,我想了解并控制XPS输出页面的大小。
示例项目:Test_WpfToPDF_withXpsCorruptingPageSizeToLetter.zip
当您将用户控件(报表)封装在另一个元素中时,它似乎可以工作,同时提供真实大小,并且不要忘记放置背景。我不知道确切的原因,但背景和尺寸似乎起了作用。
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);
}