打印机驱动程序 - 自定义纸张尺寸

Posted

技术标签:

【中文标题】打印机驱动程序 - 自定义纸张尺寸【英文标题】:Printer Driver - custom paper size 【发布时间】:2016-01-05 13:46:46 【问题描述】:

我正在开发自定义打印机 V3 驱动程序。 当前的任务是为用户提供创建自定义纸张尺寸的能力。我用谷歌搜索了一下,发现了两种方法:

1) GPD 文件中的自定义选项。 我已将此添加到我的 GPD 文件中:

  *Option: CUSTOMSIZE

    *rcNameID: =USER_DEFINED_SIZE_DISPLAY
    *MinSize: PAIR(4724, 6992)      
    *MaxSize: PAIR(14032, 20410)    
    *MaxPrintableWidth: 14032
    *MinLeftMargin: 0
    *CenterPrintable?: FALSE
    *Command: CmdSelect
    
        *Order: PAGE_SETUP.2
        *Cmd: ""
    

,但找不到它在 UI 中的显示位置。

2) 我还发现一些打印机有自定义对话框,允许创建自定义纸张尺寸。 例如:

是否可以创建 V3 打印机驱动程序?如果是那怎么办?

提前致谢!

【问题讨论】:

是的,当然可以。如果您正确地将自定义尺寸选项添加到 GPD,那么您应该在纸张尺寸下拉列表中看到自定义尺寸选项。如果用户选择该选项,则由您的打印驱动程序显示自定义尺寸对话框。看看这篇文章。 msdn.microsoft.com/en-us/library/windows/hardware/… 感谢您的回答。当然我读过它,但还没有找到如何显示这个 UI 来选择自定义纸张大小。我在下拉菜单中没有自定义纸张尺寸。 【参考方案1】:

是的。两种方式都有效。在 V4 和 V3 打印机驱动模型中使用自定义(供应商定义或用户定义)纸张尺寸(非标准纸张尺寸),您可以通过以下链接,但您需要开发一些代码:

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/unidrv-minidrivers

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/printer-features

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/customized-features

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/customized-options

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/specifying-paper-sizes

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/supporting-vendor-defined-paper-sizes

https://docs.microsoft.com/en-us/windows-hardware/drivers/print/supporting-user-defined-paper-sizes

在 V4 打印驱动程序模型中,更改 .gpd 文件会破坏驱动程序包标志,您将难以在 Windows 驱动程序库中安装更改后的驱动程序包。如果您不开发自己的驱动程序,您必须重新签署驱动程序包,它看起来并不像听起来那么简单。

第二种方式实际上是由驱动程序供应商或开发人员使用第一种方式提供的。它们在其驱动程序的 .gpd 文件中包含一些基于 GDL 模式的描述,以允许最终用户定义自己的自定义纸张尺寸。有关清晰直接的示例,请参阅上面的最后一个链接。

【讨论】:

如果您在 V4 中实现了任何类似的解决方案,请告诉我。【参考方案2】:

用户应在“打印服务器属性”表单中创建自定义尺寸纸张。 如果适合 minsize/maxsize 等,它会出现在打印机的纸张尺寸下拉列表中。

【讨论】:

以上是关于打印机驱动程序 - 自定义纸张尺寸的主要内容,如果未能解决你的问题,请参考以下文章

怎么在C#打印自定义纸张

更改打印机默认纸张大小

水晶报表设置纸张大小

Excel自己定义纸张打印设置碰到无法对上尺寸的问题

C#如何设置打印机纸张大小?

[紧急求助]mapx 如何打印任何尺寸纸张?