初めに
この記事は拙作「「Windows印刷鯖で、クライアントだけはドライバレスで印刷できる」ようにする (https://qiita.com/sambar_gamer/items/80f91f619b92400ef647) 」の派生ネタになります。
環境
- プリンタ: Canon MP490 (Gutenprintドライバを使用)
- Raspberry Pi 3 (部屋にあったやつ。)
- OSはRaspberry pi OS(arm64版)を使用
やった事:
- Raspberry Pi OSのインストール&初期設定(説明を省略)
- CUPSの設定(説明省略)
- Sambaの設定
- 印刷用PDFファイルの仮置き場として、64MBのramddiskを作成・マウントする 1
- /etc/fstab に
tmpfs /share tmpfs defaults,size=64m 0 0
を追記 -
# mount -a
を実行して /share をマウント - /etc/samba/smb.conf に下記を追記
[pdfprint_tmp] path = /share read only = no guest ok = no #guestの印刷を許可したい場合はyesにする writable = yes
-
# systemctl restart smbd.service
を実行して、sambaを再起動する - crontab に定期的に /share 内のファイルを削除する設定を追加する (推奨。でも説明略。2)
- inotifywaitを使用して、「pdfファイルが置かれたら自動でlpコマンドを実行」の設定をする 34
- [Linux] inotifywaitを使ってファイル更新時に任意のコマンドを実行する (https://qiita.com/sonodar/items/ddeeb98525ef4c03d48e) を参照願います。
- pdfの自動印刷の場合、watch-file.serviceの
ExecStart
行は、ExecStart=/usr/local/bin/watch_pdf.sh /share '\.[pP][dD][fF]$' "lp"
になる。 - コメントで「ファイル名に空白が含まれる場合に対応するパッチ」を投稿させていただきました。
参考資料