作業中のメモ

よく「計算機」を使って作業をする.知らなかったことを中心にまとめるつもり.

Raspberry Pi 3 Model B のプリンタサーバーにおいて Windows から PDF が印刷できない問題とその対処法

どうも,筆者です.

Windows で PDF の印刷をする

前回までで,Raspberry Pi をファイルサーバーとプリンタサーバーにできた.問題なく動作していたのだが,Windows で PDF の印刷が出来なかった.Word や Excel は印刷できたのに,PDF だけ印刷できなかった.原因がさっぱり分からない.また,Linux 側では,PDF が印刷できたので,プリンタサーバーとしては動作していると考えた.面倒なことに,Windows 側での印刷の仕組みを勉強する必要が生じた.

ログの出力

Windows で Word を印刷する場合と PDF を印刷する場合の違いを調べるために,ログを見ることにした.Windows はとても親切なので,ログが一切残っていなかった.まずは,ログの残し方から調べる必要があった.

調べるとすぐ出てきた.「イベントビューアー」というものがあるらしい.これで,ログの有効化を行う.Windows 7 の場合は,

  1. 管理ツールを開く(コントロールパネルにある「システムとセキュリティ」から飛ぶ).
  2. イベントビューアーを起動する.
  3. 「アプリケーションとサービス\Microsoft\Windows\PrintService\Operational」を開く.
  4. 右側にある「操作」から,「ログの有効化」をクリックする.

とすれば良い.

その後,「アプリケーションとサービス\Microsoft\Windows\PrintService\Admin」から,Word を印刷した場合(これは実行可能)のログを見る.問題ない.その後,PDF を印刷した場合(これはエラーを返す)のログを見る.すると,

%UserName% によって所有されているドキュメント %DataFile% をプリンター %PrinterName% で印刷できませんでした。ドキュメントを再度印刷するか、印刷スプーラーを再起動してください。 データの種類: RAW。スプール ファイルのサイズ (バイト): xxx。印刷したバイト数: yyy。ドキュメントの総ページ数: zzz。印刷したページ数: xyz。クライアントのコンピューター: %PCName%。プリント プロセッサで返された Win32 エラー コード: 5。アクセスが拒否されました。

となっていた.アクセスが拒否されているらしい.

アクセス拒否の対処法

これは, TS Easy PrintでイベントID:6161アクセス拒否の件、解決ダー Σ∩グッkametaro.wordpress.com

によると,

直接の原因は、RemoteAppログインに使用したユーザーが、サーバー側のスプールフォルダにアクセスできる権限を持っていないため。

とある.つまり,サーバ側の spool ディレクトリにアクセスできないとのことらしい.という事は,Samba の設定ファイルのうち,

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = yes    ## <- ここ
   read only = yes
   create mask = 0700

とすればよいはずである.変更してサービスを再起動し,再度 Windows から PDF の印刷を行うと,印刷できた.これで,問題は解決された.

現状できていること

現状は,ファイルサーバー,プリンタサーバーに加え,スマホから「reboot」と「shutdown」ができるようになっている.他にも色々機能を付けたいと思う.