2017-06-14 54 views
0

我想以横向模式打印编程创建的flowdocument,并尝试了我找到的所有版本,但没有一个适用。 这里是我的代码如下:如何在横向(WPF,C#)中打印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 
      { } 

回答

0

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

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;