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 に答える