2017-06-14 113 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;