У меня есть отчет, определенный в 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в смешанных ориентациях без использования преобразования поворота?