![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Принтер замедляет печать [D7, Win95/98, WinME, Win2k, WinXP]
ndn © (2005-08-27 09:21:00)Здравствуйте Уважаемые мастера, у меня появилась проблема с печатью на принтер. Печать происходит из приложения с помощью функций Windows SDK: DrawText (можно центрировать и разбивать слова автоматически), Lineto и MoveTo (рисование линий). Делаю Escape(hdcPrint, STARTDOC(hdcPrint,lpdi), 8, Pansichar('Документ'), NiL);
далее рисую на Hdc, а затем
Escape(hdcPrint, ENDDOC(hdcPrint), 8, '', NiL);
Не использую STARTPAGE, ENDPAGE, NEWFRAME так как результат без них аналогичен тому что и с ними. Но в процессе печати проявляется непонятная мне закономерность: если печать идет в левом верхнем углу документа, то все протекает довольно шустро даже для матричного принтера, печатающего в графическом режиме. Но стоит мне задать начальное смещение (5-10 см.) без разницы что вниз, что в право скорость печати резко падает в несколько раз, хотя печатается тоже самое (перед печатью каждой новой строчки принтер задумывается на несколько секунд, хотя раньше, до смещения, печать этого же документа не вызывала у него такого умственного напряжения). Если убираю смещение, то все происходит опять с нормальной скоростью. Принтер установлен как IBM Proprinter II, обработчик печати – winprint, тип данных – RAW, печать идет через порт COM1. Ставил родные драйвера (Olivetti PR2)- результат тот же, то есть я так понял проблема не в неправильной работе драйвера принтера.
Подскажите пожалуйста в чем проблема и как от этого избавиться, так как в день планируется печатать до 300 документов, а с такой скоростью это не возможно.
tesseract (2005-08-31 21:29:00) [1]На принтер всегда идёт картинка. Если конечно не используется программа с поддержкой печати PCL или Postscript.
Я не знаком с твоим принтером, но как правило по скорости быстрее посмтореть что там пишет драйвер и реализовать прямую передачу в порт. Т.к. не будет задержки и обработки драйвером.
>>Попробую использовать эти функции, а можно ли как нибудь указать принтеру что ему надо печатать не с начала листа, а с середины,
Да принтер через свой язык такую возможность поддерживает. но насчёт драйвера - ему нужна картинка.
ndn (2005-08-31 18:58:00) [2]Создаю контекст устройства CreateDC, в нем рисую , а затем по EndDoc печатается. Попробую использовать эти функции, а можно ли как нибудь указать принтеру что ему надо печатать не с начала листа, а с середины, а то как я понял, при задании координат печатаемой точки, например х=100,у=100, передача данных на порт происходит примерно так = 0000000.....0000001000..., т.е. передаются все предыдущие пустые точки, засчет этого и происходит замедление. Правильна ли моя догадка?
Можно ли задать начало координат в точке х=100, у=0, и теперь на порт надо будет подать всего лишь один нуль, что при передаче по ком порту значительно сэкономит время, и как это сделать?
tesseract (2005-08-29 10:27:00) [3]>>> STARTPAGE, ENDPAGE, NEWFRAME
Используй это ускоряет печать. Я на EZ-2 так делал. Тормозов ни туда ни обратно не было.
Ты печатаешь в графическом режиме и посылаешь данные построчно?
Или создаёшь картинку только потом отправляешь на печать?
ndn (2005-08-27 18:21:00) [4]Перевожу HdcPrint в режим Lowmetrics и получаю все в 0.1 мм теперь определяю смещение от 0 точки непечатной зоны и вношу корректировку в координаты. Com принтеры хоть и тормозные, но символы в левой половине он печатает с нормальной скоростью.
tesseract (2005-08-27 11:44:00) [5]Как задаёшь смещение? Да и вообще Com-принтеры вещь тормозная.