Как напечатать FlowDocument, используя смешанную ориентацию страницы без поворота? - PullRequest
1 голос
/ 30 сентября 2010

У меня есть отчет, определенный в FlowDocument.В этом отчете у меня есть несколько разделов, которые я хочу напечатать в альбомной ориентации.Для этого я написал грязный хак DocumentPaginator, который создает альбомно-ориентированный FlowDocument для разделов, помеченных как альбомные.

    public override DocumentPage GetPage(int pageNumber)
    {
    // some code

                if (section.Name.Equals("landscapePage"))
                {
                    var landscapeDocument = new FlowDocument();

                    landscapeDocument.PageWidth = document.PageHeight;
                    landscapeDocument.ColumnWidth = document.PageWidth - 50;
                    landscapeDocument.PageHeight = document.PageWidth;
                    landscapeDocument.Blocks.Add(section);
                    var landscapePaginator = ((IDocumentPaginatorSource)landscapeDocument).DocumentPaginator;
                    var landscapePage = landscapePaginator.GetPage(0);
                    return landscapePage;
                }

    // more code

Это выглядит так же, как и ожидалось, если я печатаю в документ XPS.Страницы, отмеченные альбомной ориентацией, отображаются в альбомной ориентации в средстве просмотра XPS.Однако, если я распечатываю документ напрямую или из средства просмотра XPS, принтер не поворачивает альбомную страницу, и правая часть содержимого обрезается.

Я также попытался создать документ в смешанном режиме в Word,он печатается, как и ожидалось, но если я сохраню тот же документ, что и XPS, и напечатаю его с помощью средства просмотра XPS, страницы с альбомной ориентацией будут обрезаны.Это заставляет меня задуматься, поддерживает ли XPS смешанную ориентацию страниц.

Я знаю, что могу извлечь Visual со страницы и добавить преобразование поворота на 90 градусов.Я пробовал это, и он прекрасно работает при печати, но если сохранить в формате XPS или PDF, страницы явно поворачиваются, что меньше, чем оптимально при просмотре печати на мониторе.

Есть ли способ печати FlowDocumentsв смешанных ориентациях без использования преобразования поворота?

...