# react-native-harvard-inner-printer

(React native plugin Referring the Harvard by Advan printer document and demos)

**Caution: this is not the official project. I share it because I am working on this device but no any official support in react-native It's welcome to ask any question about the usage,problems or feature required, I will support ASAP.**

## Installation:

**Step 1.**

install with npm: [Check in NPM](https://www.npmjs.com/package/react-native-harvard-inner-printer)

```bash
npm install react-native-harvard-harvard-printer --save
```

or you may need to install via the clone address directly:


**Step 2:**

Links this plugin to your project.

```bash
react-native link react-native-harvard-inner-printer
```

or you may need to link manually 
* modify settings.gradle

```javascript 
include ':react-native-harvard-inner-printer'
project(':react-native-harvard-inner-printer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-harvard-inner-printer/android')
```

* modify  app/build.gradle,add dependenceie：

```javascript
compile project(':react-native-harvard-inner-printer')
```

* adds package references to  MainPackage.java 

```java

import com.harvard.innerprinter.HarvardInnerPrinterPackage;
...

 @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new HarvardInnerPrinterPackage()
      );
    }

```

**Step 3:**

refer in the javascript:
```javascript
import HarvardInnerPrinter from 'react-native-harvard-inner-printer';

```

## Usage & Demo:
See examples folder of the source code that you can find a simple example of printing receipt.
// TODO

## API


#### Example

```javascript
import React, { Component } from 'react';
import { View, Text } from 'react-native';
import HarvardInnerPrinter from 'react-native-harvard-inner-printer';

class PrinterComponent extends Component {

    _printData() {
        const ALIGN_CENTER  = 0;
        const ALIGN_LEFT = 1;
        const ALIGN_RIGHT = 2;
        const SHOW_TEXT_BARCODE = true;
        const HIDE_TEXT_BARCODE = false;

        result = await HarvardInnerPrinter.printImage(logo, ALIGN_CENTER);
        result = await HarvardInnerPrinter.setFontSize(40);

        result = await HarvardInnerPrinter.PrintText("STRUK BELANJA", ALIGN_CENTER);
        result = await HarvardInnerPrinter.setFontSize(30);
        result = await HarvardInnerPrinter.PrintText("TOKO ANDROID BERKEMBANG", ALIGN_CENTER);
        result = await HarvardInnerPrinter.PrintOriginalText("================================");
        result = await HarvardInnerPrinter.setFontSize(25);
        result = await HarvardInnerPrinter.setBold(1);
        result = await HarvardInnerPrinter.PrintColumnText(["SEMEN NUSANTARA","1","50.000"],[18, 5, 11], [ ALIGN_LEFT, ALIGN_CENTER, ALIGN_CENTER]);
        result = await HarvardInnerPrinter.PrintColumnText(["PAKU BAJA","1","1.500"],[18, 5, 11], [ ALIGN_LEFT, ALIGN_CENTER, ALIGN_CENTER]);
        result = await HarvardInnerPrinter.PrintColumnText(["PASIR MUNTILAN","1","5.000"],[18, 5, 11], [ ALIGN_LEFT, ALIGN_CENTER, ALIGN_CENTER]);
        result = await HarvardInnerPrinter.setBold(0);
        result = await HarvardInnerPrinter.PrintOriginalText("================================");
        result = await HarvardInnerPrinter.printQRCode("http://mkpmobile.com", 100, ALIGN_CENTER);
        result = await HarvardInnerPrinter.PrintText(" ", ALIGN_CENTER)
        result = await HarvardInnerPrinter.printBarCode("123456", 200,50, ALIGN_CENTER, HIDE_TEXT_BARCODE);
        result = await HarvardInnerPrinter.setFontSize(15);
        result = await HarvardInnerPrinter.PrintText("MEMBELI BERARTI SETUJU DENGAN", ALIGN_CENTER);
        result = await HarvardInnerPrinter.PrintText("SEGALA PERSYARATAN DARI TOKO KAMI", ALIGN_CENTER);
        result = await HarvardInnerPrinter.PrintText("BARANG RUSAK TIDAK BERGARANSI", ALIGN_CENTER);
        result = await HarvardInnerPrinter.PrintOriginalText("\n\n");
    }

    render() {
        return (
            <View>
                <Text  onPress={()=>{_printData()}}>Print Data</Text>
            </View>
        )
    }
}
```
