FreeBSD QandA 376

FreeBSD QandA

Q. Canon LaserShotにファイルを出力する時に テキストファイルと PSファイ
   ルを自動判別してくれるような printcapに書くフィルタスクリプトはありま
   せんか?

A. LaserShot A404GII(LIPS II & III) では以下のようにすると良いようです。
   ただし ^[ は ESC コードです。

   #!/bin/sh

   # Initialize Printer
   echo -n '^[%@'                  # End of emulation mode, Text mode start
   printf '^[P31;300;1J^[\'        # JOB Start as LIPS3, JIS
   printf '^[<'                    # LIPS printer soft reset
   printf '^[[?5h'                 # LF -> LF+CR mode
   printf '^[[?1h'
   read first_line
   first_two_chars=`expr "$first_line" : '\(..\)'`

   if [ "$first_two_chars" = '%!' ]; then
           /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=lips3 -sOutputFile=- -
   else
           echo -n '^[%0'          # ShiftJIS mode
           ( echo "$first_line" && cat ) | /usr/local/bin/nkf -s
           printf '\f'
   fi
   printf '^[P0J^[\'               # Job End
   echo -n '^[%@'                  # Start Text Mode
   exit 0

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。