-1

Я использую файл DOS BAT для печати текстового файла (счета).Проблема в том, что размер шрифта слишком велик, поэтому он не соответствует размеру бумаги.BAT-код

copy bill.txt \\127.0.0.1\bill exit

объясните пожалуйста, как уменьшить размер шрифта. И я использую C # для записи в текстовом файле

2 ответа2

2

Я предполагаю, что принтер поддерживает печать командных кодов (например, PCL). Большинство принтеров среднего и высокого класса поддерживают печать PCL.

Перед печатью текста необходимо отправить команды на принтер, чтобы переключиться на шрифт меньшего размера. Вы можете даже переключиться на ландшафт с помощью команд (но это, вероятно, не требуется с счетом).

Для большинства принтеров стандартный шрифт должен быть "Courier 12cpi". Вы можете переключиться на более сжатый шрифт 17cpi. (Для PCL вы можете найти команды здесь)

Вам нужно сделать небольшой текстовый small.txt со следующим кодом:

<Esc>&k2S

Вам необходимо заменить <Esc> фактическим escape-символом (будь то 0x1B или символ 27).

Вы можете распечатать свой счет следующим образом:

copy small.txt+bill.txt \\127.0.0.1\bill
exit

Вы даже можете переключиться на пропорциональный шрифт, такой как "Univers" (это как "Arial") и установить размер шрифта:

<Esc>(s1p10v52T

(s1p означает пропорциональную печать, 10v для размера шрифта и 52T означает "Univers". С помощью этого метода вы можете выбрать точный размер шрифта. С предыдущим "Курьером" у вас есть только 10, 12 и 17 cpi.

Однако следует отметить, что обычные текстовые файлы выравнивают свой текст по пробелам и ожидают, что каждый символ будет иметь одинаковую ширину, поэтому, если в файле есть столбцы, они не будут правильно выровнены.

Редактировать: если у вас нет редактора, который поддерживает escape-коды, вы можете сделать следующее (но вы могли бы написать небольшую программу на c #):

Создайте текстовый файл со следующим (назовите его small.vbs):

Wscript.Stdout.Write Chr(27)+"&k2S"

Затем выполните в командной строке следующее:

cscript /nologo small.vbs > small.txt

Это приведет к созданию файла small.txt который вы можете использовать с командой copy.

Редактировать 2: Мне пришло в голову, что если проблема не в ширине , а в высоте текста, то вам бесполезно переключаться на 17 cpi, потому что при этом все равно печатается 6 строк на дюйм. Затем вы должны переключить принтер на 8 строк на дюйм с помощью следующей команды:

<Esc>&l8D

Затем настройте вышеуказанный метод с помощью cscipt. (измените "&k2S" в &l8D .)
Вы также можете сделать как (17 точек на дюйм и 8 линий на дюйм)

<Esc>&k2S<Esc>&l8D

так что сделайте small.txt так:

Wscript.Stdout.Write Chr(27)+"&k2S"+Chr(27)+"&l8D"
-1

Многое будет зависеть от самого файла. Если ваш текстовый файл был разработан для альбомной ширины, и вы печатаете в портретном режиме, то файл не будет соответствовать должным образом.

Если вы открываете файл в блокноте, вы можете выбрать меню «Формат», а затем выбрать «Шрифт», чтобы изменить размер шрифта.

Использование меню «Формат» в «Блокноте» также предоставит вам возможность переноса слов. Это также может иметь значение, но может повлиять на вывод, если вы ожидаете определенный интервал, выравнивание и т.д.

Возможно, вам придется печатать в альбомной, а не в вертикальной ориентации, в зависимости от ширины текста, содержащегося в вашем файле.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .