Драйвер принтера - нестандартный размер бумаги

Я работаю над драйвером пользовательского принтера V3. Текущая задача состоит в том, чтобы дать пользователю возможность создавать нестандартный размер бумаги. Я немного погуглил и нашел 2 способа сделать это:

1) Опция CUSTOMSIZE в файле 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: ""
    }
}

, но не смог найти, где он появляется в пользовательском интерфейсе.

2) также я обнаружил, что некоторые принтеры имеют настраиваемые диалоговые окна, которые позволяют создавать пользовательский размер бумаги. Например:

введите здесь описание изображения

Можно ли создать для V3 драйвер принтера? Если да, то как?

Заранее спасибо!


person Alexander A. Sharygin    schedule 05.01.2016    source источник
comment
Да, конечно, это возможно. Если вы правильно добавили параметр нестандартного размера в GPD, вы должны увидеть нестандартный размер в качестве параметра в раскрывающемся списке размеров бумаги. Ваш драйвер принтера должен отображать диалоговое окно нестандартного размера, если пользователь выбирает этот параметр. Взгляните на эту статью. msdn.microsoft.com/ en-us/library/windows/hardware/   -  person Carey Gregory    schedule 05.01.2016
comment
Спасибо за ответ. Я конечно читал, но не нашел как показать этот UI для выбора нестандартного размера бумаги. У меня нет пользовательского размера бумаги в раскрывающемся списке.   -  person Alexander A. Sharygin    schedule 05.01.2016


Ответы (2)


да. Оба способа работают. Чтобы использовать настраиваемые (определяемые поставщиком или определяемые пользователем) размеры бумаги (нестандартные размеры бумаги) в моделях драйверов принтера 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. Вы должны переподписать пакет драйверов, чтобы он не выглядел так просто, как кажется, если вы не разрабатываете свой собственный драйвер.

Второй способ фактически предоставляется поставщиком драйвера или разработчиком, использующим первый. Они включают некоторое описание на основе схемы GDL в файл(ы) .gpd своего драйвера, чтобы конечные пользователи могли определять свои собственные размеры бумаги. Для ясного и прямого примера см. последнюю ссылку выше.

person amirfg    schedule 11.01.2019
comment
Пожалуйста, дайте мне знать, если у вас есть подобное решение, реализованное в V4. - person amirfg; 25.03.2019

Бумага нестандартного размера должна быть создана пользователем в форме "Свойства сервера печати". Он появился в раскрывающемся списке размера бумаги для принтера, если он соответствует минимальному / максимальному размеру и другим.

person Alexander A. Sharygin    schedule 04.07.2016