2013-09-23 2 views
1

Этот код будет печатать только одну страницу, но высота элемента управления превышает высоту страницы и, следовательно, должна быть напечатана на второй странице. Я делаю некоторое исследование относительно того, что позволит элементу управления перейти на другую страницу. Я дошел до DocumentPaginator и искал размер, делая его больше и меньше, чем переменная sz, но не имеет разницы. Любые идеи относительно того, что контролирует создание новой страницы? размер связан с разбиением на страницы?Печать более одной страницы для управления

private void Print() 
      { 
       var pd = new PrintDialog(); 
       var document = new FixedDocument(); 
       var fixedPage = new FixedPage(); 
       var pageContent = new PageContent(); 
    System.Printing.PrintCapabilities capabilities = pd.PrintQueue.GetPrintCapabilities(pd.PrintTicket); 
    System.Windows.Size sz = new System.Windows.Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight); 
       MarSheetReport mar = new MarSheetReport(); 
       document.DocumentPaginator.PageSize = sz; 
       Transform originalScale = fixedPage.LayoutTransform; 
       //get selected printer capabilities 


       fixedPage.LayoutTransform = new ScaleTransform(0.2823293807641634 + 0.2498215560314061, 0.2823293807641634 + 0.2498215560314061); 

       fixedPage.Width = sz.Width; 
       fixedPage.Height = sz.Height; 
       // Add visual, measure/arrange page. 
       fixedPage.Children.Add(mar.o); 
       fixedPage.Measure(sz); 

       fixedPage.Arrange(new System.Windows.Rect(new System.Windows.Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz)); 
       fixedPage.UpdateLayout(); 
       //fixedPage.LayoutTransform = originalScale; 

       ((IAddChild)pageContent).AddChild(fixedPage); 
       document.Pages.Add(pageContent); 
       pd.PrintDocument(document.DocumentPaginator, "My Document"); 

      } 

ответ

Смежные вопросы