在Universal Apps中打印

时间:2015-11-18 03:31:17

标签: c# printing uwp

我正在开发一个需要执行计算并根据结果生成打印输出的Windows 10 Universal App。我不知道从哪里开始打印。创建新文档的最简单方法是什么?在WPF中,我们有FixedDocument和FlowDocument。我没有看到通用应用程序格式的那些。

2 个答案:

答案 0 :(得分:4)

声明PrintManagerPrintDocumentPrintManager类型位于Windows.Graphics.Printing命名空间以及支持其他Windows打印功能的类型。 PrintDocument类型位于Windows.UI.Xaml.Printing命名空间以及支持准备XAML内容以进行打印的其他类型。通过在页面中添加以下using或Imports语句,您可以更轻松地编写打印代码。

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

PrintDocument类用于处理应用程序与PrintManager之间的大部分交互,但它会暴露自己的几个回调。在注册期间,创建PrintManagerPrintDocument的实例,并为其打印事件注册处理程序。 在 UWP 打印示例中,注册是通过RegisterForPrinting方法执行的。

public virtual void RegisterForPrinting()
{
   printDocument = new PrintDocument();
   printDocumentSource = printDocument.DocumentSource;
   printDocument.Paginate += CreatePrintPreviewPages;
   printDocument.GetPreviewPage += GetPrintPreviewPage;
   printDocument.AddPages += AddPrintPages;

   PrintManager printMan = PrintManager.GetForCurrentView();
   printMan.PrintTaskRequested += PrintTaskRequested;
}

当用户转到支持的页面时,它会在OnNavigatedTo方法中启动注册。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
   // Initalize common helper class and register for printing
   printHelper = new PrintHelper(this);
   printHelper.RegisterForPrinting();

   // Initialize print content for this scenario
   printHelper.PreparePrintContent(new PageToPrint());

   // Tell the user how to print
   MainPage.Current.NotifyUser("Print contract registered with customization, use the Print button to print.", NotifyType.StatusMessage);
}

当用户离开页面时,断开打印事件处理程序。如果您有多页应用并且不断开打印,则当用户离开页面然后返回时会抛出异常。

您可以在Print from your app上阅读更多内容并找到提示:提示本主题中的大部分示例均基于打印示例。要查看完整代码,请从GitHub上的Windows-universal-samples repo下载通用Windows平台(UWP)打印示例。

答案 1 :(得分:0)

每个页面的GetPrintPreviewPage事件都很激动,当我返回页面时事件并不激烈。 我使用此代码来保留当前预览页面。

private async void PrintDoc_GetPreviewPage(object p_sender,GetPreviewPageEventArgs p_args)         {             SelectedPagePreview = p_args.PageNumber;

我正在测试Windows 8.1&平板电脑x64。