在WPF / C#应用程序中,我使用DocumentPaginator打印一些页面。 但是,我想在横向和纵向模式下混合1个printjob页面: 例如,纵向中的第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);
}
我相信我不能提前将Orientation或PageSize设置为Landscape,因为这取决于正在打印的pagenumber ...
在1个printjob中混合肖像和风景的任何想法,建议,工作场所?
谢谢! R上。
答案 0 :(得分:3)
很长一段时间以来,您知道,但是您是否尝试过直接在调用新DocumentPage()的构造函数中设置PageSize?
我博客的更多详情: http://wieser-software.blogspot.co.uk/2012/07/landscape-printing-and-preview-in-wpf.html