对于非AirPrint启用的打印机,Apple没有任何内置API . 我了解到我们可以在打印机上添加WiFi模块 . 所以我的问题是:
-
如果我将WiFi模块添加到打印机,它是否会启用AirPrint?
-
如果不是:启用非AirPrint的打印机能否通过其他方式启用AirPrint?
-
如果我使用不支持AirPrint的打印机,是否可以从iPad连接到它?
-
如果是,我应该使用什么协议?
-
这上面有没有开源库?
我发现了以下一个:https://github.com/opentable/star-printing .
但是从文档中我无法理解:它仅适用于支持AirPrint的打印机吗?
以下是我用iPad连接桌面打印机的方法 .
-
启用了WIFI
-
蓝牙已启用
-
Bonjour启用打印机
-
网络打印机(与iPad具有相同ip段的打印机)
2 回答
试着回答你的所有问题:
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打印的方式相同,但我还没有尝试过 .
希望有所帮助,如果我能澄清任何事情,请告诉我 .
假设,...
你有运行OS X的Mac(Book),
这个Mac的主机名是 mymac ,
其IP地址为 192.168.111.111 ,
它安装了一个名为 abcd 的共享打印机(不需要支持AirPrint!),以及
打印机共享不需要验证(将
DefaultAuthType none
放入/etc/cups/cupsd.conf
),...然后,您可以使您的计算机充当iOS客户端可用的
abcd
队列的AirPrint网关 .要测试这个,只需在Terminal.app窗口中执行以下命令(注意,命令不会返回 - 如果关闭Terminal.app窗口,命令的效果将消失!)
您可以提出一个脚本或cron作业,每次启动Mac时都会在后台执行此命令 . 这留给读者练习 .
此外,如果第一台Mac提供共享打印队列并且上述所有详细信息与第一台Mac设置匹配,则可以在同一网络上的第二台完全不同的Mac上运行同一命令 .
Background info:
dns-sd 命令行实用程序是一个测试和开发工具,适用于所有人进入Bonjour,mDNS(多播DNS)和DNS-SD(基于DNS的服务发现) .
-P 的 -P 参数将为您的本地LAN / WLAN创建Bonjour "proxy announcement" . 该公告将告知潜在的AirPrint客户以下信息:
.local.
域中有一个AirPrint设备 .它的名字是
Airprint-abcd
.可通过IP地址
192.168.111.111
和端口631
访问 .使用
printers/abcd
的打印队列名称打印到它 .它可以使用PDF和URF栅格文档 .
它不需要身份验证 .
它可以输出双面和彩色文档 .
有关此实用程序的详细信息,请参阅
man dns-sd
. 有关更多背景信息,请参阅dns-sd.org和my other answers on similar questions .