在wpf / c中混合横向和纵向打印#

时间:2011-10-16 16:38:39

标签: wpf printing landscape-portrait documentpaginator

在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上。

1 个答案:

答案 0 :(得分:3)

很长一段时间以来,您知道,但是您是否尝试过直接在调用新DocumentPage()的构造函数中设置PageSize?

我博客的更多详情:  http://wieser-software.blogspot.co.uk/2012/07/landscape-printing-and-preview-in-wpf.html