DOBON.NET DOBON.NETプログラミング掲示板過去ログ

多機能プリンタで文字化け

環境/言語:[VB6+SP5.0]
分類:[VB6以前]

VB6.0 で開発したアプリで以下の現象が起きました。

DELL PHOTO ALL IN ONE 942 から印刷すると文字化けしてしまいます。
テストページ印刷してみたところ正常で、その直後にメモ帳から印刷しても
文字化けしませんが、その次に当該アプリから印刷すると同じ現象が
おきてしまいます。
今のところ他のプリンタではこの現象は起きません。
ソースコードでは文字のPrint、罫線・円の描画をしているだけで、
印刷結果の文字・罫線の出力位置は正しく、半角数字は文字化けしない場合もありますが...

DELL PHOTO ALL IN ONE 942 の機能・スペックは以下のとおりです。
対応OS Microsoft; Windows; XP(日本語版)Microsoft; Windows; 2000(日本語版)
プリント速度 モノクロ:19枚/分 カラー:14枚/分
プリント解像度 4800 x 1200 dpi
印刷方式 インクジェット
接続方法 USB(ケーブル別売)
その他 最大給紙枚数:普通紙100枚
コピー、スキャン、メモリカードリーダ機能搭載、PictBridge対応

メーカーに問い合わせたら、そのプリンタだけそのような現象が起こる事例は
ないそうです。プリンタドライバを入れなおしてみてくださいとのことでそれも
やってみましたが解決しませんでした。

解決案があれば教えてください。
(出荷先での現象なので、本体とプリンタが手元にありません。)
■No11871に返信(h.hayashiさんの記事)
> (出荷先での現象なので、本体とプリンタが手元にありません。)

現地に出向いて調査しないことには始まらないと思いますがw
こんにちは。

アプリから印刷する帳票(?)のフォントはどうなっているのでしょうか。
プリンタではなくPCの問題とかは考えられませんか?

対象のプリンタを問題の起きていないPCにつないでテストしてみるとか。
■No11873に返信(ハヤシマさんの記事)
ハヤシマさん、ありがとうございます。
>
> アプリから印刷する帳票(?)のフォントはどうなっているのでしょうか。
> プリンタではなくPCの問題とかは考えられませんか?
>
> 対象のプリンタを問題の起きていないPCにつないでテストしてみるとか。
>
フォントは下記のプロシージャで指定しています。
i_obj にはプリンタまたはピクチャーボックスが渡されます。
Sub 初期化(i_obj As Object)
'DW()には罫線の太さを代入します。
With i_obj
On Error Resume Next
If TypeOf i_obj Is PictureBox Then
.AutoRedraw = True
.BorderStyle = 1
End If
.DrawStyle = vbSolid
.Font.Size = 12
.Font.Name = "MS ゴシック"
.ForeColor = 0
On Error Resume Next
If TypeOf i_obj Is Printer Then
Printer.Orientation = vbPRORPortrait
DW(0) = cDrawWidth細 '4
DW(1) = cDrawWidth中 '10
DW(2) = cDrawWidth太 '16
i_obj.ScaleTop = 0
Else
DW(0) = 1
DW(1) = 2
DW(2) = 3
i_obj.ScaleLeft = -600
i_obj.ScaleTop = 45
End If
If TypeOf i_obj Is PictureBox Then
i_obj.ForeColor = vbBlue
Else
i_obj.ForeColor = vbBlack
End If
End With
End Sub

『MS ゴシック』 が原因でしょうか?
『MS ゴシック』フォントでの機種依存文字では帳票のフォーマットに
『@』〜『L』を使用しています。ご指摘のとおりフォントが問題かも
しれません。その点も考えてみます。
>         .Font.Size = 12
>         .Font.Name = "MS ゴシック"

「.Font.Charset = 128」の指定が抜けているような。

# 今回の問題に関係あるかどうかはわかりませんけど。
■No11884に返信(魔界の仮面弁士さんの記事)
魔界の仮面弁士さん、ありがとうございます。

> > .Font.Size = 12
>> .Font.Name = "MS ゴシック"
>
> 「.Font.Charset = 128」の指定が抜けているような。
>
> # 今回の問題に関係あるかどうかはわかりませんけど。

他の帳票も含めて、ソースコードのフォント指定に
.Font.Charset = 128
を追加し、リコンパイルしたプログラムを社内でチェック中です。
チェックでOKならば、当該ユーザーにプログラムを送付し、
使ってみてもらうことにしました。
■No11917に返信(h.hayashiさんの記事)
林です。
魔界の仮面弁士さん、はいこーんさん ありがとうございます。

>
> 他の帳票も含めて、ソースコードのフォント指定に
> .Font.Charset = 128
> を追加し、リコンパイルしたプログラムを社内でチェック中です。
> チェックでOKならば、当該ユーザーにプログラムを送付し、
> 使ってみてもらうことにしました。

ユーザーから、うまくいったとの報告をもらいました。
これで完了にします。
■No11917に返信(h.hayashiさんの記事)
解決済み!のチェックを忘れました。すいません。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板