Inheritance: IPaginateEventArgs
        protected override void CreatePrintPreviewPages(object sender, PaginateEventArgs e)
        {
            // Get PageContent property
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);
            string pageContent = (printDetailedOptions.Options["PageContent"].Value as string).ToLowerInvariant();

            // Set the text & image display flag
            imageText = (DisplayContent)((Convert.ToInt32(pageContent.Contains("pictures")) << 1) | Convert.ToInt32(pageContent.Contains("text")));

            base.CreatePrintPreviewPages(sender, e);
        }
 void OnPaginate(object sender, PaginateEventArgs e)
 {
     this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
       () =>
       { 
           this.GetPageSize(e);
           this.document.SetPreviewPageCount(1, PreviewPageCountType.Final);
       }
     );
 }
        void GetPageSize(PaginateEventArgs e)
        {
            if (this.pageSize == null)
            {
                PrintPageDescription description = e.PrintTaskOptions.GetPageDescription(
                  (uint)e.CurrentPreviewPageNumber);

                this.pageSize = description.PageSize;
                this.imageableRect = description.ImageableRect;
            }
        }  
        /// <summary>
        /// This is the event handler for Pagination.
        /// </summary>
        /// <param name="sender">The document for which pagination occurs.</param>
        /// <param name="e">The pagination event arguments containing the print options.</param>
        protected override void CreatePrintPreviewPages(object sender, Windows.UI.Xaml.Printing.PaginateEventArgs e)
        {
            PrintDocument printDoc = (PrintDocument)sender;

            // A new "session" starts with each paginate event.
            Interlocked.Increment(ref requestCount);

            PageDescription pageDescription = new PageDescription();

            // Get printer's page description.
            PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(e.PrintTaskOptions);
            PrintPageDescription   printPageDescription = e.PrintTaskOptions.GetPageDescription(0);

            // Reset the error state
            printDetailedOptions.Options["photoSize"].ErrorText = string.Empty;

            // Compute the printing page description (page size & center printable area)
            pageDescription.PageSize = printPageDescription.PageSize;

            pageDescription.Margin.Width = Math.Max(
                printPageDescription.ImageableRect.Left,
                printPageDescription.ImageableRect.Right - printPageDescription.PageSize.Width);

            pageDescription.Margin.Height = Math.Max(
                printPageDescription.ImageableRect.Top,
                printPageDescription.ImageableRect.Bottom - printPageDescription.PageSize.Height);

            pageDescription.ViewablePageSize.Width  = printPageDescription.PageSize.Width - pageDescription.Margin.Width * 2;
            pageDescription.ViewablePageSize.Height = printPageDescription.PageSize.Height - pageDescription.Margin.Height * 2;

            // Compute print photo area.
            switch (photoSize)
            {
            case PhotoSize.Size4x6:
                pageDescription.PictureViewSize.Width  = 4 * DPI96;
                pageDescription.PictureViewSize.Height = 6 * DPI96;
                break;

            case PhotoSize.Size5x7:
                pageDescription.PictureViewSize.Width  = 5 * DPI96;
                pageDescription.PictureViewSize.Height = 7 * DPI96;
                break;

            case PhotoSize.Size8x10:
                pageDescription.PictureViewSize.Width  = 8 * DPI96;
                pageDescription.PictureViewSize.Height = 10 * DPI96;
                break;

            case PhotoSize.SizeFullPage:
                pageDescription.PictureViewSize.Width  = pageDescription.ViewablePageSize.Width;
                pageDescription.PictureViewSize.Height = pageDescription.ViewablePageSize.Height;
                break;
            }

            // Try to maximize photo-size based on it's aspect-ratio
            if ((pageDescription.ViewablePageSize.Width > pageDescription.ViewablePageSize.Height) && (photoSize != PhotoSize.SizeFullPage))
            {
                var swap = pageDescription.PictureViewSize.Width;
                pageDescription.PictureViewSize.Width  = pageDescription.PictureViewSize.Height;
                pageDescription.PictureViewSize.Height = swap;
            }

            pageDescription.IsContentCropped = photoScale == Scaling.Crop;

            // Recreate content only when :
            // - there is no current page description
            // - the current page description doesn't match the new one
            if (currentPageDescription == null || !currentPageDescription.Equals(pageDescription))
            {
                ClearPageCollection();

                if (pageDescription.PictureViewSize.Width > pageDescription.ViewablePageSize.Width ||
                    pageDescription.PictureViewSize.Height > pageDescription.ViewablePageSize.Height)
                {
                    printDetailedOptions.Options["photoSize"].ErrorText = "Photo doesn’t fit on the selected paper";

                    // Inform preview that it has only 1 page to show.
                    printDoc.SetPreviewPageCount(1, PreviewPageCountType.Intermediate);

                    // Add a custom "preview" unavailable page
                    lock (printSync)
                    {
                        pageCollection[0] = new PreviewUnavailable(pageDescription.PageSize, pageDescription.ViewablePageSize);
                    }
                }
                else
                {
                    // Inform preview that is has #NumberOfPhotos pages to show.
                    printDoc.SetPreviewPageCount(NumberOfPhotos, PreviewPageCountType.Intermediate);
                }

                currentPageDescription = pageDescription;
            }
        }
 private void OnPaginate(object sender, PaginateEventArgs e)
 {
     this.printDocument.SetPreviewPageCount(1, PreviewPageCountType.Intermediate);
 }
        void PrintDocumentPaginate(object sender, PaginateEventArgs e)
        {
            pages.Clear();
            PrintContainer.Children.Clear();

            RichTextBlockOverflow lastRtboOnPage;
            PrintTaskOptions printingOptions = ((PrintTaskOptions)e.PrintTaskOptions);
            PrintPageDescription pageDescription = printingOptions.GetPageDescription(0);

            lastRtboOnPage = AddOnePrintPreviewPage(null, pageDescription);

            while (lastRtboOnPage.HasOverflowContent && lastRtboOnPage.Visibility == Windows.UI.Xaml.Visibility.Visible)
            {
                lastRtboOnPage = AddOnePrintPreviewPage(lastRtboOnPage, pageDescription);
            }

            if (PagesCreated != null)
            {
                PagesCreated.Invoke(pages, null);
            }

            PrintDocument printDoc = (PrintDocument)sender;

            printDoc.SetPreviewPageCount(pages.Count, PreviewPageCountType.Intermediate);
        }
 void printDocument_Paginate(object sender, PaginateEventArgs e)
 {
     _PrintDocument.SetPreviewPageCount(1);
 }
 private void OnPrintDocumentPaginate(object sender, PaginateEventArgs args)
 {
     _printDocument.SetPreviewPageCount(2, PreviewPageCountType.Final);
 }
