Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Печать на матричный принтер из RichEdit


lightix ©   (2004-08-11 09:05:00) 

Как из RichEdit выполнить печать на матричный принтер без учета шрифта (т.е. печатать встроенным шрифтом принтера, к примеру таким как бы я напечатал из доса copy имя_файла LPT1)?
При этом используя виндовые средства.


GrayFace   (2004-08-11 14:52:00) [1]

Очень черезжопный, но очень простой путь: записать в файл и сделать %SystemRoot%\system32\NOTEPAD.EXE /p [filename]
По-моему лучше напечатать все одним, но заранее выбраным шрифтом - это очень просто.


Анатолий   (2004-08-11 12:14:00) [2]


> Как из RichEdit выполнить печать на матричный принтер без
> учета шрифта (т.е. печатать встроенным шрифтом принтера,
> к примеру таким как бы я напечатал из доса copy имя_файла
> LPT1)?
> При этом используя виндовые средства.

Вашему принтеру все равно, какая оп. система у вас на компьютере. Матричный принтер может печатать в двух режимах: текстовом и графическом.

Текстовый режим стандартный, когда во входной буфер принтера поступают байты-коды символов в кодировке ASCII. Принтер из зашитой в него таблицы печатает соответствующие кодам символы. Размер шрифта можно задать на принтере. Это DOS.

В графический режим принтер переводится спецальными упр. кодами - Escape - командами. После такой команды, байт-коды интерпретируются как координаты точечного изображения. Все стандарные драйвера Windows ваши символы преобразуют в такие рисунки и печатают их соотв. Т.е. шрифты принтера в этом процессе не принимают участия, соотв. нельзя задать их размер.

Итак, у вас два пути:

Печатать непосредственно в порт через hFile := CreateFile(..'LPT1'..);
WriteFile(hFile, AnsiToAscIIBuf(RichEdit1.Lines[i]..);
Не забудьте перекодировку в ASCII (AnsiToAscIIBuf надо написать самому :) ).
И убедитесь, что LPT1 - это не именованый канал спулера печати, а симв. линк на драйвер параллельного порта '\Device\Parallel0'.

Другой путь: стандартный спулер через функции API может печатать сырой ('RAW') поток данных на принтер. Это описано во многих FAQ по Дельфи. Насколькон он эфективен, проверьте сами.

Удачи.


Наверх

Титульная страница Поиск, карта сайта Написать письмо