如何使用 BAT 文件在 DOS 中打印记事本文件时减小字体大小

如何使用 BAT 文件在 DOS 中打印记事本文件时减小字体大小

我正在使用 DOS BAT 文件打印文本文件(账单)。问题是字体太大,不适合纸张大小。BAT 代码是

copy bill.txt \\127.0.0.1\bill exit

请解释如何减小字体大小。我正在使用 c# 写入文本文件

答案1

我假设打印机支持打印命令代码(例如 PCL)。大多数中高端打印机都支持打印 PCL。

在打印文本之前,您需要向打印机发送命令以切换到较小的字体。您甚至可以使用命令切换到横向字体(但对于账单来说,这可能不是您想要的)。

对于大多数打印机,标准字体应为“Courier 12cpi”。您可以切换到更紧凑的 17cpi 字体。(对于 PCL,您可以找到命令这里

您需要small.txt使用以下代码创建一个小的文本文件:

<Esc>&k2S

您需要<Esc>用实际的转义字符(0x1B 或字符 27)替换。

您可以像这样打印账单:

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

您甚至可以切换到比例字体,如“Univers”(类似于“Arial”)并设置字体大小:

<Esc>(s1p10v52T

代表(s1p比例打印,10v代表字体大小,52T代表“Univers”。使用这种方法,您可以选择准确的字体大小。使用以前的“Courier”,您只有 10、12 和 17 cpi。

然而我应该注意,普通文本文件将其文本与空格对齐,并期望每个字符具有相同的宽度,因此如果文件中有列,它们将无法正确对齐。

编辑:如果您没有支持转义代码的编辑器,您可以执行以下操作(但您可以编写一个小型 C# 程序):

创建一个包含以下内容的文本文件(称之为small.vbs):

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

然后在命令提示符下执行以下操作:

cscript /nologo small.vbs > small.txt

这将生成一个small.txt可以使用复制命令的文件。

编辑2: 我突然想到,如果不是宽度这是一个问题,但是高度文本,则切换到 17cpi 是没有意义的,因为仍然打印 6 行/英寸。然后,您应该使用以下命令将打印机切换到 8 行/英寸:

<Esc>&l8D

然后使用 cscipt 调整上述方法。(更改"&k2S"in &l8D。)
您也可以同时执行这两项操作(17cpi 和每英寸 8 行)

<Esc>&k2S<Esc>&l8D

所以做成small.txt这样:

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

答案2

很大程度上取决于文件本身。如果您的文本文件是为横向宽度设计的,而您以纵向模式打印,那么文件将无法正确适应。

如果您在记事本中打开文件,则可以选择“格式”菜单,然后选择“字体”来更改字体大小。

使用记事本中的“格式”菜单也会为您提供自动换行选项。这也可能产生影响,但如果您期望特定的间距、对齐等,则可能会影响输出。

根据文件中包含的文本的宽度,您可能需要以横向而不是纵向打印。

相关内容