自從 iPhone 出現之後,對上班族來說實在是天大的福音,不再需要準備一堆的行事曆、筆記本、電話簿、錄音機、打字機、筆墨紙硯 ...... 等等的辦公用品。
不管是要回覆郵件、簽核公文、詢價報價、行程聯絡、簡報製作,其實 iPhone 幾乎已經無所不能了,所以很多人出門可以不帶 Notebook、可以沒有 PC、可以不帶公事包,但是就是不能沒有手機。
不過,唯獨一件事情,iPhone 很難搞定,就是「列印文件 」。
前言
我們很熟悉在 PC 或是 Mac 上安裝印表機的步驟:
- 連接印表機的線材到 USB 或是 LPT Port。
- 下載印表機的驅動程式。
- 安裝印表機的驅動程式。
- 調整印表機的連線設定。
- 列印文件。
可是 ...... iPhone 上哪兒去找線材來接印表機? 哪裡有廠商提供驅動程式?
Apple 官方對 AirPrint 的說明是:「AirPrint 是 Apple 的一項技術,可協助您創作高品質的列印輸出成品,且不需要下載或安裝驅動程式。」
在 iPhone 上列印的動作就只要:
- 打開文件。
- 選擇 AirPrint 印表機。
- 列印文件。
事前準備
- Raspberry Pi Model B / B+,Model A / A+ 請自行加上 USB 網路卡。
- Raspbian 作業系統。
- iPhone / iPad 必須連線到與 Raspberry Pi 相同的網段。
- 於 iOS 5.1.1、iOS 7.12、iOS 8.2 測試成功。
- 要讓 Raspberry Pi 用 Wi-Fi 連線的話,請參閱 Raspberry Pi 的基礎 - 使用 Wi-Fi 無線網卡連上網路。
安裝列印服務
這邊要用的是 CUPS 套件 (曾經是 Common Unix Printing System 的縮寫,現在已經被 Apple 買下來了,直接變成套件名稱了),Raspbian 官方套件庫提供的版本是 1.5.3,目前最新版是 2.0.2。
sudo apt-get -y install cups
編輯主設定檔
sudo vi /etc/cups/cupsd.conf
找到「Listen localhost:631」,改成「Listen *:631」。
找到「<Location />」、「<Location /admin>」、「<Location /admin/conf>」三個段落,在「Order allow,deny 」的下一行,加入「Allow @LOCAL」。
將帳號 pi 加入 lpadmin 列印管理員群組。
sudo usermod -aG lpadmin pi
重新啟動 CUPS 服務。
sudo service cups restart
確認本機的 IP 位址,addr 後面接的就是我們的 IP。
ifconfig eth0 | grep inet
用瀏覽器連上 CUPS 的 Web 介面:https://192.168.88.23:631,千萬別忘了要用 HTTPS 協定,而且要指定 Port 631。
切換到「Administration」管理頁籤。
勾選「Share printers connected to this system」和「Allow users to cancel any job (not just their own)」,再按「Change Settings」。
CUPS 會詢問帳號密碼,剛剛已經讓帳號 pi 擁有印表機的管理權限,所以直接輸入即可。
稍候一下,等服務自動重新啟動後,按「Add Printer」來新增印表機。
選擇要連接的印表機,我選擇了現有的網路印表機 - EPSON AcuLaser MX14NF。
印表機的選擇,視實際的環境來選擇,共分為三種類型。
- Local Printers - 本機印表機。
- Discovered Network Printers - 搜尋到的網路印表機。
- Other Network Printers - 其他連線方式的網路印表機。
指定印表機的驅動程式,「Make」選擇廠牌,「Model」選擇型號。
可以到 The Linux Foundation - OpenPrinting 去查詢 CUPS 支援的印表機所有型號。
查不到也不用擔心,直接到印表機廠商的官網下載 PPD (Postscript Printer Description) 格式的驅動程式來安裝即可。
不過,如果連原廠都沒提供的話,建議還是改連接另外一台吧,例如 Epson MX14NF 就找不到 Linux Driver ......@@
最後設定印表機相關設定值,在「General」、「標語」、「政策」等頁籤裡調整,不同的機型會有不同的選項。
最後點選「Set Default Options」,便完成所有設定。
加入 AirPrint 支援
網路上幾乎所有的文章都是使用 GitHub 上面的 tjfontaine / airprint-generate 這個 Python 檔案。
配合下面這些步驟。
sudo apt-get -y install avahi-daemon avahi-discover libnss-mdns cups cups-pdf gutenprint pycups avahi python2
sudo mkdir /opt/airprint
cd /opt/airprint
sudo wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
sudo chmod 755 airprint-generate.py
sudo ./airprint-generate.py -d /etc/avahi/services
sudo wget https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
sudo ./airprint-generate.py -d /etc/avahi/services
sudo service avahi-daemon restart
sudo service cups restart
這個 Python 檔只是用來產生一個 Avahi 的 Service 描述檔。
內容的來源是自 CUPS 的設定。
不過,事實上早就不用那麼麻煩,只要安裝好 Avahi 及 mDNS 套件就行了
sudo apt-get -y install avahi-daemon avahi-discover libnss-mdns
重新啟動 Avahi Daemon,這樣子就可以了。
sudo service avahi-daemon restart
從 iPhone / iPad 列印
先用 iPhone 5 + iOS 7.12 來測試。
打開 Safari,點選中間的按鈕。
把下排的選單往左滑,點選「列印」。
點選「選取印表機」。
選擇 AirPrint 印表機了。
點選「列印」。
就可以將內容列印出來了。
iPhone 3GS + iOS 5.1.1 不知道是不是也可以適用呢?
同樣用 Safari 來測,點選中間的按鈕。
選擇「列印」。
點選「選取印表機」。
選擇 AirPrint 印表機了。
點選「列印」。
就可以將內容列印出來了。
同場加映 - 從 Mac 列印
在「Launchpad」裡打開「系統偏好設定」。
點選「印表機與掃瞄器」。
點選「+」。
這裡就可以看到 AirPrint 印表機了。
同場加映 - 從 PC 列印
我們直接用 Samba 套件來提供分享的功能。
sudo apt-get -y install samba
修改主設定檔。
sudo vi /etc/samba/smb.conf
有幾個地方要修改:
# 顯示在網路芳鄰裡的名稱,不設定的話會直接用 hostname。
netbios name = RPI2-FS
# 工作群組或網域的名稱
workgroup = WORKGROUP
# 啟用 CUPS 的支援
printing = cups
printcap name = cups
# 分享印表機
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = yes
read only = yes
create mask = 0700
# 分享印表機的驅動程式
[print$]
comment = Printer Drivers
path = /usr/share/cups/drv
browseable = yes
read only = yes
guest ok = yes
重新啟動 samba。
sudo service samba restart
在 Windows 裡就可以找到這台印表機了。
異常排除
基本上沒有什麼大問題,最大的麻煩是來自於找不到印表機的 Linux 驅動程式,除了 CUPS、印表機原廠、網路上的神人/好心人之外,暫時大概沒有辦法處理。
出現「找不到 AirPrint 印表機」有幾個可能。
- iPhone 跟 Raspberry Pi 的網路在不同網段。
- Avahi-Deamon 沒啟動,或是設定有問題。
- 印表機忘了開 ...
AirPrint 印表機的名稱不見了,只看到 hostname 時,什麼事都不用做,再稍等一下就行了,那是因為 Avahi 還在廣播資料,需要一些時間才能看到而已。
參考資料
- GitHub - tjfontaine / airprint-generate
- Apple Support - About AirPrint
- 鳥哥的 Linux 私房菜 - 第二十一章、系統設定工具(網路與印表機)與硬體偵測
- makeuseof - Make Your Own Wireless Printer With A Raspberry Pi
- EXTREMESHOK - Ultimate Raspberry Pi : LAN Print , Scan and PDF Server : CUPS + AirPrint + IPP + cups-pdf + sanescan ( SaneTwain ) + phpSANE / PHP-Scanner-Server ( scanner webinterface ) + samba ( remote file access )
圖片來源
- http://www.coronacs.com/print-management/airprint/
- http://t17.techbang.com/topics/8980-cartoon-characters-to-teach-us-that-the-road-in?mode=print&page=1
- http://rita11836.pixnet.net/blog/post/41140768-%E3%80%8A%E9%81%8A%E8%A8%98%E3%80%8B%E5%8F%B0%E4%B8%AD%E8%A5%BF%E5%8D%80%E2%80%A7%E7%88%86%E7%B4%85%E7%9A%84%E6%B5%B7%E8%B3%8A%E7%8E%8B%E5%BD%A9%E7%B9%AA%E7%89%86%EF%BC%8C%E8%AE%93
更新紀錄
- 2015/05/13 撰文。
0 意見 :
張貼留言