如何在横向中打印flowdocument(WPF,C#)?

时间:2017-06-14 15:05:34

标签: c# wpf printing flowdocument

我想在横向模式下打印以编程方式创建的flowdocument,我尝试了所有版本,但我没有找到它们。 这是我的代码:

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
            { }

1 个答案:

答案 0 :(得分:-1)

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

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;