iOS 未启用 AirPrint 的打印机
Non-AirPrint-enabled printer for iOS
对于未启用 AirPrint 的打印机,Apple 没有任何内置 API。
我了解到我们可以为打印机添加一个 WiFi 模块。所以我的问题是:
- 如果我将 WiFi 模块添加到打印机,它会支持 AirPrint 吗?
- 如果不是:是否可以通过其他方式使不支持 AirPrint 的打印机支持 AirPrint?
- 如果我得到一台不支持 AirPrint 的打印机,是否可以从 iPad 连接到它?
- 如果是,我应该使用什么协议?
- 有这方面的开源库吗?
我找到了以下一个:https://github.com/opentable/star-printing。
但是从文档中我无法理解:它是否仅适用于支持 AirPrint 的打印机?
我猜下面是我可以使用 iPad 连接桌面打印机的方法。
- 已启用 WIFI
- 蓝牙已启用
- 启用 Bonjour 的打印机
- 联网打印机(与iPad具有相同ip段的打印机)
正在尝试回答您的所有问题:
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?
是的。但是,它需要您直接打开与打印机的连接(通过套接字)并以这种方式发送数据。做起来真的不难。可能有一些可用的库,但我没有专门尝试过。打开端口并发送数据 blob 的代码非常简单,假设您已经有了 PCL 数据。
Can I connect to a WiFi printer?
是的,如上所述。
... Bluetooth?
是的,但仅限于 MFi(为 iOS 制造)打印机。
... Bonjour
是的,通过内置的打印对话框。
... Networked
这可能和WiFi打印一样,但我还没有尝试过。
希望对您有所帮助,如果我能澄清任何问题,请告诉我。
假设,...
- 你有一本Mac(书) 运行ning OS X,[=73=]
- 这个 Mac 的主机名是
mymac
,
- 它的IP地址是
192.168.111.111
,
- 它安装了一台名为
abcd
的 共享 打印机(不需要 需要支持 AirPrint!),并且
- 打印机共享不需要身份验证(将
DefaultAuthType none
放入/etc/cups/cupsd.conf
),
...然后您可以让您的计算机充当 abcd
队列的 AirPrint 网关,可供 iOS 客户端使用。
要对此进行测试,只需在 Terminal.app window 中执行以下命令(注意,该命令不会 return -- 如果您关闭 Terminal.app window,命令的效果将消失!)
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 启动时在后台执行此命令。这是留给 reader.
的练习
此外,如果第一个 Mac 提供共享打印队列和所有上面的详细信息与第一个 Mac 的设置相匹配。
背景资料:
dns-sd
命令行实用程序是一个测试和开发工具,供每个人使用 Bonjour、mDNS(多播 DNS)和 DNS-SD(DNS-基于服务发现)。
dns-sd
的 -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 and my other answers on similar questions。
对于未启用 AirPrint 的打印机,Apple 没有任何内置 API。 我了解到我们可以为打印机添加一个 WiFi 模块。所以我的问题是:
- 如果我将 WiFi 模块添加到打印机,它会支持 AirPrint 吗?
- 如果不是:是否可以通过其他方式使不支持 AirPrint 的打印机支持 AirPrint?
- 如果我得到一台不支持 AirPrint 的打印机,是否可以从 iPad 连接到它?
- 如果是,我应该使用什么协议?
- 有这方面的开源库吗?
我找到了以下一个:https://github.com/opentable/star-printing。
但是从文档中我无法理解:它是否仅适用于支持 AirPrint 的打印机?
我猜下面是我可以使用 iPad 连接桌面打印机的方法。
- 已启用 WIFI
- 蓝牙已启用
- 启用 Bonjour 的打印机
- 联网打印机(与iPad具有相同ip段的打印机)
正在尝试回答您的所有问题:
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?
是的。但是,它需要您直接打开与打印机的连接(通过套接字)并以这种方式发送数据。做起来真的不难。可能有一些可用的库,但我没有专门尝试过。打开端口并发送数据 blob 的代码非常简单,假设您已经有了 PCL 数据。
Can I connect to a WiFi printer?
是的,如上所述。
... Bluetooth?
是的,但仅限于 MFi(为 iOS 制造)打印机。
... Bonjour
是的,通过内置的打印对话框。
... Networked
这可能和WiFi打印一样,但我还没有尝试过。
希望对您有所帮助,如果我能澄清任何问题,请告诉我。
假设,...
- 你有一本Mac(书) 运行ning OS X,[=73=]
- 这个 Mac 的主机名是
mymac
, - 它的IP地址是
192.168.111.111
, - 它安装了一台名为
abcd
的 共享 打印机(不需要 需要支持 AirPrint!),并且 - 打印机共享不需要身份验证(将
DefaultAuthType none
放入/etc/cups/cupsd.conf
),
...然后您可以让您的计算机充当 abcd
队列的 AirPrint 网关,可供 iOS 客户端使用。
要对此进行测试,只需在 Terminal.app window 中执行以下命令(注意,该命令不会 return -- 如果您关闭 Terminal.app window,命令的效果将消失!)
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 启动时在后台执行此命令。这是留给 reader.
的练习此外,如果第一个 Mac 提供共享打印队列和所有上面的详细信息与第一个 Mac 的设置相匹配。
背景资料:
dns-sd
命令行实用程序是一个测试和开发工具,供每个人使用 Bonjour、mDNS(多播 DNS)和 DNS-SD(DNS-基于服务发现)。
dns-sd
的 -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 and my other answers on similar questions。