对于启用非AirPrint的打印机,Apple没有内置API。 我了解到我们可以在打印机上添加WiFi模块。所以我的问题是:
我找到了以下一个:https://github.com/opentable/star-printing。
但是从文档中我无法理解:它仅适用于支持AirPrint的打印机吗?
以下是我可以使用iPad连接桌面打印机的方法。
答案 0 :(得分:0)
尝试回答您的所有问题:
If I add a wifi module, will my printer be AirPrint enabled?
Can a non-AirPrint printer be made into an AirPrint printer?
没有。您需要兼容AirPrint的打印机,只需通过WiFi即可使其无法成为AirPrint打印机,并且您无法更改设备以使其成为AirPrint打印机。
If not, can I still use it?
是。但是,它需要您直接打开与打印机的连接(通过套接字)并以这种方式发送数据。这真的不太难。可能有一些库可用,但我没有特别尝试过。假设您已经拥有PCL数据,打开端口和发送数据blob的代码非常简单。
Can I connect to a WiFi printer?
是的,如上所述。
... Bluetooth?
是的,但仅适用于MFi(Made For iOS)打印机。
... Bonjour
是的,通过内置的打印对话框。
... Networked
这可能与WiFi打印的方式相同,但我还没有尝试过。
希望有所帮助,如果我能澄清任何事情,请告诉我。
答案 1 :(得分:-2)
假设,...
mymac
,192.168.111.111
,abcd
的共享打印机( NOT 需要是AirPrint吗? - 能够!)和DefaultAuthType none
放入/etc/cups/cupsd.conf
), ...然后,您可以将您的计算机充当到iOS客户端可用的abcd
队列的AirPrint网关。
要测试这个,只需在Terminal.app窗口中执行以下命令(注意,命令不会返回 - 如果关闭Terminal.app窗口,命令的效果将消失!)
dns-sd \
-P AirPrint-abcd \
_ipp._tcp,_universal \
local. \
631 \
mymac.local. \
192.168.111.111 \
pdl="application/pdf,image/urf" \
kind="document" \
priority="1" \
product="Model Name of my Printer" \
rp="printers/abcd" \
URF="DM3" \
Duplex="T" \
Color="T" \
note="Testing AirPrint via MacBook"\
txtvers="1" \
qtotal="1" \
printer-type="0x0480FFFC" \
printer-state="3" \
air="none" \
UUID="54321abc-1234-1234-abcd-1238e4bdcbf8"
您可以提出一个脚本或cron作业,每次启动Mac时都会在后台执行此命令。这留给读者练习。
此外,如果第一台Mac提供共享打印队列并且上述所有详细信息与第一台Mac的设置相匹配,则可以在同一网络上的第二台完全不同的Mac上运行同一命令。
背景信息:
dns-sd
命令行实用程序是一个测试和开发工具,适用于所有进入Bonjour,mDNS(多播DNS)和DNS-SD(基于DNS的服务发现)的人。
-P
的 dns-sd
参数将向您的本地LAN / WLAN发出Bonjour“代理公告”。该公告将告知潜在的AirPrint客户以下信息:
.local.
域中有一个AirPrint设备。Airprint-abcd
。192.168.111.111
和端口631
来访问。printers/abcd
的打印队列名称进行打印。有关此实用程序的详细信息,请参阅 man dns-sd
。有关更多背景信息,请参阅dns-sd.org和my other answers on similar questions。