ロゴ:EPSON
ロゴ:よくあるご質問(FAQ)

製品別
質問別
エプソンパートナーポータル

URLをクリップボードにコピーしました
シェア用URL:https://faq2.epson.jp/web/Detail.aspx?id=52717
  FAQ番号:52717
OPOSでレシートに画像を印刷する方法<EPSON OPOS ADK .NET版 シリーズ>
OPOSで画像(イメージ、ビットマップ、ロゴ)をレシートに印刷する方法
 
 

画像イメージの印字をしたい場合は、POSPrinter オブジェクトの PrintBitmap, SetBitmap メソッドを使用してください。
また、プリンター本体のNVRAM(不揮発性メモリ)に予め画像データを登録して、API で呼び出して印刷する方法もございます。

 

注意

本FAQはOPOSアプリケーションの開発者向けです。OPOSメソッドのコーディングについて紹介しています。

  1. PrintBitmapメソッドにてビットマップ画像を印刷
  2. SetBitmapメソッドにてビットマップ画像を登録後、PrintNormalメソッドで印刷
  3. NVRAM(不揮発性メモリ)に画像データを登録後、DirectIOメソッドで印刷

「RecLetterQuality」プロパティーは、印字品質を設定します。

 
  • RecLetterQuality = TRUE (レシートを高品質モードで印刷)
  • RecLetterQuality = FALSE (レシートを高速モードで印刷)
 

高品質モードでは高密度のグラフィックで画像が印刷され、高速モードでは低密度のグラフィックで印刷されます。
TM-T88VIやTM-T70IIなどでは「RecLetterQuality = TRUE」で画像印刷を行うと原寸大の大きさで印刷しますが、「RecLetterQuality = FALSE」で画像の印刷を行うと低密度のため縦横2倍のサイズで印刷されます。
「RecLetterQuality」プロパティーの初期値は FALSE となっている為、明示的に TRUE を指定する必要があります。
 

 

PrintBitmapメソッドにてビットマップ画像を印刷

PrintBitmap メソッドで命令をおこなう度に画像ファイルを指定しますので、毎回異なった画像を印刷したい時などに便利です。
ただし「ハードディスク上の画像データ読み込み時間」や「TMプリンターが扱える形へデータ内容を変換」する処理を毎回行うために、他の画像印刷方法に比べて出力に掛かる時間が長くなる場合があります。

 

C# の例


  string strFilePath = "Logo.bmp";

  // 第二パラメーターに画像ファイルのパスを指定し、
  // 第三パラメーターの幅(Width)に合わせて縮小/拡大され、
  // 第四パラメーターの位置(align)によって配置先を決めます。
  m_Printer.PrintBitmap(
     PrinterStation.Receipt,
     strFilePath,
     m_Printer.RecLineWidth / 6,
     PosPrinter.PrinterBitmapCenter);

 

SetBitmapメソッドにてビットマップ画像を登録後、PrintNormalメソッドで印刷

SetBitmap メソッドを利用することで「ハードディスク上の画像データを読み込む時間」や 「TMプリンターが扱える形へデータ内容を変換」する処理を、あらかじめ済ませることができます。
「TMプリンターが扱える形に変換された画像データ」は、TMプリンター本体のメモリ内に登録されます。
 

ただし、Close メソッドの実行やプリンターの電源をOFFにすることにより、メモリに登録された画像データは削除されてしまいます。
次の Open メソッド実行時などに改めて画像データの登録を行う必要があります。

 

プリンターのメモリに登録された画像データは、PrintNormal メソッドでエスケープシーケンス文字(ESC|1B)を使った命令をおこなうことで印字できます。ほとんどの処理がプリンター内で進むため、出力までに掛かる時間も短くなります。

 

C# の例




   //ビットマップをプリンターのメモリ(RAM)に登録しておきます。
  // 第三パラメーターに画像ファイルのパスを指定し、
  // 第四パラメーターの幅(Width)に合わせて縮小/拡大され、
  // 第五パラメーターの位置(align)によって配置先を決めます。
   m_Printer.SetBitmap(1, PrinterStation.Receipt,
       strFilePath,
       m_Printer.RecLineWidth / 2,
       PosPrinter.PrinterBitmapCenter);

   //~中略~

   //登録されたビットマップを印字します。
   m_Printer.PrintNormal(PrinterStation.Receipt, "\u001b|1B");

 

NVRAM(不揮発性メモリ)に画像データを登録後、DirectIOメソッドで印刷

NVRAM 搭載 TM プリンターのNVRAM上に、画像データを登録することができます。

NVRAMに登録された画像データは、SetBitmap メソッドで登録されたメモリ上の画像データとは異なり、Close メソッドの実行やプリンターの電源OFFをおこなっても削除されません。
一度の登録のみで、プリンター使用時に改めて画像データを登録する必要がありません。

 
 

NVRAMに画像データを登録するには、専用ユーティリティーを使用します。
ユーティリティー名や、入手先などについては機種別の詳細取扱説明書をご覧ください。

 
 

DirectIO メソッドを使って、登録された画像番号を印刷する命令をすると、TMプリンター本体に登録された画像を印字することができます。
Setbitmap メソッドの登録処理が無くなり、プリンター内のNVRAMから出力を行うために、高速な印字が可能です。

 

C# の例


    //ロゴ登録時のキーコードを元に値を指定
    //pData の31~16 ビットにキーコードの1バイト目を、
    //15~0 ビットにキーコードの2バイト目を格納します。
     int second = 33;
     int first = 32;
     int pData = 0;
     pData += second;
     pData += first << 16;

    //DirectIO メソッドで NV グラフィックスを印字します。
    //第三パラメーターでは印字位置を指定します。
     mprnt.DirectIO(
         EpsonPOSPrinterConst.PTR_DI_PRINT_FLASH_BITMAP2,
         pData,
         UPOSPOSPrinterConst.PTR_BM_CENTER.ToString());

 

VB.NET の例


    Dim pData As Integer
    '登録に使用したキーコードを元に値を指定
    'キーコード 32,33 の場合
    '(first * 256& * 256&) + second
    pData = (32 * 256& * 256&) + 33

    'DirectIO メソッドで NV グラフィックスを印字します。
    '第三パラメーターでは印字位置を指定します。
    m_Printer.DirectIO(
        EpsonPOSPrinterConst.PTR_DI_PRINT_FLASH_BITMAP2,
        pData,
        UPOSPOSPrinterConst.PTR_BM_CENTER.ToString())

 
モバイルプリンター TM-P20,TM-P60II,TM-P80
PC一体型プリンター TM-T70II-DT,TM-T88V-DT,TM-T70II-DT2,TM-T88VI-DT2
TMシリーズ TM-H5000II,TM-H6000III,TM-H6000IV,TM-H6000V,TM-L90 オートカッターモデル,TM-m10,TM-m30 シリーズ,TM-T20,TM-T20II,TM-T70,TM-T70II,TM-T88III,TM-T88IV,TM-T88V,TM-T88VI,TM-T90,TM-T90II
FAQ改善アンケート

このページの評価をお聞かせください。〇✖をお選びください。

 

■役に立った
■役に立たなかった