FreeBSD On ThinkPad X60

Epson Printer

従来の lpr を利用して Epson LP-7000C プリンタから印刷する方法。
印刷には Epson Avasys が公開している Linux 用のドライバを利用する。

必要なソフトウェアのインストール

ports/packages を利用して以下のソフトウェアをインストールする。

  • shells/bash
  • print/ghostscript-gnu
  • print/ghostscript-gnu-commfont
  • japanese/ghostscript-gnu-jpnfont
  • print/psutils-a4
  • japanese/nkf
  • japanese/a2ps

Linux 用ドライバの取得

Epson Avasys のペイジより Linux 用のドライバ一式をダウンロードし展開する。

取得したドライバの修正

取得したドライバに含まれる lp7000c_lprwrapper.shpstolp7000c.sh の以下の内容を修正する。

*** lp7000c_lprwrapper.sh.ORIG	Mon Nov  1 17:14:39 2004
--- lp7000c_lprwrapper.sh	Fri Aug 11 21:14:56 2006
***************
*** 1,4 ****
! #!/bin/sh
  #  lp7000c_lprwrapper.sh -- LPR(ng) wrapper filter for lp7000c-ESC/PageS-filter
  #  Copyright (C) SEIKO EPSON CORPORATION 2004.
  #
--- 1,4 ----
! #!/usr/local/bin/bash
  #  lp7000c_lprwrapper.sh -- LPR(ng) wrapper filter for lp7000c-ESC/PageS-filter
  #  Copyright (C) SEIKO EPSON CORPORATION 2004.
  #
***************
*** 170,180 ****
  
  
  tee0="" && test "$DEBUG" = "on" && tee0="tee /tmp/lp7000c_lprwrapper.ps | "
! sizeadjust="psresize -q $adjust_args | " && test x"$THROUGH" = x"on" && sizeadjust=""
! filtercmd="pstolp7000c.sh $filter_args"
  cmd="$tee0 $sizeadjust $filtercmd"
  
! sh -c "$cmd"
  
  msglog "$cmd"
  
--- 172,182 ----
  
  
  tee0="" && test "$DEBUG" = "on" && tee0="tee /tmp/lp7000c_lprwrapper.ps | "
! sizeadjust="/usr/local/bin/psresize -q $adjust_args | " && test x"$THROUGH" = x"on" && sizeadjust=""
! filtercmd="/usr/local/bin/pstolp7000c.sh $filter_args"
  cmd="$tee0 $sizeadjust $filtercmd"
  
! /usr/local/bin/bash -c "$cmd"
  
  msglog "$cmd"
  
*** pstolp7000c.sh.ORIG	Mon Nov  1 17:14:39 2004
--- pstolp7000c.sh	Fri Aug 11 21:14:46 2006
***************
*** 1,4 ****
! #!/bin/sh
  #  pstolp7000c.sh -- PostScript to lp7000c-ESC/PageS-filter
  #  Copyright (C) SEIKO EPSON CORPORATION 2004.
  #
--- 1,4 ----
! #!/usr/local/bin/bash
  #  pstolp7000c.sh -- PostScript to lp7000c-ESC/PageS-filter
  #  Copyright (C) SEIKO EPSON CORPORATION 2004.
  #
***************
*** 204,212 ****
  msglog "collatefile=$collatefile"
  msglog "numcopies=$numcopies"
  
! rotator="" && test "$useRotator" = "on" && rotator="| pstops -q $pstops1 $pstops2"
! rasterizer="| gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE $gs1 $gs2 -sOutputFile=- -"
! escpagesfilter="| lp7000c $lp7000c" && test "$PSOUT" = "on" && escpagesfilter=""
  
  cmd="\
  cat $collatefile \
--- 204,213 ----
  msglog "collatefile=$collatefile"
  msglog "numcopies=$numcopies"
  
! rotator="" && test "$useRotator" = "on" && rotator="| /usr/local/bin/pstops -q $pstops1 $pstops2"
! #rasterizer="| /usr/local/bin/gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE $gs1 $gs2 -sOutputFile=- -"
! rasterizer="| /usr/local/bin/gs -q -dBATCH -dSAFER -dNOPAUSE $gs1 $gs2 -sOutputFile=- -"
! escpagesfilter="| /usr/local/bin/lp7000c $lp7000c" && test "$PSOUT" = "on" && escpagesfilter=""
  
  cmd="\
  cat $collatefile \
	

必要なファイルのコピー

印刷に必要な以下のファイルをコピーする。

マジックフィルタを準備する

Epson Avasys から提供されている script は PostScript ファイルの印刷しか対応していないので、 通常のテキストファイルを印刷するために a2ps(1) コマンドを 自動で実行するためのマジックフィルタを作成し、 /usr/local/bin/ps2escf という名称で保存する。

#!/bin/sh
/usr/bin/expand -t 4        |
/usr/local/bin/nkf -e       |
/usr/bin/tr '\015' '\012'   |
/usr/bin/awk '{
    if(NR == 1)
        if(match($1, /^\%\!/))
            filter = "/bin/cat";
        else
            filter = "/usr/local/bin/a2ps-j -mcp";
    print | filter;
}' 2> /dev/null             |
/usr/local/bin/lp7000c_lprwrapper.sh
	

printcap の設定

マジックフィルタをフィルタプログラムに指定した /etc/printcap を作成して lpd (8) を再起動する。
ここでは TCP/IP 接続されたリモートプリンタを想定しているが、 USB やパラレルポートに直接接続されている場合も基本は同様である。

lp|lp-7000c|EPSON LP-7000C:\
    :lp=/dev/null:\
    :rm=プリンタの FQDN/IP アドレス
    :sd=/var/spool/lpd:\
    :lf=/var/spool/lpd/lpd-errs:\
    :if=/usr/local/bin/ps2escf:\
    :rp=raw:\
    :sh:
	
以上で Epson LP-7000C から高品質のカラー印刷が可能となる。

Last Update: 4 Feb. 2010