SSブログ

テキストファイルを明朝体で印刷 [UNIX]

Solarisでテキストファイルを印刷するには
  lp ファイル名
     か
  lpr ファイル名
で可能ですが、
この時使用されるフォントはCourierというフォントが使われていて
日頃、明朝体やゴシック体に慣れているためか違和感を感じてしまいます。
またCourierは英字フォントのため日本語が混ざったテキストですと
文字化けが発生してしまいます。

サンプルファイル
123 ABC 日本語
を印刷した場合下図の様になりました。
  lp サンプルファイル
■ご注意
このサイトではパソコンのUSBポートに接続されたプリンターで動作確認を行っているため、lpコマンドを使って解説していますが
使用する環境によってはlprコマンドを使用する場合もありますので、お使いの環境に合せて読み替えて頂きますようお願いいたします。


そこで、日本語混じりの文書でも文字化けせずに印刷できる様にするために
Solarisには「jtops」というフィルタコマンドが用意されています。
このコマンドを使用するとPostScript形式に変換してくれるため
プリンターに搭載されている明朝体やゴシック体で印刷する事ができます。

コマンドの書式は以下の通り
  jtops [オプション] [ファイル名(s)]

先程のサンプルファイルを「jtops」で変換して印刷してみました。
  jtops -j -s10 サンプルファイル | lp


  jtops -j -g -s10 サンプルファイル | lp


コマンドの処理結果は標準出力に送られるので、出力をファイルに切り替えるかパイプを使ってlpコマンドに渡してやる必要があります。

覚えてしまえば難しいコマンドではありませんが
キーボードから入力する文字数が増えるので面倒といえば面倒・・・

そこで、ファイル名を指定するだけで印刷出力までやってくれる
Cシェルスクリプトを作ってみました。
使い方は簡単で
  psp ファイル名
とするだけで、明朝体10ポイントで縦書き出力されます。

#!/bin/csh -f
#
#   psp                     Version 2.0
#   PostScript形式でプリンタへ出力
#              1.0 1999/06/08 yutaka-k
#              2.0 2006/08/13 yutaka-k
#     CopyLeft (c) 1999-2006  by yutaka-k

# 印刷出力コマンド
set print = lp

# デフォルトフォントサイズの設定
set fsize = 10

# 最小フォントサイズの設定(変更不可)
set minsize = 4

