Capacitor plugin para integração com hardware POS Elgin (linha PIX4 / TPro / M8 / M10) e iMin (D1 / M10 com display traseiro estilo TPro).
Funcionalidades atuais:
showLogoOnDisplay()— exibe a logo Yooga no display traseiro.showPix({ value })— exibe um QR Code PIX no display traseiro.print({ html, ... })— renderiza HTML em bitmap e imprime na térmica interna do terminal (compatível com Elgin M8/M10).
No iOS e na web os métodos são no-op, pois o hardware não existe nessas plataformas.
npm install capacitor-yooga-pos
npx cap syncA SDK da Elgin é distribuída como AARs locais (android/libs/*.aar). O AGP 8
não permite que uma android-library empacote AARs locais (o build falha
com "Direct local .aar file dependencies are not supported when building an
AAR"), então este plugin declara esses AARs como compileOnly e o app
consumidor precisa empacotá-los.
Cole no android/app/build.gradle do seu app Capacitor:
repositories {
flatDir {
dirs '../capacitor-cordova-android-plugins/src/main/libs',
'libs',
'../../node_modules/capacitor-yooga-pos/android/libs'
}
}
dependencies {
// AARs da Elgin vendorados em capacitor-yooga-pos.
// AGP 8 não permite empacotar AARs dentro de uma android-library, então
// o plugin declara como compileOnly e o app empacota aqui.
// A v02.34.00 já embute libfree_image.so e DisplaySDK, dispensando a AAR display separada.
implementation(name: 'e1-V02.34.00-release', ext: 'aar')
implementation(name: 'minipdvm8-v01.00.00-release', ext: 'aar')
}O sync do Android Studio com Capacitor 6 + AGP 8 pede :testClasses em todos
os subprojetos, mas :capacitor-cordova-android-plugins não tem fontes de
teste. Adicione no android/build.gradle (root) do app:
allprojects {
repositories {
google()
mavenCentral()
}
afterEvaluate { project ->
if (!project.tasks.findByName('testClasses')) {
project.tasks.register('testClasses')
}
}
}import { CapacitorYoogaPos } from 'capacitor-yooga-pos';
await CapacitorYoogaPos.showLogoOnDisplay();
await CapacitorYoogaPos.showPix({
value: '00020126...PIX-COPIA-E-COLA...6304ABCD',
});
await CapacitorYoogaPos.print({
html: '<html><body style="font-family:monospace">Cupom...</body></html>',
});showLogoOnDisplay() => Promise<void>Mostra a logo padrão da Yooga no display traseiro do terminal (Elgin PIX4 / TPro / iMin D1 / iMin M10).
showPix(options: ShowPixOptions) => Promise<void>Mostra um QR Code PIX no display traseiro do terminal.
| Param | Type |
|---|---|
options |
ShowPixOptions |
print(options: PrintOptions) => Promise<void>Renderiza o HTML em bitmap e imprime na impressora térmica interna do terminal Elgin (M8/M10).
| Param | Type |
|---|---|
options |
PrintOptions |
| Prop | Type | Description |
|---|---|---|
value |
string |
Conteúdo do QR Code (copia-e-cola PIX) a ser exibido no display. |
| Prop | Type | Description |
|---|---|---|
html |
string |
HTML completo a ser renderizado em bitmap e impresso na térmica interna. |
cutPaperLength |
number |
Quantidade de linhas em branco a avançar antes do corte (default 4). |
webViewZoom |
number |
Zoom de texto aplicado no WebView que renderiza o HTML (em %, default 100). |
bitmapWidth |
number |
Largura do bitmap gerado em pixels (default 384, padrão da térmica 58mm). |
measureDelay |
number |
Atraso (ms) antes de medir o conteúdo do WebView (default 0). |
screenshotDelay |
number |
Atraso (ms) antes de capturar o screenshot do WebView (default 0). |
strictMode |
boolean |
Se true, falha imediatamente em qualquer erro ao gerar o bitmap. |
timeout |
number |
Timeout total (ms) para conversão HTML -> bitmap (default 30000). |
builderTextZoom |
number |
Zoom de texto adicional aplicado no Html2Bitmap.Builder (em %, default 100). |