如何使用 chr 值在点阵打印机中打印文本文件?

How to print a text file in Dot Matrix printer using chr values?

我尝试使用从 crystal 报告导出的 doc、rtf、pdf、xlsx 格式在点阵打印机 (Wipro (wep) EX 330+dx) 中打印文件,但过程打印速度非常慢。
我正在尝试打印帐单,但帐单需要大约 50-60 秒的时间。

我什至尝试通过 crystal 报告将文件传输到文本,但没有帮助。

所以,我的一位同事向我展示了一种通过文本文件打印它的方法,他正在使用 chr(14) & "TITLE NAME HERE" & chr(27) & chr(18) 等命令。它在文本文件中写入 TITLE NAME HERE 等文本文件中的一些特殊字符,但是当我们使用 bat 文件打印它时,字符 TITLE NAME HERE 变得又大又粗点阵打印机,打印时特殊字符消失。此外,打印速度很快。我猜这些特殊字符就像文本文件 HTML 中的标签一样工作。

所以,我的问题是,是否有这些字符的指南以及它们是如何工作的?
什么字符对印刷和所有东西有什么影响?

Chr() 函数 return 是指定数字的 ASCII 字符。

Dim MyChar
MyChar = Chr(65)    ' Returns A.
MyChar = Chr(97)    ' Returns a.
MyChar = Chr(62)    ' Returns >.
MyChar = Chr(37)    ' Returns %.

数字0-31代表“不可打印”的字符。例如Chr(10) 表示 LineFeed,Chr(13) 表示 Carriage return。

数字32-47表示一些符号如, , . , / , * , etc

48-57代表数字0 - 965 - 90 表示字母 A-Z.

有关这些值的完整列表,请参阅 here and here

有关 ASCII 码工作原理的详细信息,请参阅 here

您应该可以通过使用打印机支持的字体来解决速度问题。否则,打印机可能会被迫将您的测试呈现为图像。

您是否看到 'Draft 10 cpi' 字体是 Crystal 中的一个选项?

目前关于这个问题的讨论结论是crystal报告打印比点阵打印机中的文本文件慢。
因此,如果我们谈论在文本文件中生成报告,
以下是我的同事提供的一些变量,这些变量可以简化在文本文件中生成报告的过程。

'---------------------------------------------DOT MATRIX PRINTER VARIABLES-----------------------------------------------------------------------
Dim es = Chr(27)
Dim eject = Chr(12)
Dim bx1 = Chr(176)
Dim bx2 = Chr(177)
Dim bx3 = Chr(178)
Dim bx4 = Chr(219)
Dim ebig1 = Chr(14) & Chr(27) & "w1" & Chr(27) & "G" 'extra large
Dim ebig2 = Chr(27) & "w0" & Chr(27) & "H" & Chr(18) 'extra large
Dim emf1 = es & "E"             ' Select Emphasize Mode
Dim emf2 = es & "F"             ' Cancel Emphasize Mode
Dim ita1 = es & "4"             ' Select Italic Mode
Dim ita2 = es & "5"             ' Cancel Italic Mode
Dim uln1 = es & "-1"            ' Turn Underlining On
Dim uln2 = es & "-0"            ' Turn Underlining Off

'Commented variables are for small column printers like Epson printers
'Dim chr1 = Chr(27) & "(s10H"
'Dim chr2 = Chr(27) & "(s10H"
'Dim cnd1 = Chr(27) & "(s16.5H"
'Dim cnd2 = Chr(27) & "(s10H"
'Dim big1 = Chr(27) & " "
'Dim big2 = Chr(27) & " "
'Dim stk1 = Chr(27) & "(s5H"
'Dim stk2 = Chr(27) & "(s10H"

Dim chr1 = es & "M"            ' Select 12 Pitch"
Dim chr2 = es & "P"            ' Select 10 Pitch
Dim big1 = es & "W1"           ' Select Double-width Mode(one line)"
Dim big2 = es & "W0"           ' Cancel Double-width Mode(one line)"
Dim cnd1 = Chr(15)             ' Select Condensed Mode
Dim cnd2 = Chr(18)             ' Cancel Condensed Mode
Dim stk1 = es & "G"            ' Select Double-strike Mode
Dim stk2 = es & "H"            ' Cancel Double-strike Mode
'------------------------------------------------------------------------------------------------------------------------------------------------

将文本文件直接打印到点阵打印机可能行不通。
注意:运行文本文件使用bat文件工作。
这就是我在文本文件中创建报告的方式。此处未显示的一些变量声明。

stringToPrint = Nothing
    Dim Repline As String = String.Join("", Enumerable.Repeat("=", 80)) ' 
    A LINE CREATED WITH 80 '=' character to show a visible linefeed

    stringToPrint = chr2 & Environment.NewLine & big1 & PubCName & big2 & Environment.NewLine
    stringToPrint = stringToPrint & Left$(PubCAdd, 30) & Space(IIf(PubCAdd.Length > 30, 0, 30 - PubCAdd.Length)) & Space(5) & "GST NO./PAN NO." & Space(1) & PubGSTNo & Environment.NewLine
    stringToPrint = stringToPrint & Left$(PubCAdd2, 30) & Space(IIf(PubCAdd2.Length > 30, 0, 30 - PubCAdd2.Length)) & Space(5) & "PHONE NO." & Space(1) & PubCPh1 & Environment.NewLine
    stringToPrint = stringToPrint & PubCCity & "-" & Space(1) & PubPinCode & Space(10) & big1 & "***TAX INVOICE***" & big2 & Environment.NewLine
    stringToPrint = stringToPrint & Repline & Environment.NewLine

我生成了一个 bat 文件说 Print.bat。 bat文件里面的代码是

@echo off
type fileaddresshere > prn
exit

fileaddresshere 包括完整地址和扩展名。示例:D:\TextPrint.txt
我不知道上面代码中的最后一个特殊字符,但我会尽快更新答案。

请随时对此答案提出建议。即使我现在正在尝试这些代码并观察其印刷效果,所以对我来说一切都是反复试验。