2016-07-01 12 views
6

मैं थर्मल प्रिंट प्राप्तियों के एंड्रॉयड के लिए Epson SDK पीछा किया ...थर्मल प्रिंटर में पूर्ण पेपर आकार (80mm) पर एक छवि प्रिंट कैसे (EPSON)

तो बजाय पाठ मैं कुछ छवि को देखते हुए कर रहा हूँ जो पूरे होते हैं छवि .. Logoimage (स्टोर) के हिस्से में .. है कौन सा तरह

enter image description here

यहाँ नीचे स्टोर के Logoimage Insted है मैं अपने रसीद (छवि) दे दिया है तो मैं की तरह हो रही है ऊपर .. यह पूर्ण आकार प्रिंट नहीं कर रहा है ...

यह मेरा कोड है

public class MainActivity extends Activity implements View.OnClickListener, ReceiveListener { 

private Context mContext = null; 
private EditText mEditTarget = null; 
private Spinner mSpnSeries = null; 
private Spinner mSpnLang = null; 
private Printer mPrinter = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mContext = this; 

    int[] target = { 
     R.id.btnDiscovery, 
     R.id.btnSampleReceipt, 
    }; 

    for (int i = 0; i < target.length; i++) { 
     Button button = (Button)findViewById(target[i]); 
     button.setOnClickListener(this); 
    } 

    mSpnSeries = (Spinner)findViewById(R.id.spnModel); 
    ArrayAdapter<SpnModelsItem> seriesAdapter = new ArrayAdapter<SpnModelsItem>(this, android.R.layout.simple_spinner_item); 
    seriesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    seriesAdapter.add(new SpnModelsItem(getString(R.string.printerseries_t20), Printer.TM_T20)); 
    mSpnSeries.setAdapter(seriesAdapter); 
    mSpnSeries.setSelection(0); 

    try { 
     Log.setLogSettings(mContext, Log.PERIOD_TEMPORARY, Log.OUTPUT_STORAGE, null, 0, 1, Log.LOGLEVEL_LOW); 
    } 
    catch (Exception e) { 
     ShowMsg.showException(e, "setLogSettings", mContext); 
    } 
    mEditTarget = (EditText)findViewById(R.id.edtTarget); 
} 

@Override 
protected void onActivityResult(int requestCode, final int resultCode, final Intent data) { 
    if (data != null && resultCode == RESULT_OK) { 
     String target = data.getStringExtra(getString(R.string.title_target)); 
     if (target != null) { 
      EditText mEdtTarget = (EditText)findViewById(R.id.edtTarget); 
      mEdtTarget.setText(target); 
     } 
    } 
} 

@Override 
public void onClick(View v) { 
    Intent intent = null; 

    switch (v.getId()) { 
     case R.id.btnDiscovery: 
      intent = new Intent(this, DiscoveryActivity.class); 
      startActivityForResult(intent, 0); 
      break; 

     case R.id.btnSampleReceipt: 
      updateButtonState(false); 
      if (!runPrintReceiptSequence()) { 
       updateButtonState(true); 
      } 
      break; 

     case R.id.btnSampleCoupon: 
      updateButtonState(false); 
      if (!runPrintCouponSequence()) { 
       updateButtonState(true); 
      } 
      break; 

     default: 
      // Do nothing 
      break; 
    } 
} 

private boolean runPrintReceiptSequence() { 
    if (!initializeObject()) { 
     return false; 
    } 

    if (!createReceiptData()) { 
     finalizeObject(); 
     return false; 
    } 

    if (!printData()) { 
     finalizeObject(); 
     return false; 
    } 

    return true; 
} 

