長い時間後に...
各ページが印刷される前に、カスタムプリントチケットを求めて、呼び出されるイベントハンドラを提供することにより、これを行うことができます。ここのPageViewModelは、事実上、
PageViewModel{
Page Page {get;set;}
PageOrientation? PageOrientation {get;set}
}
if (PrintDialog.ShowDialog() == true)
{
XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(PrintDialog.PrintQueue);
xpsDocumentWriter.WritingPrintTicketRequired += (s, e) =>
{
PageViewModel pVM = publicationVM.Pages[e.Sequence - 1];
if (pVM.Orientation != null && pVM.Orientation != publicationVM.Orientation)
{
e.CurrentPrintTicket = new PrintTicket();
e.CurrentPrintTicket.PageOrientation = PageOrientation.Portrait;
}
};
VisualsToXpsDocument visualsToXpsDocument = (VisualsToXpsDocument) xpsDocumentWriter.CreateVisualsCollator(PrintDialog.PrintTicket, PrintDialog.PrintTicket);
visualsToXpsDocument.BeginBatchWrite();
Page page;
foreach (PageViewModel pVM in publicationVM.Pages)
{
page = pVM.Page;
visualsToXpsDocument.Write(page);
}
visualsToXpsDocument.EndBatchWrite();
}
とビンゴ!ポートレートと風景が混在しています。これを二重化しても問題ありません。
あなたはこれを行う方法を見つけましたか?私は同じ理由(PDFに混在したポートレイト/ランドスケープページを印刷する)と同じ理由でそれを行うことができたいと思っており、それを稼働させる方法を考え出していません。 – markmuetz
答えはありませんが、それが必要なプロジェクトでも働いていました。研究の日の後、私はあなたと同じことをやめました。ただし、XPSドキュメントは、正しい用紙方向を指定することができます(MS WordからXPSにエクスポートするときに表示されます)。それがどのように行われているかを見て待っています。 – NestorArturo