如何从UWP应用程序静默打印

时间:2017-10-27 23:09:01

标签: uwp

我正在尝试在UWP上制作打印应用程序,但样本显示

await Windows.Graphics.Printing.PrintManager.ShowPrintUIAsync();

这带来了UWP打印对话框。

我需要在没有此对话框的情况下直接打印。怎么做?

我需要像

这样的东西
await Windows.Graphics.Printing.PrintManager.PrintAsync();

我们应该能够以编程方式列出打印机,选择打印机,配置纸张尺寸,方向,设置......

3 个答案:

答案 0 :(得分:6)

当前的UWP API不支持静默打印,即没有明确的用户交互。

对于POS场景,UWP确实提供了POSPrinter API - 这可能适用于您的场景,也可能不适用于您的场景:

https://docs.microsoft.com/en-us/uwp/api/Windows.Devices.PointOfService.PosPrinter

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/PosPrinter

对于在桌面上运行的LOB应用程序,您还可以选择从UWP应用程序包中包含的完整信任过程继续使用Win32打印API。我已经整理了一个快速示例,演示了从UWP静默打印图像文件的示例中的这种技术:

商店:https://www.microsoft.com/store/apps/9pd51nnkx3t2

来源:https://1drv.ms/u/s!AovTwKUMywTNnOsbzlRfghOikDy8Dw

它肯定是一个有效的功能请求,我们应该扩展API以使用适当的用户模型(API,功能,设置等)启用此方案,以确保正确的用户体验。

请在此处对UserVoice进行投票,以帮助团队确定功能的优先级: https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/6185763-allow-direct-printing-without-modern-ui-print-dial

答案 1 :(得分:2)

  

等待Windows.Graphics.Printing.PrintManager.PrintAsync();

据我所知,没有PrintUI的打印机没有这样的api。我搜索了一些类似的issues。答案是否定的。如果您确实需要此功能,欢迎您对UserVoice投票。

答案 2 :(得分:2)

我正在使用RawPrint nuget在UWP中静默打印:

https://github.com/frogmorecs/RawPrint

示例:

  ...

  if (file != null)
  {
      IPrinter printer = new Printer();
      var stream = await file.OpenStreamForReadAsync();
      printer.PrintRawStream("Brother DCP-L2540DN series Printer", stream, file.DisplayName);
  }