适用于iOS的非AirPrint打印机

时间:2015-07-24 12:19:48

标签: ios printing wifi airprint ios-bluetooth

对于启用非AirPrint的打印机,Apple没有内置API。 我了解到我们可以在打印机上添加WiFi模块。所以我的问题是:

  • 如果我将WiFi模块添加到打印机,它是否会启用AirPrint?
  • 如果没有:启用非AirPrint的打印机是否可以通过其他方式启用AirPrint?
  • 如果我使用不支持AirPrint的打印机,是否可以从iPad连接到它?
  • 如果是,我应该使用什么协议?
  • 这上面有没有开源库?

我找到了以下一个:https://github.com/opentable/star-printing

但是从文档中我无法理解:它仅适用于支持AirPrint的打印机吗?

以下是我可以使用iPad连接桌面打印机的方法。

  1. 启用WIFI
  2. 启用蓝牙
  3. Bonjour启用打印机
  4. 联网打印机(与iPad具有相同IP段的打印机)

2 个答案:

答案 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)

假设,...

  • 你有运行OS X的Mac(Book),
  • 此Mac的主机名为 mymac
  • 其IP地址为 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
  • 可以通过IP地址192.168.111.111和端口631来访问。
  • 使用printers/abcd的打印队列名称进行打印。
  • 它可以使用PDF和URF光栅文档。
  • 不需要身份验证。
  • 可以输出双面和彩色文档。

有关此实用程序的详细信息,请参阅 man dns-sd 。有关更多背景信息,请参阅dns-sd.orgmy other answers on similar questions