Форум сайта python.su
В разрабатываемой прогамме необходимо отправлять на печать с принтера сформированные программой отчет. Принтеров к в сети уйма и порой необходимо отправлять на какой-то определеный.
Для рабоыт с принтерами решил использовать win32print, список принтеров можно вызвать с помощью < win32print.enumprinters > , мн же необходимо сформировать список принтеров что через выпадающий список(combobox) пользователь мог выбрать на какой принтер ему отправлять отчет.
Если у когото есь какие либо соображения буду признателен.
Офлайн
Форматированный програмный отчет можно представить в виде текстового файла?
Офлайн
да, однако он просто хранится в памяти как масив.
я нашел следующее решение:
printers = win32print.EnumPrinters ( win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS )
Отредактировано RoDebian (Авг. 11, 2013 13:56:41)
Офлайн
Я делаю вообще не так…
Принципиально не юзаю win32, так как это платформозависимое решение. Кроме того, как показывает мой опыт, посылать на принтер все автоматом - нельзя. Нужно дать пользователю возможность предварительно редактировать отправку.
Я деалю так:
1 формирую нужный файл в формате *.odt.
2 открываю его в openoffice.
3 передаю управление пользователю, который может:
3.1 отредактировать файл;
3.2 пересохранить сохранить файл;
3.3 послать файл на печать (и самостоятельно выбрать принтер);
3.4 и т.п.
Если нужно подробнее - пишите…
P.S. Кстати, у меня все отображается нормально, т.е.
((8388608, 'Microsoft XPS Document Writer,Microsoft XPS Document Writer,', 'Microsoft XPS Document Writer', ''), (8388608, 'hp deskjet 990c series,hp deskjet 990c series,', 'hp deskjet 990c series', ''))
Отредактировано 4kpt (Авг. 11, 2013 14:19:11)
Офлайн
8388608 вот эти цифры я пытаюсь убрать но без успешно.
платформа под которую пишу windows xp/7, в офисе с другими осями компов нет. было бы любопытно смотреть на ваш вариант решения данной задачи
Офлайн
Я сам сижу под Fedora и ХР. БОльшую часть под ХР, так как вынуждают клиенты :(
Совсем не понял, как связан мой вариант и операционная система?
Программа без проблем будет работать там, где можно установить Open Office, а его можно установить практически везде (есть инсталяхи и под винду). С учетом занимаемого места в 380 Мб он будет полегче отстоя от Microsoft.
Кроме того, нужно понимать, что по сети на принтер передается уже подготовленное для печати задание (специально отформатированное для определенного принтера), поэтому наличие OpenOffice даже на машине-приемнике не обязательно.
P.S. Избавится от цифр:
import win32print printers = win32print.EnumPrinters ( win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS) res =[printer[2] for printer in printers] print res
Отредактировано 4kpt (Авг. 11, 2013 17:37:30)
Офлайн
спасибо за решение, и уже в n раз выручили меня
пример кода с вашим решением не моглибы выложить
Офлайн
Не за что.
Соберите и выложите пример файла сообщения (можно и в doc формате).
На основе него можно будет собрать odt и выложить процесс сборки. Пока я не знаю с чем работаю и какой нужен результат.
Отредактировано 4kpt (Авг. 11, 2013 18:09:18)
Офлайн