えー、
- iPadとかからAirPrintで印刷
- Raspberry PiがそいつをPDFに変換
- PCからそのPDFを読み込んでUSBメモリかなんかにコピー
- コンビニに持って行って紙に出す
というワークフローがあったとして、Raspberry Pi側の設定。私は常識人なので、Raspbian(Lite)を使ってます。そして自宅にプリンタを置くつもりはありません。
やることは、
- avahi daemonを上げる
- cups daemonを上げる
- cups-pdf関連の設定
- sambaの設定
といったメニュー。
まずはcupsとcups-pdfを設定していく。
- sudo apt install -y cups cups-pdf python-cups avahi-discover
- sudo usermod -aG lpadmin pi
- sudo vi /etc/cups/cupsd.conf
- 「Listen localhost:631」を「Port 631」に書き換え
- 全てのLocationに「Allow @Local」を追加
- sudo mkdir -p /var/spool/PDF
- sudo chmod 777 /var/spool/PDF
- sudo vi /etc/cups/cups-pdf.conf
- Out /var/spool/PDF
- AnonDirName /var/spool/PDF
- Label 2
- Grp lpadmin
- DecodeHexStrings 1
- sudo systemctl start cups
- sudo systemctl enable cups
- sudo systemctl start avahi-daemon
- sudo systemctl enable avahi-daemon
- sudo lpadmin -p CUPS-PDF -v cups-pdf:/ -P /usr/share/ppd/cups-pdf/CUPS-PDF.ppd -E
- sudo lpadmin -d CUPS-PDF
次に、Sambaの設定。
- sudo apt install -y samba
- sudo vi /etc/samba/smb.conf
- [PDF]
- path = /var/spool/PDF
- read only = no
- browseable = yes
- guest ok = yes
- force user = nobody
- [PDF]
- sudo systemctl start smbd
- sudo systemctl enable smbd
- sudo systemctl start nmbd
- sudo systemctl enable nmbd
- samba.serviceはmaskedというロック状態になっている。これを起動しようとして色々苦労したが、無駄だった
あとは、/var/spool/PDFに入った古いファイルを削除して回る設定をする。Debianなのでtmpwatchではなくsystemdのsystemd-tmpfiles-cleanを使う。
- sudo vi /etc/tmpfiles.d/cups-pdf.conf
- d /var/spool/PDF 0777 nobody nogroup 30d –
PC側の設定としては、Sambaで共有しているディレクトリへのリンクを、スタートメニューかデスクトップかクイックメニューか…とにかくどこか分かりやすい場所にリンクを置いとくこと。
あとMacではこれね。.DS_Storeを作らない/読まない設定。
- defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
これでまあまあな状態になった。Raspberry Piなので処理は遅く、多くのページを印刷すると爆発しそうだが、とりあえず数ページなら問題ないみたい。これで当分は大丈夫かな。設定自体はかなりのノーガード。あと謎のファイルcups-pdf_log.pdfができる。
iOSからは、普通に印刷するときにプリンタを選択できる。当然この仮想プリンタはMacやWindowsからも使えますが、まどろっこしいので直接PDFにした方がいいでしょうね。Androidは追加でアプリを入れたら使えましたが、若干怪しいところもあるのでAndroidからの印刷はやめておこう…