我有一个从内置的Microsoft xps编写器打印机生成的.xps文件,我想将其打印到真正的打印机,但具有修改的属性,例如:duplex,grayscale,n-up等。
我跟随MSDN的示例,我可以打印.xps,但问题是我只能设置很少的工作属性。通过使用PrintQueue设置PrintTicket,可以使用修改后的副本和双面设置正确打印作业,但不会转换为灰度或遵循任何n-up设置。
似乎我并不孤单,来自this form,通过使用WritingPrintTicketRequired的事件处理程序,XPS文件PrintTicket已成功更改为灰度,n-up设置,但是通过使用PrintQueue.AddJob()调用不会以灰度或n-up设置打印它们。
但是,如果我使用PrintDialog并手动选择属性,那么它将按预期打印。如果我尝试在PrintDialog中设置PrintQueue和PrintTicket属性,那么它将不会遵循某些属性。
我的目标是以编程方式打印带有属性的xps文件。问题是如何让PrintQueue完全兑现PrintTicket?
仅供参考:xps文件是以彩色生成的,我可以在.xps包中看到彩色图像。
编辑:事实证明,打印机驱动程序在某种程度上不尊重打印设置,即使打印机功能显示它支持单色,也可以通过更改为另一个驱动程序来实现。但是,在打印票证中指定灰度不同于在打印对话框UI中选择灰度:打印票证中的灰度将输出单色图像,在假脱机文件中,它被指定为渲染为颜色但是自己转换的图像。而后者会生成更逼真的灰度图像。