Показать полную графическую версию : [решено] печать txt файла
нужно решить задачу печати файла в DOS кодировке на принтер.
на печать файл отправляется через
Copy %File% LPT1
в первой строке у файла идет ESC последовательность для принтера, но проблема состоит в том, что Длинные строчки не переносятся, а просто обрезаются при печати. Уменьшение размера шрифта через ESC последовательность тоже уже дошло до разумного предела.
использовать для печати Notepad /P %File% не вариант.
Может ктото разбирается в ESC последовательностях для принтеров HP или знает удобную программу для консольной печати?
т.е. текстовый файл в дос-кодировке надо отправить на печать на лазерный принтер?
если быть точнее, то как отправить файл на печать Так, чтобы длинные строки переносились, а не обрезались.
прога была DOSPRN кажеться. поищи, если найду выложу.
п.с.
а не проще сразу TXT нормальный делать?
Уважаемый, проблема не в выводе на печать в DOS-WIN кодировке, а в Печати на принтер через консоль.
На сколько я помню DosPrint не умеет работать через командную строку.
Loki3D, ESC - это Epson, HP - это PCL... допустим последнее, 20cpi достаточно?
E(s20H&l1O&l16D
1234678901234678901234678901234678901234678901234678901234678901234678901234678901234678901234678901 2346789012346789012346789012346789012346789012346789012346789012346789012346789012346789012346789012 34678901234678901234678901
Тестирование принтера. Тестирование принтера.Тестирование принтера.Тестирование принтера.Тестирование принтера.Тестирование принтера.Тестирование принтера.Тестирование принтера.Тестирование принтера.Тестирование принтера.Тести
FYI: Controlling a HP Printer Directly with PCL (http://www.dragon-it.co.uk/links/hp_pcl_codes.htm)
amel27,
все равно задача не решается.
Даже при альбомной ориентации листа, которая задается командой &l1O, строка обрезается. Обрезается потому, что очень длинная, а мельчить с размером шрифта уже некуда.
и да. у HP это называется PCL команды. А распространенное называние ESC (Эскейп) еще от того, что перед командой вызывается нажатие клавиши Esc ASCII код 27. ну это так. :)
Даже при альбомной ориентации листа, которая задается командой &l1O, строка обрезается »о какой длине строки речь?.. кста у меня тоже альбом стоял, а HP 9050 взял 24 cpi - 261 символ против 226 при 20 cpi
{Esc}E Сброс
{Esc}(s24H 24 cpi
{Esc}&l1O Альбом
{Esc}&l16D 16 lpi
длина строки в txt файле
в реальном файле она составляет 305 символов.
но вот для примера, чтобы было понятно чего я хочу добиться приведу такую строку
123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
вот тут 310 символов
если печатать в албомной ориентации с размером шрифта 20cpi то влезет 226 символов
при портретной ориентации влезает 160. всё остальное просто обрезается.
Если печатать из notepad то на выходе я получаю всю строку целиком, за счет того, что проиходит перенос.
Вот я и интересуюсь, Есть ли какая то команда для принтера, которая заставит его перенести остальные символы в строке на новую, вместо того чтобы их просто не печатать.
я просмотрел команды в справочнике по PCL 5, разное перепробовал, но желаемого не добился.
Вот думаю,либо я чтото упустил, либо это впринципе не возможно при использовании ESC последовательности.
Печатать надо обязательно портретно и не Очень мелко.
а если печатать при помощи Dosprn
http://russian.dosprn.com/
Baw17, если не ошибаюсь DosPrint не работает консольно
Baw17, точно.. , но я имел ввиду DOSPRN
Есть ли какая то команда для принтера, которая заставит его перенести остальные символы в строке на новую, вместо того чтобы их просто не печатать »
Ну это скорее глобальные настройки принтера, чем PCL (который форматирует потоково). У Lexmark была опция Auto CRLF, у HP такого не припомню. Лобовой ход - расставить CRLF по тексту где надо, либо сваять прогу-фильтр, которая будет вставлять в процессе печати типа:
TYPE FILE.TXT|AutoCRLF 160 >PRN
продолжая ход мысли... Сваять прогу-фильтр несложно, но тогда возникнет другая проблема: если файл содержит PCL-команды, форматирование текста нарушится, а именно - длина строки будет короче на длину PCL-команды. Учет в проге всех PCL-команд довольно муторное занятие, поэтому лучше посылать PCL-команды отдельно от файла.
прилагаю свой вариант такой утилиты... я не программер, пусть спецы поправят если что... =)
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
int i, ch, ln=80;
if(argc == 2) ln = atoi(argv[1]);
while( true )
{
for( i=0; (i < ln) ; i++ ) {
ch = _fgetchar();
if (ch == EOF || ch == 10) break;
_fputchar(ch);
}
if (ch == EOF) break;
_fputchar(10);
}
return 0;
}пример использования:
<%FILE% AutoCRLF 60 >LPT1
P.S. бинарник собран в Microsoft Visual C++ 2008 Express
amel27,
Да, в итоге написал программу
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.