如何横向打印流文档(WPF,C#)?

How to print flowdocument in landscape (WPF,C#)?

我想在横向模式下打印我以编程方式创建的流程文档,我尝试了我发现的所有版本,但其中 none 有效。 下面是我的代码:

try
            {
                // Create a PrintDialog 
                PrintDialog printDlg = new PrintDialog();
                printDlg.PrintTicket.PageOrientation = System.Printing.PageOrientation.Landscape;


                // Create a FlowDocument dynamically. 
                FlowDocument doc = CreateFlowDocumentSum();
                doc.Name = "FlowDoc";
                doc.ColumnWidth = printDlg.PrintableAreaWidth;

                // Create IDocumentPaginatorSource from FlowDocument 
                IDocumentPaginatorSource idpSource = doc;



                // Call PrintDocument method to send document to printer 

                printDlg.PrintDocument(idpSource.DocumentPaginator, "sum");
                doc.Blocks.Clear();
                sumTable.Clear();

            }
            catch
            { }

我终于做到了。 刚刚修改了打印按钮事件中的代码:

PrintDialog printDlg = new PrintDialog();
                LocalPrintServer ps = new LocalPrintServer();
                PrintQueue pq = ps.DefaultPrintQueue;

                PrintTicket pt = pq.UserPrintTicket;

                    pt.PageOrientation = PageOrientation.Landscape;

                FlowDocument doc = CreateFlowDocumentSum();


                doc.PageHeight = 768;
                doc.PageWidth = 1104;

                PageMediaSize pageMediaSize = new PageMediaSize(doc.PageWidth, doc.PageHeight);
                    pt.PageMediaSize = pageMediaSize;
                    IDocumentPaginatorSource source = doc as IDocumentPaginatorSource;


                printDlg.PrintDocument(source.DocumentPaginator, "sum");

然后在我的 FlowDocument 中设置宽度和高度:

FlowDocument docSum = new FlowDocument();
        docSum.PageHeight = 768;
        docSum.PageWidth = 1104;
        docSum.ColumnWidth = 1104;