FlowDocument で定義されたレポートがあります。そのレポートには、横向きモードで印刷したいセクションがいくつかあります。そのために、横向きとしてマークされたセクション用に横向きの FlowDocument を作成する、汚い DocumentPaginator ハックを作成しました。
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 Viewer では横向きモードで表示されます。ただし、ドキュメントを直接または XPS ビューアーから印刷すると、プリンターは横向きのページを回転せず、コンテンツの右側がトリミングされます。
また、Word で混合モード ドキュメントを作成しようとしましたが、期待どおりに印刷されましたが、同じドキュメントを XPS として保存し、XPS Viewer を使用して印刷すると、横向きのページが切り取られます。これは、XPS が混在したページの向きをサポートするかどうか疑問に思います。
ページからビジュアルを抽出し、90 度回転変換を追加できることはわかっています。私はそれを試してみましたが、印刷時には問題なく動作しますが、XPS または PDF として保存するとページが明らかに回転し、印刷物をモニターで表示すると最適ではありません。
回転変換を使用せずに FlowDocuments を混合方向で印刷する方法はありますか?