1

很抱歉这个冗长的问题,我花了几天时间试图解决这个问题,到目前为止已经找到了几十种方法来解决我的问题。

我目前正在尝试使用Datamax O'Neill E ClassMark 3 打印机打印一些标签。生成标签数据的 java 应用程序不能轻易修改,只需通过内置的“打印”功能输出纯文本(下面的输出示例)

Unit name [LF]
Unit description [LF]
Quantity

当我打印到理光打印机时,它可以工作(使用CR+LF理光驱动程序中的替换)。但是,当我打印到标签打印机时,它不会。我被告知标签打印机需要“控制代码”和“编码数据”才能打印。

我已经能够从打印机记录.prn文件,并且当从记事本向打印机发送完全相同的数据时,.prn文件要大得多,并且似乎是包含控制代码的“编码”文件。

这完全是在 Windows 环境中使用网络打印机(也尝试过 USB)。我基本上需要一些东西让我的 Java 应用程序打印到,这将为数据添加必要的“编码”,然后将其传递给 Datamax 打印机。有任何想法吗?

明天当我在办公室时,我会尝试发布一些示例,因为我目前正在手机上输入此内容。

4

2 回答 2

1

我最终做的是使用打印机日志记录功能将所有作业记录到 C:\printlogs\ 并有一个批处理文件,每隔几秒循环一次以在文件夹中的每个文件上运行记事本 /P,然后将它们全部清除。

我知道这是一个混乱的解决方法,但它有效。

于 2016-08-12T02:19:44.113 回答
-1

当您从记事本之类的东西打印文本时,该文本会被发送到打印驱动程序,该驱动程序会将其转换为打印机可以理解的格式。您通常无法将控制代码添加到记事本中的文本并使其正常工作,因为它不会被视为要打印的纯文本以外的任何内容。

可以在此处找到该打印机的程序员手册。这为您提供了在该打印机上打印标签所需知道的一切。但是为了将这些命令发送到打印机,您不能只是将它们粘贴到记事本中。您必须绕过打印驱动程序将它们直接写入打印机。为此,您将需要使用WritePrinter 函数。打印的步骤顺序如下:

To begin a print job, call StartDocPrinter.
To begin each page, call StartPagePrinter.
To write data to a page, call WritePrinter.
To end each page, call EndPagePrinter.
Repeat 2, 3, and 4 for as many pages as necessary.
To end the print job, call EndDocPrinter.

MSDN 条目WritePrinter包括示例代码(C 语言)的链接。

于 2016-08-10T13:54:05.107 回答