c# - 以编程方式将 XPS 文件打印到物理打印机

标签 c# winforms printing xps printdocument

我有一个 C# WinForms 应用程序。用户上传 .XPS 文件并指定一些打印机设置(份数、纸盒等)。 程序需要使用这些设置以编程方式打印文档。也就是说,不能有用于打印的用户交互。

我可以使用 System.Printing AddJob 方法来接近。 (https://learn.microsoft.com/en-us/dotnet/framework/wpf/advanced/how-to-programmatically-print-xps-files)。但是,我无法在这里定义具体设置,例如纸张来源、份数等。

我更愿意使用 PrintDocument 方法,但我不知道如何让 PrintDocument 渲染/打印 XPS 文档。

我看过这个资源,https://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage(v=vs.110).aspx ,但看不到如何获取 PrintPageEventHandler 来呈现 XPS 文档。

关于我该如何继续有什么想法吗?非常感谢您的帮助!

C# .NET 4.5

更新:

根据下面的答案,我可以在添加作业时发送 PrintTicket,如下所示:

 PrintTicket pt = printQueue.DefaultPrintTicket;
 pt.CopyCount = 2;
 // pt.InputBin = [ InputBin enum option ]
 printQueue.AddJob("name", "file", false, pt);

我看不到任何简单的方法来设置 PrintTicket 的 InputBin。 InputBin 是一个枚举,没有仅设置为可用 bin 之一的名称的选项。

最佳答案

AddJob 的方向是正确的,但是您需要 version that accepts a PrintTicket 。您需要使用用户的设置创建一个新的 PrintTicket - 任何设置为 null 的值最终都将使用为该 PrintQueue 设置的默认值。

关于c# - 以编程方式将 XPS 文件打印到物理打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311910/

相关文章:

java - 直接向打印机发送打印任务的优点

android - Kotlin Android 打印到控制台

c# - 使用 visual studio 和 entity framework core 5.0.2 连接到 MSSQL Server developer edition

c# - 日期时间.ParseExact : "String not recognised as a valid DateTime"

c# - WatIn 的右键单击方法?

c# - SQL 本地网络连接字符串

python "print"在 sys.setdefaultencoding ('utf-8' 之后不起作用)

c# - Asp.net MVC 多用户 session /用户模拟

c# - 如何在 Eto 中捕获没有文本框的键盘输入

C# Winforms 如何在函数中更新 toolStrip