OCRフォントの文字化け

解決


へなちょこ  2005-05-31 20:49:29  No: 90169

VB6で開発しています。
OCRフォントが文字化けしてしまいます。
verdana,ocrbです。
最初にMS 明朝をしていして印字して、
次の行をverdanaで印字、
そと次はMS 明朝とすると、verdana以降のMS 明朝が文字化けを起こします。
一回目の印刷はverdana以降のMS 明朝が文字化けを起こしますが、
一回文字化けが起こると、どこかに何かかが残っているみたいで
2回目からは先頭のMS 明朝も文字化けを起こします。
多分、Fontの指定の切り替えが上手くいっていないのかな?
とも思いますが原因がさっぱりわかりません。
どうかご教示ねがいます。


へなちょこ  2005-05-31 20:54:17  No: 90170

コードを乗せます。
            'ヘッダ項目印字
            Printer.Font.Name = "MS 明朝"
            Printer.Font.Size = 11
            Printer.Font.Bold = False
            
            Prt "あいうえお", 5, 69, 0, False, 11, 198, True

            Printer.Font.Name = "verdana"
            Printer.Font.Size = 11
            Printer.Font.Bold = False
            
            Prt "123456",5, 54  

            Printer.Font.Name = "MS 明朝"
            Printer.Font.Size = 11
            Printer.Font.Bold = False
            
            Prt "かきくけこ", 7, 69, 0, False, 11, 198, True

'***********************************************************************
'処理説明 : 印刷処理
'
'引数     : 1 sTxt     : 印字する文字列
'           2 nRow     : 印字位置(行)
'           3 nCol     : 印字位置(桁)
'           4 nLen     : 数値右詰めの際の印字文字数(省略時は0…文字列とみなす)
'           8 bFstrike : 取消線有りか? (省略時はFalse)
'           6 nFsize   : フォントサイズ      (省略時は11)
'           9 nFpitch  : ピッチ          (twips,省略時は144)
'           4 bKanji   : 日本語か?     (省略時はFalse)
'           5 sFname   : フォント名        (省略時は"MS 明朝")
'           7 bFbold   : 太字か?       (省略時はFalse)
'***********************************************************************
Private Sub Prt(sTxt, nRow, nCol, Optional nLen = 0, Optional bFstrike = False, Optional nFsize = 11, Optional nFpitch = 144, Optional bKanji = False, Optional sFname = "MS 明朝", Optional bFbold = False)
    Dim nCIdx
    Dim nStartX
    Dim nStartY
    Dim nStartLY
    Dim sPrtTxt As String
    Dim nComma  As Integer
    
    If Trim$(sTxt) = "" Then
        Exit Sub
    End If
     
    '印字開始位置
    nStartX = (nCol * U_Tpc) - (U_Tpc / 3)
    nStartY = (nRow * U_Tpr) + (U_Tpr / 2)
     
    Printer.CurrentY = nStartY
    Printer.CurrentX = nStartX
    
    If nLen > 0 Then
        '数値は右詰め
        If bKanji = False Then
            '"."(カンマ)を削除
            nComma = InStr(sTxt, ".")
            If nComma > 0 Then
                sTxt = Mid(sTxt, 1, nComma - 1) + Mid(sTxt, nComma + 1, Len(sTxt) - nComma)
            End If
            '先頭にスペースを付加
            While Len(sTxt) < nLen
                sTxt = " " + sTxt
            Wend
        Else
            '先頭にスペースを付加
            While Len(sTxt) / 2 < nLen
                sTxt = "  " + sTxt
            Wend
        End If
    End If
        
    '1文字ずつ印字
    For nCIdx = 1 To Len(sTxt)
'        Printer.Font.Name = sFname 'フォント名
'        Printer.Font.Size = nFsize 'フォントサイズ
'        Printer.Font.Bold = bFbold '太字
        
        Printer.Print Mid(sTxt, nCIdx, 1)
        
        If bFstrike = True Then
            '取消線
            If Mid(sTxt, nCIdx, 1) <> " " Then
                nStartLY = nStartY + ((U_Tpr / 5) * 2)
                Printer.DrawWidth = 1
                Printer.DrawMode = vbBlackness
                Printer.DrawStyle = vbSolid
                Printer.Line (nStartX, nStartLY)-(nStartX + nFpitch, nStartLY)
                nStartLY = nStartLY + (U_Tpr / 5)
                Printer.DrawWidth = 1
                Printer.DrawMode = vbBlackness
                Printer.DrawStyle = vbSolid
                Printer.Line (nStartX, nStartLY)-(nStartX + nFpitch, nStartLY)
            End If
        End If
        
        nStartX = nStartX + nFpitch '指定されたピッチ分横へ移動
        Printer.CurrentX = nStartX
        Printer.CurrentY = nStartY
    Next nCIdx
End Sub


魔界の仮面弁士  2005-05-31 23:18:31  No: 90171

Charsetプロパティの切り替えも行ってみてください。


へなちょこ  2005-06-01 01:12:54  No: 90172

返答ありがとうございます。
Charsetプロパティとは何ですか?
Printer.Charsetというわけでも無さそうでしたし。
Helpでも使い方が分からないです。
どう使えばいいのでしょうか?


ぶぶ  2005-06-01 01:51:38  No: 90173

CharsetプロパティでHelpを見ましたら、
対象はFontオブジェクトになっていましたが、
試してみられましたか?


へなちょこ  2005-06-01 02:07:35  No: 90174

数値
Printer.Font.Charset = 0
日本語
Printer.Font.Charset = 128
で上手くいきました。
色々調べてみたら、上記で解決いたしました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加