以编程方式设置打印机功能

4
我正在开发一个C#桌面应用程序,需要更改一些打印机设置并打印一些图片。在我的程序中,我已经可以设置纸张大小、打印机名称等等。如果我进入打印机首选项的高级选项,会看到一个名为“打印机功能”的部分。我无法找到如何访问打印机设置参数的方法。例如,“边框”、“涂层完成”、“2英寸裁剪”等等。特别是我所关心的是“2英寸裁剪”。
如何在运行时获取这些属性?
更新: 我稍微修改了图片和问题,以使其更加具体。

3
据我所知,使用DEVMODE API调用:( - Mr47
2个回答

4

好的,我找到了一个对我非常有效的解决方案,希望这能帮助其他人。

经过一番调查,我发现我的打印机没有设置允许通过驱动程序访问那些功能。所以我在Windows的打印机和设备中创建了第二个配置文件,连接到同一台打印机、相同的端口和驱动程序。然后,我只需根据我的需要选择不同的打印机配置文件即可。非常好用。

感谢所有做出贡献的人。


0

您可以使用DEVMODE结构的dmPrintQuality成员设置打印机质量。其他打印机功能可能不适用于所有打印机。某些打印机驱动程序可能会公开与其他打印驱动程序非常不同的属性。这通常是使用上述结构的dmDriverExtra额外成员完成的。正如MSDN所说,dmDriverExtra是私有打印机数据:

包含紧随此结构后面的私有驱动程序数据的字节数。如果设备驱动程序不使用设备特定信息,请将此成员设置为零。


这是否意味着如果驱动程序支持它,我可以访问此功能? - Vandel212
驱动程序通过_dmDriverExtra_自主地解释这些“特定于驱动程序”的属性。因此,您的驱动程序可能具有其他驱动程序不具备且无法通过Api访问的高级功能,如“过渡层涂层”,“2寸切割”等。 - stamhaney
我明白了。那么我需要使用dmDriverExtra来操作这些设置,是吗? - Vandel212
只有当您知道_dmDriverExtra_中存储了什么内容时,才能访问它。如果驱动程序文档记录了其中存储的内容、大小等信息,则可以访问。通常情况下,这不会被公开,因为这是驱动程序的私有数据。 - stamhaney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接