2015-11-02 87 views
0

我嘗試使用下面的代碼設置的空白打印文檔時的WPF控件在打印

PrintDialog printDlg = new PrintDialog(); 
printDlg.PrintVisual(trv, "GTree Printing."); 

TreeView所打印功能在WPF TreeView控件,但它打印到右側和一些數據被切割關閉。在這種情況下如何設置保證金?此外它不會打印整個樹結構,只有可見部分正在打印。請告知這一點。

這是桌面應用程序

感謝, Sivajith

回答

0
public static void Print(IEnumerable<UIElement> dataForPrint, string printerName) 
    { 
     try 
     { 
      var printDialog = new PrintDialog(); 
      using (var printQueue = new PrintQueue(new PrintServer(), printerName)) 
      { 
       printDialog.PrintQueue = printQueue; 
       var area = printDialog.PrintQueue.GetPrintCapabilities(); 
       if (area.PageImageableArea == null) throw new Exception("Failed to load printer settings."); 
       var flowDocument = new FlowDocument 
       { 
        PagePadding = new Thickness(area.PageImageableArea.OriginWidth, 0, 0, 0), 
        PageWidth = area.PageImageableArea.ExtentWidth + area.PageImageableArea.OriginWidth 
       }; 

       foreach (var uiElement in dataForPrint) 
       { 
        flowDocument.Blocks.Add(new BlockUIContainer(uiElement)); 
       } 

       var paginator = ((IDocumentPaginatorSource) flowDocument).DocumentPaginator; 
       printDialog.PrintDocument(paginator, "A Flow Document"); 
      } 
     } 
     catch (NotSupportedException) 
     { 

     } 
     catch (Exception e) 
     { 
      Log(e); 
     } 
    } 

如果你表現出你沒有創建打印隊列打印機對話框。只需訪問PrintDialog.PrintQueue屬性