Как изменить формат печати...
Вопрос: Как изменить формат печати для принтера? Печатаю с помощью TPrinter. Надо изменить формат листа на котором печатает принтер (например с A4 на Letter) без вызова диалога свойств принтера (пользователь вообще не должен знать, что это происходит).
Ответ : Выдрано из рабочей программы code: -------------------------------------------------------------------------------- HANDLE prn; // для открытия задаешь имя принтера так он называется в системе // например "HP 1100 LaserJet" // открой Пуск-Настройка-Принтеры и посмотри // програмно все принтеры компа лежат в Printer()->Printers; if(OpenPrinter("ля-ля-ля",&prn,NULL)){ BYTE *buffer=NULL; DWORD need=0; // первый вызов // узнаем сколько памяти нужно для получения данных GetPrinter(prn,2,buffer,0,&need); if(need){ // выделеям buffer=new BYTE[need]; //читаем GetPrinter(prn,2,buffer,need,&need); // преобразовываем PRINTER_INFO_2 *ppi2=(PRINTER_INFO_2 *)buffer; // устанавливаем бумагу ppi2->pDevMode->dmFields|=DM_PAPERSIZE; // здесь пишем нужный размер - не помню я как твой Letter называется ppi2->pDevMode->dmPaperSize=DMPAPER_A4; // следующая строчка необходима для совместимости с NT и 2000 // иначе надо получать текущий Security и писать его сюда ppi2->pSecurityDescriptor=NULL; // устанавливаем данные SetPrinter(prn,2,(LPBYTE)ppi2,0); delete[] buffer; } // и закрываем принтер ClosePrinter(prn); } -------------------------------------------------------------------------------- И еще - этот кусок рабочий, но там печать идет целиком через API. Как будет работать TPrinter сказать сложно. Может он переустановить формат захочет обратно. Но сначала можно попробовать это. --------------------------------------------------------------------------------
Содержание раздела