none
WPF печать в XPS RRS feed

  • Общие обсуждения

  • Добрый день.

    Производим печать следующим образом.

      var dlg = new PrintDialog();
      if (!dlg.ShowDialog() ?? false) return;

    var pageSize = new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight);
    var paginator = (DocumentPaginator)CreatePages(pageSize);
    var writer = PrintQueue.CreateXpsDocumentWriter(dlg.PrintQueue);

    _writer.WriteAsync(paginator );

    При печати в XPS файл страница почему-то выглядит обрезаной. См рисунок.

    DocumentPaginator 

            public override DocumentPage GetPage(int pageNumber)
            {
                     var page = new ACTPrintPage
                               {
                                   PageHeader = _pageHeader,
                                   PageIndex = pageIndex,
                                   StartRow = rowIndex,
                                   Width = _pageSize.Width,
                                   Height = _pageSize.Height,
                                   Lines = _lines,
                                   Columns = _columns,
                                   CountPages = _pageCount
                               };

                page.Measure(_pageSize);
                page.Arrange(new Rect(new Point(0, 0), _pageSize));

                return page;
            }

    Где ACTPrintPage отнаследован от Control и в нем переопределен 

     protected override void OnRender(DrawingContext dc)

    и просто отрисовываемся содержимое в DrawingContext 

    Почему? или как это можно исправить?


    1 июня 2012 г. 10:37

Все ответы

  • Я в C# не очень кумекаю, но я насколько смог попытался вникнуть. Так и не понял место где вы берете размер исходного изображения...

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    4 июня 2012 г. 12:44
    Отвечающий
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]