gpt4 book ai didi

c++ - 在 mac 中使用 fstream c++ 打印到网络打印机

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:53 24 4
gpt4 key购买 nike

我希望从我的 C++ 代码(我正在使用 xcode 4 编码)直接将一些文本打印到网络打印机。我知道 unix 上的一切都是文件,并且相信使用 c++ 中的 fstream 方法将文本重定向到打印机设备文件并非不可能。唯一的问题是我不知道/dev 中与我的网络打印机关联的设备文件。

  1. 是否可以使用fstream方式实现打印?有点像

    std::fstream printFile;
    printFile.open("//PATH/TO/PRINTER/DEV", std::ios::out);

    printFile << "This must go to printer" << std::endl;
    printFile.close();

    如果是的话

  2. 如何获取特定打印机对应的/dev目录下的文件?

提前致谢,尼克尔

最佳答案

在串行打印机时代曾经可以直接打开和写入文件;然而,这不是今天可用的方法。

CUPS守护进程在 OS X 和许多其他 Unix 系统上提供打印队列、调度和管理接口(interface)。您可以使用 lp(1)lpr(1) 命令来打印文件。 (不同的命令来自多年来 Unix 系统中可用的不同版本的后台打印程序;一个来自 BSD 源,另一个来自 AT&T 源。为了兼容性,CUPS 提供了这两个程序。)

您可能可以使用 popen(3) 实现类似的目标。在 shell 中,它类似于:

echo hello | lp -

- 表示从标准输入打印。

我还没有测试过这个,但是 popen(3) 等价物可能看起来像这样:

FILE *f = popen("lp -", "w");
if (!f)
exit(1);
fprintf(f, "output to the printer");

我建议首先在 shell 中测试一些输入,以确保 CUPS 准备好处理您打算发送的内容的格式。您可能需要使用 CRLF 而不仅仅是 \n 来终止行,否则打印机可能会“阶梯式”输出。或者,如果您要发送 PDF、PS 或 PCL 数据,则值得以最便宜的方式进行测试,以确保打印系统按预期工作。

关于c++ - 在 mac 中使用 fstream c++ 打印到网络打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9795706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com