Смешайте альбомную и портретную печать в wpf/c#

В приложении WPF/С# я печатаю некоторые страницы с помощью 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);
        }

Я считаю, что не могу установить ориентацию или размер страницы в альбомную ранее, так как это зависит от печатаемого номера страницы...

Любые идеи, предложения, обходные пути, чтобы смешать книжную и альбомную ориентацию в одном задании на печать?

Спасибо! Р.


person Robbie    schedule 16.10.2011    source источник
comment
Я не проводил никаких исследований того, о чем вы спрашиваете, но скажу, что ширина, превышающая высоту, в большинстве случаев недействительна. Установка таким образом не поворачивает страницу, на самом деле, большинство языков просто «исправят» то, что кажется неправильным, и обратят их, оставив вам тот же размер страницы. Вам действительно нужно искать ориентацию или вращать команду/функцию.   -  person Douglas Anderson    schedule 17.10.2011


Ответы (1)


Давно вы спрашивали, я знаю, но пробовали ли вы установить PageSize непосредственно в конструкторе вызова new DocumentPage()?

Подробнее в моем блоге: http://wieser-software.blogspot.co.uk/2012/07/landscape-printing-and-preview-in-wpf.html

person Anthony Wieser    schedule 25.07.2012