在WPF/c#应用程序中,我正在使用DocumentPaginator打印一些页面。但是,我想在横向和纵向模式下混合1个打印作业页面:例如:第1页纵向,第2页横向,第3页纵向。
但是,如果我改变PageSize(从DocumentPaginator覆盖)来反映横向,页面仍然是纵向模式。
也就是说
public class PrintPaginator : DocumentPaginator
{
public override Size PageSize { get; set; }
public override DocumentPage GetPage(int pageNumber)
{
// size values
Size theSizeOfThePage;
// make size orientation correct
if (pageNumber == 2)
{
// landscape: width is larger then height
theSizeOfThePage = new Size(Math.Max(PageSize.Width, PageSize.Height), Math.Min(PageSize.Width, PageSize.Height));
}
else
{
// portrait: height is larger then width
theSizeOfThePage = new Size(Math.Min(PageSize.Width, PageSize.Height), Math.Max(PageSize.Width, PageSize.Height));
}
PageSize = theSizeOfThePage;
// set the grid as the page to print
thePage = new Grid();
thePage.Width = PageSize.Width;
thePage.Height = PageSize.Height;
[...]
// return a documentpage wrapping the grid
return new DocumentPage(thePage);
}
我相信我不能设置方向或页面大小横向较早,因为这取决于正在打印的页码…
在一个打印作业中混合肖像和风景的任何想法,建议,解决方案?
谢谢!r .
自从你问了很长一段时间,我知道,但是你有没有尝试在调用新的DocumentPage()的构造函数中直接设置PageSize ?
更多细节在我的博客:http://wieser-software.blogspot.co.uk/2012/07/landscape-printing-and-preview-in-wpf.html