private boolean createReceiptData() { 
    String method = ""; 
    Bitmap logoData = BitmapFactory.decodeResource(getResources(), R.drawable.store); 
    StringBuilder textData = new StringBuilder(); 
    final int barcodeWidth = 2; 
    final int barcodeHeight = 100; 

    if (mPrinter == null) { 
     return false; 
    } 

    try { 
     method = "addTextAlign"; 
     mPrinter.addTextAlign(Printer.ALIGN_CENTER); 

     method = "addImage"; 
     mPrinter.addImage(logoData, 0, 0, 
          logoData.getWidth(), 
          logoData.getHeight(), 
          Printer.COLOR_1, 
          Printer.MODE_MONO, 
          Printer.HALFTONE_DITHER, 
          Printer.PARAM_DEFAULT, 
          Printer.COMPRESS_AUTO); 

     method = "addFeedLine"; 
     mPrinter.addFeedLine(1); 
     textData.append("EPSON PRINT DEMO TEST - (HYD)\n"); 
     textData.append("STORE DIRECTOR – MLN\n"); 
     textData.append("\n"); 
     textData.append("07/06/12 09:15 012 0191 134\n"); 
     textData.append("ST# 21 OP# 001 TE# 01 TR# 747\n"); 
     textData.append("------------------------------\n"); 
     method = "addText"; 
     mPrinter.addText(textData.toString()); 
     textData.delete(0, textData.length()); 

     textData.append("524 3 CUP BLK TEAPOT 9.99 R\n"); 
     textData.append("003 WESTGATE BLACK 25 59.99 R\n"); 
     textData.append("------------------------------\n"); 
     method = "addText"; 
     mPrinter.addText(textData.toString()); 
     textData.delete(0, textData.length()); 

     textData.append("SUBTOTAL    69.98\n"); 
     textData.append("TAX      14.43\n"); 
     method = "addText"; 
     mPrinter.addText(textData.toString()); 
     textData.delete(0, textData.length()); 

     method = "addTextSize"; 
     mPrinter.addTextSize(2, 2); 
     method = "addText"; 
     mPrinter.addText("TOTAL 84.41\n"); 
     method = "addTextSize"; 
     mPrinter.addTextSize(1, 1); 
     method = "addFeedLine"; 
     mPrinter.addFeedLine(1); 

     textData.append("CASH     200.00\n"); 
     textData.append("CHANGE     78.14\n"); 
     textData.append("------------------------------\n"); 
     method = "addText"; 
     mPrinter.addText(textData.toString()); 
     textData.delete(0, textData.length()); 

     textData.append("Purchased item total number\n"); 
     textData.append("Sign Up and Save !\n"); 
     textData.append("With Preferred Saving Card\n"); 

     method = "addText"; 
     mPrinter.addText(textData.toString()); 
     textData.delete(0, textData.length()); 
     method = "addFeedLine"; 
     mPrinter.addFeedLine(2); 

     method = "addCut"; 
     mPrinter.addCut(Printer.CUT_FEED); 


    } 
    catch (Exception e) { 
     ShowMsg.showException(e, method, mContext); 
     return false; 
    } 

    textData = null; 

    return true; 
} 

private boolean runPrintCouponSequence() { 
    if (!initializeObject()) { 
     return false; 
    } 

    if (!createCouponData()) { 
     finalizeObject(); 
     return false; 
    } 

    if (!printData()) { 
     finalizeObject(); 
     return false; 
    } 

    return true; 
} 


private boolean printData() { 
    if (mPrinter == null) { 
     return false; 
    } 

    if (!connectPrinter()) { 
     return false; 
    } 

    PrinterStatusInfo status = mPrinter.getStatus(); 

    dispPrinterWarnings(status); 

    if (!isPrintable(status)) { 
     ShowMsg.showMsg(makeErrorMessage(status), mContext); 
     try { 
      mPrinter.disconnect(); 
     } 
     catch (Exception ex) { 
      // Do nothing 
     } 
     return false; 
    } 

    try { 
     mPrinter.sendData(Printer.PARAM_DEFAULT); 
    } 
    catch (Exception e) { 
     ShowMsg.showException(e, "sendData", mContext); 
     try { 
      mPrinter.disconnect(); 
     } 
     catch (Exception ex) { 
      // Do nothing 
     } 
     return false; 
    } 

    return true; 
} 

