我正在尝试在UWP上制作打印应用程序,但样本显示
await Windows.Graphics.Printing.PrintManager.ShowPrintUIAsync();
这带来了UWP打印对话框。
我需要在没有此对话框的情况下直接打印。怎么做?
我需要像
这样的东西await Windows.Graphics.Printing.PrintManager.PrintAsync();
我们应该能够以编程方式列出打印机,选择打印机,配置纸张尺寸,方向,设置......
答案 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);
}