UNPKG

react-native-esc-pos-printer

Version:

An unofficial React Native library for printing on an EPSON TM printer with the Epson ePOS SDK for iOS and Epson ePOS SDK for Android

43 lines (34 loc) 1.13 kB
import { Platform } from 'react-native'; import type { Printer } from '../Printer'; import type { AddViewShotParams } from '../types'; import { PrinterConstants, FULL_IMAGE_WIDTH_RATIO } from '../constants'; export async function addViewShot( printer: Printer, { width, viewNode }: AddViewShotParams ) { let captureRef = null; try { const RNViewShot = require('react-native-view-shot'); captureRef = RNViewShot.captureRef; } catch (error) {} if (!captureRef) { console.error('Install react-native-view-shot to use addViewShot'); return; } const { value: paperWidth } = await printer.getPrinterSetting( PrinterConstants.PRINTER_SETTING_PAPERWIDTH ); const imageBaset64Uri = await captureRef(viewNode, { result: 'base64', }); await printer.addImage({ source: { uri: 'data:image/png;base64,' + imageBaset64Uri, }, color: PrinterConstants.COLOR_4, mode: PrinterConstants.MODE_GRAY16, halftone: PrinterConstants.HALFTONE_THRESHOLD, brightness: Platform.OS === 'ios' ? 0.3 : 0.1, width: width || FULL_IMAGE_WIDTH_RATIO * paperWidth, }); }