private boolean initializeObject() { 
    try { 
     mPrinter = new Printer(((SpnModelsItem) mSpnSeries.getSelectedItem()).getModelConstant(), 
           ((SpnModelsItem) mSpnLang.getSelectedItem()).getModelConstant(), 
           mContext); 
    } 
    catch (Exception e) { 
     ShowMsg.showException(e, "Printer", mContext); 
     return false; 
    } 

    mPrinter.setReceiveEventListener(this); 

    return true; 
} 

private void finalizeObject() { 
    if (mPrinter == null) { 
     return; 
    } 

    mPrinter.clearCommandBuffer(); 

    mPrinter.setReceiveEventListener(null); 

    mPrinter = null; 
} 

private boolean connectPrinter() { 
    boolean isBeginTransaction = false; 

    if (mPrinter == null) { 
     return false; 
    } 

    try { 
     mPrinter.connect(mEditTarget.getText().toString(), Printer.PARAM_DEFAULT); 
    } 
    catch (Exception e) { 
     ShowMsg.showException(e, "connect", mContext); 
     return false; 
    } 

    try { 
     mPrinter.beginTransaction(); 
     isBeginTransaction = true; 
    } 
    catch (Exception e) { 
     ShowMsg.showException(e, "beginTransaction", mContext); 
    } 

    if (isBeginTransaction == false) { 
     try { 
      mPrinter.disconnect(); 
     } 
     catch (Epos2Exception e) { 
      // Do nothing 
      return false; 
     } 
    } 

    return true; 
} 

private void disconnectPrinter() { 
    if (mPrinter == null) { 
     return; 
    } 

    try { 
     mPrinter.endTransaction(); 
    } 
    catch (final Exception e) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public synchronized void run() { 
       ShowMsg.showException(e, "endTransaction", mContext); 
      } 
     }); 
    } 

    try { 
     mPrinter.disconnect(); 
    } 
    catch (final Exception e) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public synchronized void run() { 
       ShowMsg.showException(e, "disconnect", mContext); 
      } 
     }); 
    } 

    finalizeObject(); 
} 

private boolean isPrintable(PrinterStatusInfo status) { 
    if (status == null) { 
     return false; 
    } 

    if (status.getConnection() == Printer.FALSE) { 
     return false; 
    } 
    else if (status.getOnline() == Printer.FALSE) { 
     return false; 
    } 
    else { 
     ;//print available 
    } 

    return true; 
} 

private String makeErrorMessage(PrinterStatusInfo status) { 
    String msg = ""; 

    if (status.getBatteryLevel() == Printer.BATTERY_LEVEL_0) { 
     msg += getString(R.string.handlingmsg_err_battery_real_end); 
    } 

    return msg; 
} 

private void dispPrinterWarnings(PrinterStatusInfo status) { 
    EditText edtWarnings = (EditText)findViewById(R.id.edtWarnings); 
    String warningsMsg = ""; 

    if (status == null) { 
     return; 
    } 

    if (status.getPaper() == Printer.PAPER_NEAR_END) { 
     warningsMsg += getString(R.string.handlingmsg_warn_receipt_near_end); 
    } 

    if (status.getBatteryLevel() == Printer.BATTERY_LEVEL_1) { 
     warningsMsg += getString(R.string.handlingmsg_warn_battery_near_end); 
    } 

    edtWarnings.setText(warningsMsg); 
} 

private void updateButtonState(boolean state) { 
    Button btnReceipt = (Button)findViewById(R.id.btnSampleReceipt); 
    Button btnCoupon = (Button)findViewById(R.id.btnSampleCoupon); 
    btnReceipt.setEnabled(state); 
    btnCoupon.setEnabled(state); 
} 

