LANDISK を pdf プリンタにする

[戻る]

はじめに

LANDISK (HDL-160U) には USB ポートが付いていて, プリンタを接続・共有が出来るわけですが, 私はそういう物をもっていません. そこで考えたのですが, Acrobat もそれなりの値段がしますし, 各 Windows マシンに Ghostscript を入れるのも大変だし, Ghostscript による pdf プリンタを作って共有すると便利かなと思い作って見ました.

なお, うまくいってから思い出しながら書いているので, もしかして必要だったけど書き忘れた何かの手順等があるかもしれません. その際は適当に補間してください.

Ghostscript のコンパイル・インストール

まず仮想ルート上で Ghostscript をコンパイル・インストールします. こことか, ここを を参考にしたら特に問題なくできちゃいました.

続いて, 本来のルート上に移動させるわけですが, /usr/local/share ディレクトリを掘り, 仮想ルートの /usr/local/share/ghostscript へのシンボリックリンクを置くだけで, gs が単純に動きました. ただ, 私の LANDISK は以前からいろいろツールを入れているので, もしかしたらライブラリが足りないと起動できないかもしれません. その際は, 仮想ルートから必要なライブラリをコピーすればいいと思います.

一応, コンパイルできないという方のために一式を こちらに置いておきます. 使い方は適当な所 (仮に /mnt/hda3/bin/usr/local/share にします) に展開し上記のようにシンボリックリンクを張るだけです.
# mkdir /mnt/hda3/bin
# mkdir /mnt/hda3/bin/usr
# mkdir /mnt/hda3/bin/usr/local
# mkdir /mnt/hda3/bin/usr/local/share
# mv gsset.tar.gz /mnt/hda3/bin/usr/local/share
# cd /mnt/hda3/bin/usr/local/share
# zcat gsset.tar.gz | tar xvf -
# rm gsset.tar.gz
# mount -o rw,remount /
# mkdir /usr/local/share
# ln -s /mnt/hda3/bin/usr/local/share/ghostscript /usr/local/share/ghostscript
# mount -o ro,remount /

仮想プリンタの設定

続いて LANDISK 内に仮想プリンタを作ります.

  1. ルートパーティションを読み書き可能にする (# mount -o rw,remount /).
  2. /etc/printcap を開き (# vi /etc/printcap), 以下のフレーズを追加する.
    pdf:\
            :sd=/mnt/hda3/spool/lpd/pdf:\
            :mx#0:\
            :sh:\
            :lp=/dev/null:\
            :if=/usr/local/share/ghostscript/pdffilter:
    
  3. /mnt/hda3/spool/lpd/pdf を掘る
    # mkdir /mnt/hda3/spool/lpd/pdf
    # chown lp /mnt/hda3/spool/lpd/pdf
    # chgrp lp /mnt/hda3/spool/lpd/pdf
    # chmod 770 /mnt/hda3/spool/lpd/pdf
    
  4. 以下の呪文を /usr/local/share/ghostscript/pdffilter というファイルで 記述し, 実行権限をつける (# chmod 755 /usr/local/share/ghostscript/pdffilter).
    #!/bin/sh
    outputdir=/mnt/hda3/share/disk/PdfPrinter/
    t=$outputdir"tmp.$$"
    f=$outputdir`date +%y%m%d%H%M%S.pdf`
    /usr/local/share/ghostscript/gs -dCompatibilityLevel=1.4 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "-sOutputFile=$t" -dCompatibilityLevel=1.4 -c .setpdfwrite -
    mv $t $f
    /bin/chmod 666 $f
    
  5. /mnt/hda3/share/disk/PdfPrinter を掘る
    # mkdir /mnt/hda3/share/disk/PdfPrinter
    # chmod 777 /mnt/hda3/share/disk/PdfPrinter
    
  6. /home/LANDISK/landisk-config を開き, もし LPDSERVICE が off になっていたら on にした後, 以下のコマンドを実行する.
    # /etc/rc.d/init.d/S60lpd start
    

これを sample.ps という名でダウンロードし,
# lpr -Ppdf sample.ps
と打って見てください. /mnt/hda3/share/disk/PdfPrinter に pdf ファイルが 見えたら成功です. また, /mnt/hda3/share/disk/PdfPrinter 以外の場所に置きたい場合は 4 のスクリプトの outputdir を変えればいいです.

続いて, このプリンタをネットワークプリンタとして見えるように設定します.

  1. /etc/samba.d/smb.conf に以下のフレーズを追加します.
    [pdf]
            comment = PDF Printer
            printable = yes
            path = /mnt/hda3/spool/samba/lp
            print command = /usr/bin/lpr -r -Ppdf %s
            lpq command = /usr/bin/lpq -Ppdf
            postscript = yes
            guest ok = no
            read only = yes

    こちらの知見からこのフレーズは /var/lock/ の下のどこかに書いておかないと web による管理を行うと 消えるかもしれません (私は web 管理機能は切ってますので分かりません).

  2. 続いて samba を再起動します.
    # /etc/rc.d/init.d/S91samba restart
    
Windows マシンから LANDISK を覗くと pdf プリンタというのが見えれば成功です. 上手く行くようでしたらルートパーティションを読み込み専用に戻します (# mount -o ro,remount /).

Windows-PC の設定

さて, 最後に各 Windows マシンでプリンタの設定を行う番です. WinXp として話を進めます.

  1. [マイコンピュータ]から[プリンタとFAX]を開き「プリンタの追加」を選びます.
  2. 「ネットワークプリンタ, またはほかのコンピュータに接続されているプリンタ」 を選びます.
  3. 「指定したプリンタ」を選び 「\\[LANDISK の IP アドレス]\\pdf」と指定します.
  4. 「プリンタの追加ウィザード」が出てきますので, Apple の LaserWriter Select 610 と指定します.
後は, このプリンタを指定してプリントアウトすると, pdf 化されたものが /mnt/hda3/share/disk/PdfPrinter/ に"現在時刻.pdf"という名で現れます. いじってなければここはネットワークコンピュータから見えるという寸法です. 今回の例では特に理由もなく LaserWriter Select 610 を使いましたが プリンタは ps プリンタなら何でもいいはずです. Adobe PostScript を使うのが正式かもしれません.

画質・その他

正直言って pdf ファイルの質はイマイチです. Distiller が吐く pdf ファイルに比べて, 1.5 倍程大きいですし, 字も汚く, フォントによっては表示されず, さらに日本語選択がおかしい物に なります.

その辺はいろいろ設定を工夫したり, 便利なツール を使うとある程度改善できると思いますが, 無いよりマシ程度の物と考えていた方がいいでしょう.


2005.2