Печать на лазерном принтере из DOS приложения на C++

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
UZ
Сообщения: 5
Зарегистрирован: 03 май 2005, 22:12
Откуда: Бердск
Контактная информация:

03 май 2005, 22:36

Пожалуйста, если кто знает, напишите код програмки, с помощью которой можно вывести на лазерный принтер форматированный текст на C++ (не Visual, а обычном до версии 5.01 включительно), или подскажите как это сделать.
Bikutoru
Сообщения: 16
Зарегистрирован: 13 авг 2004, 15:56

05 май 2005, 08:45

В DOS есть специальный порт под названием prn. Если его открыть для записи как обычный файл, то данные, которые будут в него записаны, выведутся на печать. С лазерным принтером мне это тестировать приходилось - работало... Вот только, скорее всего, возникнут проблемы с русским языком...
Не ошибается тот, кто ниченго не делает...
UZ
Сообщения: 5
Зарегистрирован: 03 май 2005, 22:12
Откуда: Бердск
Контактная информация:

05 май 2005, 09:28

2Bikutoru этот вариант уже испробован, просто под досом при копировании в PRN это срабатывает, но если открывать файл для записи в Си, тоо единственный эффект это то, что загорается индикация передачи данных, в лучшем случае печать начинается минут через 15-20. для справок: файл для печати пробовал и оставлять открытым и закрывал. Пожалуйста если есть, то еще идеи.
mobius
Сообщения: 151
Зарегистрирован: 25 янв 2005, 18:42
Откуда: Минск
Контактная информация:

05 май 2005, 10:31

Вобщем, есть такая прога DosPRN
Она перехватывает все сообщения из LPT и выводит на любой виндовский принтер!
Настройки довольно удобные, есть конечно глюки небольшие, но работать можно, причём можно задавать шрифт по умолчанию и т.д
Всё об отдыхе на http://chugaga.com
UZ
Сообщения: 5
Зарегистрирован: 03 май 2005, 22:12
Откуда: Бердск
Контактная информация:

05 май 2005, 13:24

Дело в том, что мне нужно самому написать прогу, одной из функций которой должна быть печать на лазерном принтере, так что готовые программы мне не подходят. Еще варианты...?
mobius
Сообщения: 151
Зарегистрирован: 25 янв 2005, 18:42
Откуда: Минск
Контактная информация:

05 май 2005, 13:33

Тогда тебе остается только одно. Изучать коды принтера и писать их в LPT
Будешь гемороиться под каждую модель. Иначе никак!
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

05 май 2005, 14:10

Если принтер подключен к LPT-порту, то текст можно выводить как в обычный текстовый файл, только имя файла нужно указать "LPT1".
Печать начинается сразу после получения символа новой страницы ('\f') или после закрытия файлового потока.

Код: Выделить всё

#include <fstream.h>

ofstream ofs("LPT1");
ofs << "Hello, printer!" << '\f';
ofs.close();

Если вместо русских букв будут выводиться символы других алфавитов, то нужно подгрузить русскую кодовую страницу (866), обычно это делается с помощью специальной утилиты, которая поставляется вместе с принтером. Лучше её загружать вместе с загрузкой операционной системы через autoexec.bat
UZ
Сообщения: 5
Зарегистрирован: 03 май 2005, 22:12
Откуда: Бердск
Контактная информация:

05 май 2005, 20:02

2WinMain Большое спасибо, закрытие файлового потока в моем случае не помогало, а вот флажок "\f" пришелся очень кстати и принтер его "съел".
Ответить