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); }
/// <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); }
// 当系统请求将打印内容显示在预览窗口时 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); }
protected virtual void CreatePrintPreviewPages(object sender, PaginateEventArgs e) { PrintDoc.SetPreviewPageCount(1, PreviewPageCountType.Final); }
// #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); }