2

24 行ごとに白い線がないと、ビット イメージを印刷できません。画像を印刷する必要がありますが、この画像には 24 行ごとに 1 ビットの白い線があります。

エプソン プリンターは、イメージを次の形式で印刷します。

>line 23 01010101000010001010
>line 24 00001000100000000110
>line 25 --------- white line ------------

この白い線を消すにはどうすればいいですか?

    Image size
    width:400px
    height:73px
        
    while (offset < height) 
    {
    //format ESC* Epson printer
    String modIMG = new String(new byte[]{0x1B, 0x2A, 33, 0, 2});
        img.append(modIMG);     
            for (int x = 0; x < width; ++x) {
                for (int k = 0; k < 3; ++k) {
                byte slice= 0;
                    for (int b = 0; b < 8; ++b) {
                    int y = (((offset / 8) + k) * 8) + b;
                    int i = (y * width) + x;
                    boolean v = false;
                        if (i < bitSet.length()) {
                            v = bitSet.get(i);}
                            slice |= (byte) ((v ? 1 : 0) << (7 - b));
                        }   
                        img.slice(new String(new byte[] {slice}));
                    }
                }
                offset += 24;
                img.append(new String(new String(new byte[]{0x1B,0x33,30}));
                }
4

4 に答える 4

1

だから私はこの問題を解決しました。ESC '3' 24 を使用して行間隔を 24 ドットに設定するだけでは十分ではなく、ページ モードでイメージを印刷する必要があります。

ページモードに入るには: ESC 'L'

次に、ESC 'W' を使用して画像領域を設定する必要があります。ここでは C で行います。

           h2 = h * 2 + 30;
            /* Set the printing area, h * 2 because of double density */
            seq[0] = 0x1b;
            seq[1] = 'W';
            seq[2] = 0;     /* xl */
            seq[3] = 0;     /* xh */
            seq[4] = 0;     /* yl */
            seq[5] = 0;     /* yh */
            seq[6] = 0;     /* dxl */
            seq[7] = 2;     /* dxh */
            seq[8] = h2 % 256;      /* dyl */
            seq[9] = h2 / 256;      /* dyh */
            if (write(fd, seq, 10) != 10)
                    goto finish;

ここで画像データを送信し、最後に 0x0c を送信して印刷します。これにより、プリンターも標準モードに戻ります。

ページモードを使用すると、画像の白い縞がなくなりました。

ところで、これは EPSON TM-T88 プリンタの異常のようです。TM-T500A や Aures プリンタなどでは、これらの白い線は見られません。これらのプリンターでは、標準モードを使用して画像を印刷できます。

于 2014-08-17T09:05:38.787 に答える
0

印刷前に ESC/POS コマンド (0x1B、'3'、24) を送信してみてください。これにより、行間がデフォルトの 30 ドットではなく 24 ドットに設定されます。

于 2014-03-23T22:33:24.447 に答える