2016-11-20 6 views
1

私はアナログサーマルプリンタを使用して、アンドロイドデバイスから領収書を印刷しています。彼らはプリンタにsdkを提供しましたが、テキストの配置、つまり[中央揃え]、[右揃え]の情報はありません。デフォルトでは左揃えが機能しています。Androidサーマルプリンタがアライメントバイトを受け付けていません

public boolean printData(byte[] msg) { 
    boolean flag = false; 
    try { 
     this.mmOutputStream.write(msg); 
     flag = true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return flag; 
} 

public boolean printData(String msg) { 
    boolean flag = false; 
    try { 
     this.mmOutputStream.write(msg.getBytes()); 
     this.mmOutputStream.flush(); 
     flag = true; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return flag; 
} 

私は、製品名のようなコマンドを印刷したい:

private static final byte[] ALIGN_LEFT = {0x1B, 0x61, 0}; 
private static final byte[] ALIGN_CENTER = {0x1B, 0x61, 1}; 
private static final byte[] ALIGN_RIGHT = {0x1B, 0x61, 2}; 

または

public static final byte[] ALIGN_LEFT = new byte[]{27, 97, 0}; 
public static final byte[] ALIGN_CENTER = new byte[]{27, 97, 1}; 
public static final byte[] ALIGN_RIGHT = new byte[]{27, 97, 2}; 

マイ印刷コマンドは以下の通りです:

は、これまでのところ私は、印刷にコマンドの下に試してみました数量+価格を右揃えにする必要があります。

public static String nameLeftValueRight(String leftValue, String rightValue) { 
    return applyParametersToPrinter(leftValue, DataConstants.ALIGN_LEFT) + 
      applyParametersToPrinter(rightValue, DataConstants.ALIGN_RIGHT); 
} 
public static String applyParametersToPrinter(String data, byte[] param) { 
    String s = new String(param); 
    return String.valueOf(s) + data; 
} 
+0

Chiru、あなたは解決策を見つけることができましたか? –

+0

@NinjoeQuah Nope – chiru

答えて

0

これは、Epson対応レシートプリンタのコマンドを持つドキュメントです。http://www.aures-support.fr/DE/wp-content/uploads/2016/04/ESCPOS-command-manual20160428.pdfです。

それはおよそ1B 61言う:

標準モードでの行の先頭で処理する場合にのみ、コマンドが有効になっています。

また、文字列と文字列へのバイトの変換が実際に元のバイトになるかどうかは完全にはわかりません。これは、プリンタに送信されたバイトをログに書き込むことで確認できます。

アラインメントの代わりの方法は、スペースを挿入することです。文字の幅が固定され、行の文字数がわかっている限り動作します。これは素晴らしい解決策ではありませんが、同じ行の中で何かを左揃えと右揃えにする唯一の方法です。私はそれを正確にこのようにするアプリケーションを知っています。

+0

私も1B1 61を試してみましたが、使用していません。私は手動整列で同じことを計画しています。ありがとうございました。 – chiru

+0

プリンタがEpson互換ではない可能性があります。 – mm759

0
private static final byte[] ALIGN_LEFT = {0x1B, 0x61, 0}; 
private static final byte[] ALIGN_CENTER = {0x1B, 0x61, 1}; 
public static final byte[] ALIGN_RIGHT = new byte[]{27, 97, 2}; 

私は自分のプリンタでこれらのコマンドをテストしました。 使用しているプリンタがこれらのコマンドに対応していないと思います。

関連する問題