首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在通用应用程序中打印

在通用应用程序中打印
EN

Stack Overflow用户
提问于 2015-11-18 11:31:17
回答 2查看 3.6K关注 0票数 2

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

EN

回答 2

Stack Overflow用户

发布于 2015-11-18 11:37:25

声明PrintManagerPrintDocumentPrintManager类型与支持其他Windows.Graphics.Printing打印功能的类型一起位于Windows命名空间中。XAML类型与支持准备要打印的PrintDocument内容的其他类型一起位于Windows.UI.Xaml.Printing命名空间中。通过将以下using或Imports语句添加到页中,可以使编写打印代码变得更容易。

代码语言:javascript
运行
复制
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

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

代码语言:javascript
运行
复制
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方法中启动注册。

代码语言:javascript
运行
复制
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存储库下载universal Windows Platform (UWP)打印示例。

票数 4
EN

Stack Overflow用户

发布于 2016-10-25 15:17:11

对于每个页面,GetPrintPreviewPage事件都是fierd,当我返回到一个页面时,事件不是fierd。我使用这段代码来持久化当前预览页面。

私有异步PrintDoc_GetPreviewPage(object p_sender,GetPreviewPageEventArgs p_args) { SelectedPagePreview = p_args.PageNumber;

我正在Windows8.1和tablet x64上进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33771341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档