if ( $#argv == 0 ) goto HELP
set direction = -R
set font = -m
foreach i ( $argv[*] )
   set check = `echo $i | cut -b1`
   if ( $check == - ) then
      set count = 2
      set num = `echo $i | wc -m`
      while ( $count < $num )
         set character = `echo $i | cut -b"$count"`
         switch ( $character )
            case r:
               set direction = -r
               breaksw
            case g:
               set font = -g
               breaksw
            case L:
               @ fsize = $fsize + 4
               breaksw
            case l:
               @ fsize = $fsize + 2
               breaksw
            case S:
               @ fsize = $fsize - 4
               if ( $fsize < $minsize ) set fsize = 4
               breaksw
            case s:
               @ fsize = $fsize - 2
               if ( $fsize < $minsize ) set fsize = 4
               breaksw
            case [hH]:
               goto HELP
               breaksw
            case *:
               echo "error>指定されたオプション $character が無効です。"
               exit 1
               breaksw
         endsw
         @ count++
      end
   else
      if ( $?file == 0 ) then
         set file = $i
      else
         set file = ( $file $i )
      endif
   endif
end
set fsize = "-s$fsize"
if ( $?file == 0 ) then
   echo 'error>ファイルが指定されていません。'
   exit 1
endif

foreach i ( $file )
   if ( -e $i ) then
      if ( -d $i ) then
         echo "error>$i はディレクトリーです。"
      else
         (jtops -j $direction $font $fsize $i | $print) >& /dev/null
         if ( $status == 0 ) then
            echo ">ファイル $i をプリンタに出力しました。"
         else
            echo "error>ファイル $i でエラーが発生しました。"
         endif
      endif
   else
      echo "error>$i ファイルが存在しません。"
   endif
end
exit 0

HELP:
echo '書式: psp [オプション] ファイル名(s)'
echo '         r :横書き印刷'
echo '         g :ゴシック体フォント'
echo '         L :フォントサイズ +4'
echo '         l :フォントサイズ +2'
echo '         S :フォントサイズ -4'
echo '         s :フォントサイズ -2'
ファイルはcompressにより圧縮されています(ファイル名:psp.Z)

スクリプト内で印刷出力コマンドを設定していますが
コマンドに引数を与えたい場合はシングルクォーテーションかダブルクォーテーションでコマンドを囲ってやる必要があります。
  set print = 'lpr -P プリンタ'

デフォルト設定では明朝体10ポイント縦書き印刷になっていますが
オプションを与えてフォントサイズを変えたり横書き印刷にする事ができます。
UNIXのコマンドと同じ様にオプションを1つにまとめたりばらばらに指定したりどちらでもOKです。
以下の指定ではどちらもゴシック体14ポイント横書きで出力されます。
  psp -g -L -r ファイル名
  psp -gLr ファイル名

フォントサイズを変更するオプションの{L,l}及び{S,s}は複数個重ねる事ができます。
最少フォントサイズは4ポイントに制限されていますが大きくするのに制限はありません。
以下の場合、10+4+4+4で22ポイントで出力されます。
  psp -LLL ファイル名

このスクリプトは必ずファイル名を指定する必要があるため
以下の様な使い方はできません。
  × ls -l | psp

■お願い
ご自由にカスタマイズして頂いて構いませんが、
何らかの障害は発生しても作者のyutaka-kは責任を負わないものとします。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

プリンターの設定方法 [UNIX]



Solaris10でのプリンターの設定方法です。
Windowsならば接続してあるプリンターを自動認識して
適切なドライバーが組み込まれますが、
Solarisでは自分自身で設定してやる必要があります。


[起動]ボタンから[設定]→[システムの設定]と進み[プリンタの追加/削除]を実行します。




root以外のユーザーで実行した場合はrootのパスワードを入力する必要があります。
(rootでログインしている場合は以下の画面は出ません)




「ネームサービスを選択」では[files]しか選択できない状態になっていると思いますので
そのまま[了解]をクリックします。




下図がプリンターの設定画面です。
 [プリンタ名]は分かり易い適当な名前を入れます。
 [備考欄]は空白のままでOK
 [プリンタポート]はUSB接続している場合は「/dev/printers/1」を選択します。
以下適切なものを選択して一度再起動すればプリンターが使用可能になります。





ちなみに私はHewlettPackard製のDeskJet 970Cxiを使用していますが
以下の設定で大丈夫でした。


2006/08/09


Solaris 10 で無線LAN [UNIX]

Solaris10のインストールを行ったものの何か使いたいソフトがあるわけではないので、付属のゲームで遊ぶくらいでした・・・

せめてインターネット位はできればよいのですが、インストールしたパソコンはWindowsでは無線LANでネットに接続しています。
クライアント(子機)はUSB接続で、当然Solarisには対応していないためネットに接続する事ができませんでした。

Solarisでもネットに接続できる様にクライアント(子機)をBUFFALO製の無線LANイーサネットコンバータ「WLI3-TX1-G54」に変更してみました。
この製品は有線LANポートに接続して使用する無線LANアダプターで設定を行うのにWindowsのパソコンが必要ですが、設定後は有線LANポートを装備したゲーム機などでも無線LANが使用できる様になります。

USBポートに接続する子機の場合、子機自体が動作するための電力はUSBケーブルから供給されるため1本のケーブルだけで使用できますが
イーサネットコンバータはLANケーブルと電源ケーブルの2本を接続してやる必要があります。



Solaris10でもLANのセットアップができていればイーサネットコンバータが利用可能です
Solarisのインストールではマイナーなチップを使ったLANコントローラですとインストール時に認識しないため手動でドライバーのセットアップが必要な場合がありますが
マイPCではcorega製の「CG-LAPCITX」(搭載チップ:Realtek RTL8139D)を使用していてSolarisのインストール時に自動認識しました。

Solaris10でネットへ接続できるようになったので
遊べる環境が整いつつあります・・・!?

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Solaris 10 6/06 [UNIX]

Solaris 10 6/06をインストールしてみました。
2006年6月版という意味なのでしょうか・・・

実はSolaris10のインストールは2度目になります。
というのも前回インストールを行った数日後にハードディスクがクラッシュしてしまい遊び始める前に使用不能になってしまいました・・・
今回は新品のハードディスクを用意しての再挑戦になります。

前回は初めてSolarisのインストールということでインプレス社発行の「Solaris10完全攻略ガイド」を使用しました。
この本はわりと分かり易くて初心者にはオススメです。
何よりもSolaris10のDVDメディアが付属しているのが嬉しい!
SolarisはSun Microsystems, Inc.のWebから無料でダウンロードできますが、ファイルサイズが大きいので結構大変です。

今回は2度目ですし最新版を使ってみたかったのでダウンロードに挑戦しました。
ダウンロードするにはユーザー登録が必要で、これが英語での登録なので難関です!?
翻訳サイトを使いながらなんとか登録完了しダウンロードのページにたどり着けました。


ZIP形式で圧縮されてはいますが530MBのファイルが5つ!
無料とはいえダウンロードも楽じゃない・・・

ダウンロードしたファイルを解凍してコマンドプロンプトにてCOPYコマンドを使い連結
後はライティングソフトを使ってISOイメージとして書き込むだけ。

インストール自体は完全攻略ガイドを見ながらなんとかクリア
起動後の解像度の変更で少々悩みましたが1280×1024の解像度で表示可能になりました。

まだインストールしただけで使い方もよくわからない状態ですが
統合ソフトの「StarSuite7」や日本語IMEの「ATOK」まで入ったO/Sが無料で使えるのですからたいしたもんだ!?

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。