Delphi 反向换料或其他连续换料不同步的解决方案(矩阵)

Delphi 反向换料或其他连续换料不同步的解决方案(矩阵),delphi,printing,Delphi,Printing,我在发票应用程序中使用连续5英寸表单(预打印),似乎许多矩阵打印机不支持这种5英寸表单长度。现在的关键问题是,当只打印一个表单时,另外两个表单也需要与linefeed一起抛出才能删除,因为FF代码会导致连续表单不同步。我需要保持表单同步,以便下次软件打印到正确的位置 我想知道反向换行是否能解决这个问题,例如,我的软件是否能将纸张撕下,并显示一个对话框,然后反向换行 我的问题是,如何使用松下和爱普生打印机反转linefeed,或者是否有其他推荐的解决方案 请注意,我使用原始(文本输出)打印。如果应

我在发票应用程序中使用连续5英寸表单(预打印),似乎许多矩阵打印机不支持这种5英寸表单长度。现在的关键问题是,当只打印一个表单时,另外两个表单也需要与linefeed一起抛出才能删除,因为FF代码会导致连续表单不同步。我需要保持表单同步,以便下次软件打印到正确的位置

我想知道反向换行是否能解决这个问题,例如,我的软件是否能将纸张撕下,并显示一个对话框,然后反向换行

我的问题是,如何使用松下和爱普生打印机反转linefeed,或者是否有其他推荐的解决方案


请注意,我使用原始(文本输出)打印。

如果应用程序是Windows应用程序(从Windows打印机驱动程序访问打印机),则打印机属性应允许您定义纸张格式,包括“用户定义”的格式(例如,请参阅)。 这可能会改变表单提要的效果

如果应用程序以文本模式运行打印机并使用ESC/p字符模式序列,则可以使用转义序列定义表单长度(以行为单位)。查看ESC/p的使用情况应有助于将正确的序列发送到打印机。ESC/p信息

更具体地说,您可能需要以下序列:

27 67 n     ESC C n     Select page length in lines (n=1..127)
27 67 48 n  ESC C 0 n   Select page length in inches (n=1..22)

(但还有更多功能)

使用一些非常古老的DOS/Foxpro时代的内存,您可以只跟踪打印的行数,然后使用正确的LF数移动到下一页

您也可以使用ESC C n设置表单长度,其中n是行数。由于默认每英寸行数为6,因此您希望发送6*5,即30

差不多

write(prt, $27'C', $30);
我们应该这样做


松下的基本控制代码与爱普生的类似。我还记得一些松下打印机可以自动弹出纸张撕下,然后在下一次打印作业开始后倒带。

我使用StartRawPrintJob,我发送了您提到的代码ESC C 0 5,但它似乎没有影响任何想法??发送FORMFEED打印机输出大约10英寸。汤姆:我知道这是可以做到的,因为我很多年前在爱普生票证打印机上做过。不幸的是,我不记得确切的细节,但我记得我花了一些时间让Windows让开,以发送我想要的准确字节序列。我建议的一件事是,你找到一种方法来查看实际的字节序列这台打印机真的很受欢迎。可能是通过打印到文件。我记得一些矩阵打印机有一个“转储模式”,可以通过设置一个特殊的打印机开关组合来启动。我看看是否能找到一些处理这种打印机的旧Delphi源代码。