如何在OS X上向打印机发送低级转义序列



我有一个字符串的打印机转义序列(ESC/p),需要发送到Mac OS X上的打印机(USB或网络)。我该怎么做?直接使用CUPS是最好的方式吗?有没有"更高层次"的方式?

在你问之前:我真的需要发送转义序列,不能简单地使用高级打印系统。

编辑:这些项目和资源在其他语言(如Java:)中提供了类似的功能

  • http://code.google.com/p/escprinter/
  • http://code.google.com/p/escprinter/source/browse/trunk/net/drayah/matrixprinter/ESCPrinter.java
  • http://code.google.com/p/jzebra/

我想最好的方法就是使用CUPS/lp:

echo "ctrl_char" | cat file_to_print - | lp [...flags...]

您可以使用unix系统调用在C中发送控制字符:

char escp_seq[BYTES_FOR_SEQUENCE];
// ...initialize the ESC/P sequence.
int printer_fd = open("/dev/lp0", O_WRONLY);
ssize_t bytes_written = write(printer_fd, escp_seq, sizeof(escp_seq));
close(printer_fd);

至于可打印数据本身,您可以使用核心打印。

使用此库,您可以使用任一

OSStatus PMPrinterPrintWithProvider (
   PMPrinter printer,
   PMPrintSettings settings,
   PMPageFormat format,
   CFStringRef mimeType,
   CGDataProviderRef provider
);

这将需要您使用数据构建CGDataProviderRef。

或者,您可以使用一个文件:

OSStatus PMPrinterPrintWithFile (
   PMPrinter printer,
   PMPrintSettings settings,
   PMPageFormat format,
   CFStringRef mimeType,
   CFURLRef fileURL
);

我很抱歉不能给出一个具体的代码示例,但我真的不确定你打算如何构建你想要发送到打印机的数据。这至少应该为你开始四处攻击提供一个基础。我相信上面提供的苹果文档中有足够的东西来完成你的任务。

祝你好运!

我们使用脚本从Mac bash shell打印(在专业的自动化产品测试仪中)。

非常简化的"你好"标签打印如下:

data="x1Biax00"
data="${data}x1B@"
data="${data}x1BXx32"
data="${data}Hello"
data="${data}x0C"
# Check your own binary for debugging:
echo -ne $data | hexdump -C
# print the actual label
echo -ne $data | lp -d Brother_PT_P900W

请注意,您必须将打印机名称替换为自己的打印机名称。

相关内容

  • 没有找到相关文章

最新更新