Печать на лазерном принтере из DOS приложения на C++
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Пожалуйста, если кто знает, напишите код програмки, с помощью которой можно вывести на лазерный принтер форматированный текст на C++ (не Visual, а обычном до версии 5.01 включительно), или подскажите как это сделать.
В DOS есть специальный порт под названием prn. Если его открыть для записи как обычный файл, то данные, которые будут в него записаны, выведутся на печать. С лазерным принтером мне это тестировать приходилось - работало... Вот только, скорее всего, возникнут проблемы с русским языком...
Не ошибается тот, кто ниченго не делает...
2Bikutoru этот вариант уже испробован, просто под досом при копировании в PRN это срабатывает, но если открывать файл для записи в Си, тоо единственный эффект это то, что загорается индикация передачи данных, в лучшем случае печать начинается минут через 15-20. для справок: файл для печати пробовал и оставлять открытым и закрывал. Пожалуйста если есть, то еще идеи.
Вобщем, есть такая прога DosPRN
Она перехватывает все сообщения из LPT и выводит на любой виндовский принтер!
Настройки довольно удобные, есть конечно глюки небольшие, но работать можно, причём можно задавать шрифт по умолчанию и т.д
Она перехватывает все сообщения из LPT и выводит на любой виндовский принтер!
Настройки довольно удобные, есть конечно глюки небольшие, но работать можно, причём можно задавать шрифт по умолчанию и т.д
Всё об отдыхе на http://chugaga.com
Дело в том, что мне нужно самому написать прогу, одной из функций которой должна быть печать на лазерном принтере, так что готовые программы мне не подходят. Еще варианты...?
Тогда тебе остается только одно. Изучать коды принтера и писать их в LPT
Будешь гемороиться под каждую модель. Иначе никак!
Будешь гемороиться под каждую модель. Иначе никак!
Если принтер подключен к LPT-порту, то текст можно выводить как в обычный текстовый файл, только имя файла нужно указать "LPT1".
Печать начинается сразу после получения символа новой страницы ('\f') или после закрытия файлового потока.
Если вместо русских букв будут выводиться символы других алфавитов, то нужно подгрузить русскую кодовую страницу (866), обычно это делается с помощью специальной утилиты, которая поставляется вместе с принтером. Лучше её загружать вместе с загрузкой операционной системы через autoexec.bat
Печать начинается сразу после получения символа новой страницы ('\f') или после закрытия файлового потока.
Код: Выделить всё
#include <fstream.h>
ofstream ofs("LPT1");
ofs << "Hello, printer!" << '\f';
ofs.close();
2WinMain Большое спасибо, закрытие файлового потока в моем случае не помогало, а вот флажок "\f" пришелся очень кстати и принтер его "съел".