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");

            }
4

1 回答 1

0

这是一种方法,即从视觉创建位图并在多个页面上打破它。

http://www.codeproject.com/Articles/339416/Printing-large-WPF-UserControls

于 2013-09-23T16:51:08.473 回答