示例#9
0
        /// <summary>
        /// This is the event handler for PrintDocument.Paginate. It creates print preview pages for the app.
        /// </summary>
        /// <param name="sender">PrintDocument</param>
        /// <param name="e">Paginate Event Arguments</param>
        protected virtual void CreatePrintPreviewPages(object sender, PaginateEventArgs e)
        {
            // Clear the cache of preview pages 
            printPreviewPages.Clear();

            // Clear the printing root of preview pages
            PrintingRoot.Children.Clear();

            // This variable keeps track of the last RichTextBlockOverflow element that was added to a page which will be printed
            RichTextBlockOverflow lastRTBOOnPage;

            // Get the PrintTaskOptions
            PrintTaskOptions printingOptions = ((PrintTaskOptions)e.PrintTaskOptions);

            // Get the page description to deterimine how big the page is
            PrintPageDescription pageDescription = printingOptions.GetPageDescription(0);

            // We know there is at least one page to be printed. passing null as the first parameter to
            // AddOnePrintPreviewPage tells the function to add the first page.
            lastRTBOOnPage = AddOnePrintPreviewPage(null, pageDescription);

            // We know there are more pages to be added as long as the last RichTextBoxOverflow added to a print preview
            // page has extra content
            while (lastRTBOOnPage.HasOverflowContent && lastRTBOOnPage.Visibility == Windows.UI.Xaml.Visibility.Visible)
            {
                lastRTBOOnPage = AddOnePrintPreviewPage(lastRTBOOnPage, pageDescription);
            }

            if (pagesCreated != null)
            {
                pagesCreated.Invoke(printPreviewPages, null);
            }

            PrintDocument printDoc = (PrintDocument)sender;

            // Report the number of preview pages created
            printDoc.SetPreviewPageCount(printPreviewPages.Count, PreviewPageCountType.Intermediate);
        }
