我有一个WPF报告,它以自定义页面大小绘制报告内容(我们可以将其视为A4,问题是相同的),如果我将输出发送到打印机(物理或虚拟,如PDFCreator)我的为每个页面正确保留自定义页面大小。
但是当我将其输出为XPS格式时,页面将适应Letter页面大小。
如何在将WPF报告输出到XPS时保留自定义页面大小?
我的最终目标:是否有来自WPF的PDF,我的方法是使用PDFSharper将XPS转换为PDF。转换效果很好,但XPS输出会破坏我的自定义页面大小。其他方法是受欢迎的,但无论如何我想了解并控制XPS输出页面大小。
答案 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);
}