POSプリンターで遊ぶ-3

| コメント(0)
イメージデータとしての出力は、以下に述べるようにソースコードを少しだけ修正すれば簡単に実現できる。
Pythonのプログラムが生成する*.prnファイルは、プリンタ制御文字列を含んでいたり、語数をカウントして用紙幅に収まるように改行コードを追加したりしている。これらを除去してプレーンなテキストファイルを生成させる必要がある。この問題を解決するために、Pythonのソースコードを変更する。
まず「fetch_rss-master」フォルダ内の「output_prn.py」の27-30行目を以下のように修正する。
short_body = ' '.join(body.split()[:100])
prn.text(f + '\n')
prn.text(title + '\n')
prn.text(body)

修正後のプログラムを用いて生成した*.prnファイルをワードに読み込んでみると、文字コードがUTF-8だという確認ダイアログが表示される。この際、文字コードもShiftーJISに変更しておく。
そのためには、同じく「fetch_rss-master」フォルダ内の「escpos.py」の29行目を以下のように修正する。
self.prnfile.write(msg.encode('iso-2022-jp', errors='replace'))

これで、Shikft-JISのプレーンテキストファイルが出力されるようになったので、ワードに取り込んだ上で、印刷時にPOSプリンタを選択して出力すれば、日本語フォントを搭載していないPOSプリンターでも日本語の出力が可能となる。
因みに、プリンターのプロパティで、用紙を58mm幅のロール紙に、また印刷設定で、余白を上下左右5mm程度にして短冊状のページが表示されるようにする必要がある(余白の値については、若干の試行錯誤が必要となる)。また、デフォルトの文字サイズは、58mmしかない用紙幅に対して大きすぎるので、サイズを7pt程度のボールド指定に、行間のオプションで最小値を設定しておくと良い。
後は普通にワードから印刷を実行するだけである。日本語の文章が、イメージデータとしてPOSプリンタに出力される。わかってしまえば実に単純な話だ。当然、ワードに貼り込んだJPGなどのイメージデータも出力される。
ImagePos58-5.png
これで、プリンターが活用できるようにはなったのだが、ワードに食わせて余白やフォントの設定を変えたりせねばならず、どうも当初の趣旨とは異なってしまったような感じだ。ここはやはり日本語フォント搭載のPOSプリンターを用いて初志貫徹したいものだと思う(かくして人は深みにハマる)。

コメントする

アーカイブ