我正在使用 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
很大程度上取决于文件本身。如果您的文本文件是为横向宽度设计的,而您以纵向模式打印,那么文件将无法正确适应。
如果您在记事本中打开文件,则可以选择“格式”菜单,然后选择“字体”来更改字体大小。
使用记事本中的“格式”菜单也会为您提供自动换行选项。这也可能产生影响,但如果您期望特定的间距、对齐等,则可能会影响输出。
根据文件中包含的文本的宽度,您可能需要以横向而不是纵向打印。