示例#10
0
        // 当系统请求将打印内容显示在预览窗口时
        private void printDocument_Paginate(object sender, PaginateEventArgs e)
        {
            previewPages.Clear(); // 打印预览页
            printingRoot.Children.Clear(); // 实际发送到打印机的内容

            RichTextBlockOverflow lastRichText;
            PrintTaskOptions printingOptions = ((PrintTaskOptions)e.PrintTaskOptions);
            PrintPageDescription pageDescription = printingOptions.GetPageDescription(0);

            // 添加第一个打印预览页,以及更新 printingRoot 中的内容
            lastRichText = AddPreviewPageAndPrintPage(null, pageDescription);

            // 添加之后的全部打印预览页,以及更新 printingRoot 中的内容
            while (lastRichText.HasOverflowContent && lastRichText.Visibility == Visibility.Visible)
            {
                lastRichText = AddPreviewPageAndPrintPage(lastRichText, pageDescription);
            }

            // 设置打印页数
            printDocument.SetPreviewPageCount(previewPages.Count, PreviewPageCountType.Intermediate);
        }
 void _PrintDocument_Paginate(object sender, PaginateEventArgs e)
 {
     _PrintDocument.SetPreviewPageCount(_Pages.Count, PreviewPageCountType.Intermediate);
 }
        private void CreatePrintPages(object sender, PaginateEventArgs e)
        {
            // Clear the cache of preview pages 
            printPages.Clear();
                       
            // TODO: Prepare pages
            var sample = new TextBlock();
            sample.Foreground = new SolidColorBrush(Windows.UI.Colors.Black);
            //sample.FontSize = 30;
            //sample.TextAlignment = TextAlignment.Center;
            sample.TextWrapping = TextWrapping.Wrap;
            //sample.Padding = new Thickness(40, 50, 20, 50);
            
            foreach (var runItem in this.GetPageContent())
	        {
                sample.Inlines.Add(runItem);
                sample.Inlines.Add(new LineBreak());		 
	        }

            printPages.Add(sample);

            // Report the number of preview pages created
            (sender as PrintDocument).SetPreviewPageCount(printPages.Count, PreviewPageCountType.Intermediate);
        }
示例#13
0
 protected virtual void CreatePrintPreviewPages(object sender, PaginateEventArgs e)
 {
     PrintDoc.SetPreviewPageCount(1, PreviewPageCountType.Final);
 }
示例#14
0
        // #4 - user has selected a printer so we know paper size, etc.
        private void OnPaginate(object sender, PaginateEventArgs e)
        {
            PrintTaskOptions printingOptions = e.PrintTaskOptions;
            PrintPageDescription pageDescription = printingOptions.GetPageDescription(0);

            page1 = new DetailPrinting
            {
                DataContext = this.Child,
                Width = pageDescription.PageSize.Width,
                Height = pageDescription.PageSize.Height
            };

            // Assumes we have this on our printable page
            Grid printableArea = (Grid)page1.FindName("printableArea");

            // size our grid to the paper dimensions
            double marginWidth = Math.Max(
                pageDescription.PageSize.Width - pageDescription.ImageableRect.Width,
                pageDescription.PageSize.Width * left * 2);
            double marginHeight = Math.Max(
                pageDescription.PageSize.Height - pageDescription.ImageableRect.Height,
                pageDescription.PageSize.Height * top * 2);

            printableArea.Width = page1.Width - marginWidth;
            printableArea.Height = page1.Height - marginHeight;

            // We add the printable page to the visual tree so we can lay it out
            printContainer.Children.Add(page1);
            printContainer.InvalidateMeasure();
            printContainer.UpdateLayout();

            // in our (relatively) simple example we only have one page
            doc.SetPreviewPageCount(1, PreviewPageCountType.Intermediate);
        }