@Override 
public void onPtrReceive(final Printer printerObj, final int code, final PrinterStatusInfo status, final String printJobId) { 
    runOnUiThread(new Runnable() { 
     @Override 
     public synchronized void run() { 
      ShowMsg.showResult(code, makeErrorMessage(status), mContext); 

      dispPrinterWarnings(status); 

      updateButtonState(true); 

      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        disconnectPrinter(); 
       } 
      }).start(); 
     } 
    }); 
} 
} 

किसी भी एक मुझे जहाँ मैं छवि के आकार को समायोजित करते सुझाव दे सकते हैं, ताकि मैं लोगो आकार के बजाय पेज क्षेत्र प्रिंट चाहिए ...

इस

छवि सामग्री है छवि

String method = ""; 
Bitmap logoData = BitmapFactory.decodeResource(getResources(), R.drawable.store); 
//I have given this Bitmap logoData = BitmapFactory.decodeResource(getResources(), R.drawable.full); 

के लिए डेटा और इस छवि सामग्री के लिए है ..

method = "addImage"; 
    mPrinter.addImage(logoData,0,0,logoData.getWidth(),logoData.getHeight(),Printer.COLOR_1,Printer.MODE_MONO,Printer.HALFTONE_DITHER,Printer.PARAM_DEFAULT,Printer.COMPRESS_AUTO); 

कृपया सुझाव है कि कैसे पूर्ण आकार में छवि सामग्री मुद्रित करने के लिए ... मैं पेज का एक पक्ष हो रही है ..

यह आकार के 80 मिमी, लेकिन इसके मुद्रण 40 मिमी किसी भी एक मुझे सुझाव है कि कैसे कर सकते हैं के लिए प्रिंट चाहिए इसे पूर्ण आकार में बनाएं या छवि के आकार को अधिकतम पेपर क्षेत्र में खींचने के लिए कैसे करें ...

+0

बारकोड कैसे प्रिंट करते हैं? –

+0

एक बार मेरा कोड जांचें .. वहां पर मैं बारकोड का उपयोग कर रहा हूं ... – MLN

+0

@MLN आपने इस समस्या को कैसे हल किया? –

उत्तर

0

आपका प्रश्न थोड़ा अस्पष्ट है।

मुझे लगता है कि आपके सवाल यह है:

  • आप किसी Android BitMapFactory के रूप में कुछ संकल्प पर छवि के लिए डेटा दिया जाता है।
  • आप किसी अन्य डीपीआई के साथ कुछ प्रिंटर पर प्रिंट करना चाहते हैं। छवि के लिए एंड्रॉइड बिटमैप फैक्टरी पहले से ही सेट है।
  • आपको अपने लोगो के लिए बिटमैप फैक्टरी को स्केल करने की आवश्यकता है।

सबसे पहले, लोगो डेटा प्राप्त करने की आपकी लाइन में, आप बस सही आकार के बारे में जानने के लिए BitmapFactory.Options.inSampleSize विकल्प का पता लगाने का प्रयास कर सकते हैं। यह आपको एक बेहतर, लेकिन सही जवाब नहीं मिलेगा।

सही के लिए, आपको लोगो को स्केल करना चाहिए। आप कोड here का उपयोग कर सकते हैं। संबंधित प्रश्न here और here देखें।

+0

हाय @ चार्ल्स मरियम सर, जब मैं पाठ के साथ डेटा प्रिंट करता हूं .. पूर्ण कागज़ पर इसकी प्रिंटिंग ... जो बाईं तरफ है, और उस "स्टोर" में छवि है ... तो उस छवि का इंस्टेंट मैंने छवि के रूप में पूर्ण डेटा दिया है ... लेकिन यह पूर्ण पृष्ठ पर प्रिंट नहीं कर रहा है .. कृपया मेरी मदद करें .. मेरे प्रश्न से मेरा बिटमैप आकार .. आदि देखें। मुझे सुझाव दें कि मुझे कहां बदलना चाहिए .. – MLN

संबंधित मुद्दे