Я предполагаю, что принтер поддерживает печать командных кодов (например, 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"