2

在 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);
        }

我相信我不能更早地将 Orientation 或 PageSize 设置为 Landscape,因为这取决于正在打印的页码......

在 1 个打印作业中混合纵向和横向的任何想法、建议和解决方法?

谢谢!R。

4

1 回答 1

3

很久没问了,我知道,但是你试过直接在调用 new DocumentPage() 的构造函数中设置 PageSize 吗?

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

于 2012-07-25T11:03:43.970 回答