├── .gitignore ├── ESCPOSPrintServiceDemo.iml ├── LICENSE.md ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── proguard-rules.pro ├── release │ └── output.json └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── bill.txt │ ├── bill_orig.txt │ ├── sample_pdf.pdf │ └── sample_receipt.html │ ├── java │ └── com │ │ └── loopedlabs │ │ └── escposprintservicedemo │ │ └── DemoMain.java │ ├── looped_labs-web.png │ └── res │ ├── drawable-nodpi │ ├── big_image.png │ └── ll.png │ ├── drawable │ ├── demologo.png │ └── no-dpi │ │ └── store_logo.png │ ├── layout │ └── demo_main.xml │ ├── menu │ └── demo_main.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── looped_labs.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── looped_labs.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── looped_labs.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── looped_labs.png │ ├── mipmap-xxxhdpi │ └── looped_labs.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── arrays.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── debug_log ├── .gitignore ├── build.gradle ├── debug_log.iml ├── libs │ └── android-async-http-1.4.8.jar └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── loopedlabs │ │ ├── beans │ │ └── DbgLog.java │ │ ├── db │ │ ├── DebugLogDb.java │ │ └── DebugLogDbHelper.java │ │ ├── net │ │ ├── DebugLogRestClient.java │ │ └── NetUtils.java │ │ └── util │ │ └── debug │ │ └── DebugLog.java │ └── res │ └── values │ └── strings.xml ├── file_selector ├── .gitignore ├── build.gradle ├── file_selector.iml ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── icon_folder-web.png │ ├── icon_html_file-web.png │ ├── icon_jpg_file-web.png │ ├── icon_pdf_file-web.png │ ├── icon_png_file-web.png │ ├── icon_unknown_file-web.png │ ├── icon_up_folder-web.png │ ├── java │ └── com │ │ └── loopedlabs │ │ └── selector │ │ ├── FileData.java │ │ ├── FileListAdapter.java │ │ ├── FileOperation.java │ │ ├── FileSelector.java │ │ ├── FileSelectorActivity.java │ │ ├── FileUtils.java │ │ ├── OnHandleFileListener.java │ │ ├── SaveLoadClickListener.java │ │ └── TextViewWithImage.java │ └── res │ ├── drawable-hdpi │ └── ic_dropdown.png │ ├── drawable-mdpi │ └── ic_dropdown.png │ ├── drawable-xhdpi │ └── ic_dropdown.png │ ├── drawable-xxhdpi │ └── ic_dropdown.png │ ├── drawable │ └── spinner_bg.xml │ ├── layout │ ├── dialog.xml │ ├── file_selector_main.xml │ └── spinner_item.xml │ ├── mipmap-hdpi │ ├── icon_csv_file.png │ ├── icon_folder.png │ ├── icon_html_file.png │ ├── icon_jpg_file.png │ ├── icon_pdf_file.png │ ├── icon_png_file.png │ ├── icon_unknown_file.png │ ├── icon_up_folder.png │ └── icon_zip_file.png │ ├── mipmap-mdpi │ ├── icon_csv_file.png │ ├── icon_folder.png │ ├── icon_html_file.png │ ├── icon_jpg_file.png │ ├── icon_pdf_file.png │ ├── icon_png_file.png │ ├── icon_unknown_file.png │ ├── icon_up_folder.png │ ├── icon_zip_file.png │ └── image.png │ ├── mipmap-xhdpi │ ├── icon_csv_file.png │ ├── icon_folder.png │ ├── icon_html_file.png │ ├── icon_jpg_file.png │ ├── icon_pdf_file.png │ ├── icon_png_file.png │ ├── icon_unknown_file.png │ ├── icon_up_folder.png │ └── icon_zip_file.png │ ├── mipmap-xxhdpi │ ├── icon_csv_file.png │ ├── icon_folder.png │ ├── icon_html_file.png │ ├── icon_jpg_file.png │ ├── icon_pdf_file.png │ ├── icon_png_file.png │ ├── icon_unknown_file.png │ ├── icon_up_folder.png │ └── icon_zip_file.png │ ├── mipmap-xxxhdpi │ ├── icon_csv_file.png │ ├── icon_folder.png │ ├── icon_html_file.png │ ├── icon_jpg_file.png │ ├── icon_pdf_file.png │ ├── icon_png_file.png │ ├── icon_unknown_file.png │ ├── icon_up_folder.png │ └── icon_zip_file.png │ └── values │ └── strings.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── readme.md └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | /.idea/workspace.xml 4 | /.idea/libraries 5 | /build 6 | #built application files 7 | *.apk 8 | *.ap_ 9 | 10 | # files for the dex VM 11 | *.dex 12 | 13 | # Java class files 14 | *.class 15 | 16 | # generated files 17 | bin/ 18 | gen/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Windows thumbnail db 24 | Thumbs.db 25 | 26 | # OSX files 27 | .DS_Store 28 | 29 | # Eclipse project files 30 | .classpath 31 | .project 32 | 33 | # Android Studio 34 | .idea 35 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. 36 | build/ 37 | -------------------------------------------------------------------------------- /ESCPOSPrintServiceDemo.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Looped Labs Pvt. Ltd. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | 6 | defaultConfig { 7 | applicationId "com.loopedlabs.escposprintservicedemo" 8 | minSdkVersion 19 9 | targetSdkVersion 29 10 | versionCode 220 11 | versionName "2.2.0" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation fileTree(dir: 'libs', include: ['*.jar']) 23 | implementation 'androidx.appcompat:appcompat:1.1.0' 24 | implementation 'commons-io:commons-io:2.6' 25 | implementation project(path: ':file_selector') 26 | implementation project(path: ':debug_log') 27 | } 28 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in G:\android-sdk-windows/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":214,"versionName":"2.1.4","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 25 | 28 | 29 | 30 | 31 | 37 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/assets/bill.txt: -------------------------------------------------------------------------------- 1 | @ 2 | !aTiendas 360 3 | B!a Tiendas 360 TrouvilleB 4 | !aFrancisco Bilbao 3923 Montevideo 5 | !aTeléfono: 2419 64 57 6 | 7 | !e-Factura RUC 210330580019 8 | !A 187 Pago: Crédito 9 | !!0tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³! RUC COMPRADOR !0³³! 210094030014 !0³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙt 10 | !aNombre: Tienda Inglesa 11 | !aDirección: Av. Italia 5820 esq la calle XXX 12 | !aCiudad: MONTEVIDEO 13 | 14 | !Fecha: 10/05/2013 Moneda: USD 15 | !aReferencia: e-Factura1111 16 | 17 | !Nafta 108.000,00 18 | !a1,250 U x 99.999,00 19 | !Producto 2 108.000,00 20 | !a1,250 U x 99.999,00 -Dto. 500,00 21 | !Nafta 108.000,00 22 | !a1,250 U x 99.999,00 23 | !Producto 2 108.000,00 24 | !a1,250 U x 99.999,00 -Dto. 500,00 25 | !Nafta 108.000,00 26 | !a1,250 U x 99.999,00 27 | !Nafta 108.000,00 28 | !a1,250 U x 99.999,00 29 | !Producto 2 108.000,00 30 | !a1,250 U x 99.999,00 -Dto. 500,00 31 | !Nafta 108.000,00 32 | !a1,250 U x 99.999,00 33 | !Producto 2 108.000,00 34 | !a1,250 U x 99.999,00 -Dto. 500,00 35 | !Nafta 108.000,00 36 | !a1,250 U x 99.999,00 37 | !__________________________________________ 38 | !Subtotal grav. 10% 834.902,00 39 | !Subtotal grav. 22% 834.902,00 40 | !Iva 10% 0,00 41 | !Iva 22% 625.872,95 42 | !Total 3.470.750,00 43 | !TOTAL A PAGAR 840,00 44 | 45 | 46 | t!ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ADENDA ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜt 47 | 48 | !aEsta es la adenda 49 | 50 | t!ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ FIN ADENDA ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜt 51 | 52 | 53 | @3\–*!Êÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿààààààààþþþþáÿáÿáÿáÿààààþþþþþþþþáááááþþþþÿáÿáÿáÿáààààÿÿÿÿáþáþáþáþþþþþþþþþààààþþþþþþþþáááááááááþþþþÿàÿàÿàÿàáÿáÿáÿáÿþþþþààààÿàÿàÿàÿàþþþþÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿ 54 | \–*!Êþáþáþáþáþþþþááááààààààààààààþþþþþþþþÿáÿáÿáÿáÿÿÿÿáÿàáÿàáÿàáÿàþàþàþàþàáàáàáàáàááááààààÿáþÿáþÿáþÿáþÿáþÿþÿþÿþÿþáþáþáþáþÿþÿþÿþÿþþþþþÿþÿþÿþÿþþþþþþÿþÿþÿþÿáÿþáÿþáÿþáÿþþàþàþàþàþàááàááàááàááàÿÿÿÿààààÿàÿàÿàÿàààààààààþáþáþáþáþþþþááááááááááááþþþþþþþþááááÿÿÿÿÿÿÿÿþþþþ 55 | \–*!Êÿàÿàÿàÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààààÿáÿÿáÿÿáÿÿáÿààààáàáàáàáàÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþàþàþàþàààààáÿáÿáÿáÿáÿààààáàáàáàáàáþáþáþáþþþþþÿÿÿÿÿÿàÿÿàÿÿàÿÿàÿáÿÿáÿÿáÿÿáÿÿàÿàÿàÿàþàþàþàþàÿáÿÿáÿÿáÿÿáÿÿàÿàÿàÿàÿþÿþÿþÿþáÿáÿáÿáÿÿÿÿÿÿÿÿÿÿÿÿÿàààààààààþàþàþàþàÿàÿàÿàÿàÿÿÿÿááÿááÿááÿááÿààààààààáàáàáàáàÿàÿàÿàÿàÿáàÿáàÿáàÿáàþþþþÿáÿÿáÿÿáÿÿáÿàÿàÿàÿàÿÿàÿàÿàÿàþàþàþàþà 56 | \–*!Êððððððððððððððððÿÿÿÿÿÿÿÿððððððððÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿððððÿðÿðÿðÿðððððÿðÿðÿðÿððððððððððÿðÿðÿðÿÿÿðÿÿðÿÿðÿÿðÿÿðððððððððÿÿÿÿÿÿÿÿÿðÿðÿðÿððÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿðÿÿððÿððÿððÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿððððððððððÿÿÿÿÿÿÿÿÿððÿððÿððÿððÿÿÿÿððððððððÿÿðÿÿðÿÿðÿÿððÿðÿðÿðÿÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿÿÿ 57 | \–*!Êðððððððððððððððððÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿÿðÿðÿðÿðÿÿÿÿÿÿÿÿðððððÿðÿðÿðÿÿðÿðÿðÿðÿðððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿððÿððÿððÿððÿÿðÿÿðÿÿðÿÿðððððððððÿÿÿÿÿÿÿÿðÿðÿðÿðÿÿÿðÿÿðÿÿðÿÿðÿððÿððÿððÿððÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿððððððððÿÿÿÿððððÿÿÿÿÿðÿÿðÿÿðÿÿðÿðÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿðÿÿÿÿðÿðÿðÿðÿ 58 | \–*!Êððxððxððxððxððððððððxxxxÿÿÿÿÿÿÿÿ‡‡‡‡ÿ€ÿ€ÿ€ÿ€ÿøÿøÿøÿøÿ‡ÿ‡ÿ‡ÿ‡ðxðxðxðxÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿðÿðÿðÿðøøøøøøøøøðððððÿ€ðÿ€ðÿ€ðÿ€ÿÿÿÿÿøÿøÿøÿøÿðÿðÿðÿðøøøø‡‡‡‡ÿðÿðÿðÿðððððððððððððÿðÿðÿðÿðøøøøðððððððððððððððxðxðxðxððððÿÿÿÿÿÿÿÿÿøÿøÿøÿøðÿ‡ðÿ‡ðÿ‡ðÿ‡ÿÿÿÿððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿxÿxÿx‡‡‡‡ 59 | \–*!Êxxxxøÿøÿøÿøÿ€x€x€x€x€x€x€x€x€x€x€x€x€€€€‡‡‡‡‡‡‡‡‡‡‡‡xxxxxxxxxxxx‡‡‡‡‡‡‡‡ÿøÿøÿøÿøÿøÿøÿøÿøøxxøxxøxxøxxxxxxxxxxxxxxÿ€xÿ€xÿ€xÿ€x‡€‡€‡€‡€‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€€€€‡øx‡øx‡øx‡øxxxxxxxxxÿøÿøÿøÿøÿ€ÿ€ÿ€ÿ€ÿÿ‡ÿÿ‡ÿÿ‡ÿÿ‡€€€€ÿÿÿÿÿÿÿÿ€€€€€‡€‡€‡€‡€€€€€€€€‡øx‡øx‡øx‡øx€x€x€x€xøxøxøxøxxxxxÿøÿøÿøÿøÿøøÿøÿøÿøÿxxxx‡ÿø‡ÿø‡ÿø‡ÿø‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€x€x€x€x€€€€€€€€ÿ‡ÿÿ‡ÿÿ‡ÿÿ‡ÿøøøø‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿÿ‡ÿÿ‡ÿÿ‡ÿÿÿøÿøÿøÿø€ÿ€ÿ€ÿ€ÿÿ€ÿ€ÿ€ÿ€xxxxxxxxÿøÿøÿøÿø‡‡ø‡‡ø‡‡ø‡‡ø 60 | \–*!ʇÿÿ‡ÿÿ‡ÿÿ‡ÿÿ‡€‡€‡€‡€‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ€€€€‡ÿÿ‡ÿÿ‡ÿÿ‡ÿÿÿ‡øÿ‡øÿ‡øÿ‡øøxøxøxøx‡€‡€‡€‡€xxxxxxxxÿ€ÿ€ÿ€ÿ€xxxxxxxxøxøxøxøxÿ‡€ÿ‡€ÿ‡€ÿ‡€€ø€ø€ø€ø€øÿ€xÿ€xÿ€xÿ€xxxxxxxxx€x€x€x€x€€€€xÿxÿxÿxÿÿÿøÿÿøÿÿøÿÿø€ø€ø€ø€ø‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€ø€ø€ø€øÿÿøÿÿøÿÿøÿÿø€€€€xxxx€€€€ÿ‡ÿÿ‡ÿÿ‡ÿÿ‡ÿ‡€‡€‡€‡€‡€ÿ‡€ÿ‡€ÿ‡€ÿ‡€‡ÿÿ‡ÿÿ‡ÿÿ‡ÿÿ€€€€øÿøÿøÿøÿøøøøÿøÿøÿøÿø€‡€‡€‡€‡ÿÿøÿÿøÿÿøÿÿø€ÿ€ÿ€ÿ€ÿ‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€€€€€€€€ÿÿ‡ÿÿ‡ÿÿ‡ÿÿ‡‡€‡€‡€‡€øøøø€€€€ÿÿÿÿÿÿÿÿ 61 | \–*!Êÿ€ÿ€ÿ€ÿ€€€€€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€€€€€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€€€€€€€€€€€€€xxxx€€€€€€€€€xxxx€€€€øøøøøøøø‡€‡€‡€‡€xxxx€€€€xxxx€€€€øøøø€€€€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€€€€€€xxxxøøøøÿ€ÿ€ÿ€ÿ€‡€‡€‡€‡€€€€€€€€€€€€€€€€€€€€€ÿ€ÿ€ÿ€ÿ€€€€€‡€‡€‡€‡€€€€€xxxxxxxxÿ€ÿ€ÿ€ÿ€ 62 | 2t 63 | !aCódigo de Seguridad: 123 64 | !aRes. Nro. 123 65 | !aPuede verificar comprobante en: 66 | !awww.dgi.gub.uy 67 | !aIVA al dia 68 | 69 | !(aDGI 70 | !CAE Inicio Fin 71 | !90110000010 A1 A9999999 72 | 73 | !!0tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³! Fecha de vencimiento: 10/12/2013 !0³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙt 74 | p07y 75 | 76 | 77 | 78 | 79 | 80 | 81 | V1 -------------------------------------------------------------------------------- /app/src/main/assets/bill_orig.txt: -------------------------------------------------------------------------------- 1 | @@3\*!ñ???ÿÿÿÿ? 2 | \*!ñ?ÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿ?ÿÿ?ÿÿÿþÿüÿÿðÿÿðÿÿàÿÿÀÿÿÀÿÿÀÿÿ€ÿÿ€ÿÿÿÿÿþÿþÿþÿøÿøÿøÿðÿðÿàÿàÿàÿàÿÀÿÀÿÀÿÀÿÀÿ€ÿ€€ 3 | \*!ñ????~þþþþþþþþþþÿÿ?????ÿÿ?ÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿøÿÿÀÿÿÀÿÿÿüÿøÿàÿ€ÿþþüðàÀ€?ÿÿÿÿÿÿ?ÿ?ÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿüÿüÿüÿøÿø?ÿø?ÿà?ÿà?ÿà?ÿà?ÿàÿàÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿà?ÿà?ÿà?ÿà?ÿà?ÿø?ÿøÿøÿüÿüÿüÿüÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿ?ÿÿÿÿÿÿÿÿ? 4 | \*!ñÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÃÿþøðÀÀ€€€Àðøøüÿÿ€ÿðÿþÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿþÿþÿüÿøÿøÿøÿðÿð?ÿà?ÿàÿ€ÿ€ÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿ€ÿÿàÿÿàÿÿðÿÿøÿÿüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿ?ÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿ?ÿ?ÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿðÿÿðÿÿ€ÿþÿüÿøÿÀÿ€ÿÿþüüøðÀÀÀ€€€€ÀÀðøüþþÿÿÿÀÿðÿøÿüÿÿÿÿÿÿ€ÿÿðÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 5 | \*!ñàðøüüþþþþþþþþþüüøð€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€àðþÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàüàðþþÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 6 | \*!ñ|ÿÿ€ÿ€ÿÀÿÀÿÀÿÀÿÀÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿÿÿÿÿÿÿÿÿ€ÿ€ï€ïÀÏÀÏÀÇàÿÇðÿ‡øÿƒüþÿþÿüÿüÿøÿøðà?à?ÀÀ€ÀüÿÀÿðÿüÿÿ€ÿÿ€ÿÿàÿÿðÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿ????ÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?80p|ÀÀðüoÿgÿÀcÿàaÿðaÿð ø ?ü ÿÿÿÿÿÿÿÿ??ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿðÿÿðÿÿ€ÿðø 7 | \*!ñ€ààøÿ€ÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿ€ÿÀÿÀÿàÿð?ðøþÿÿÿÿ€ÿ€ÿÀÿÀÿàÿàÿàÿàÿðÿðÿðÿðÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿðÿðÿðÿðÿðÿðÿàÿàÿàÿÀÿÀÿÀÿ€ÿ€ÿÿþþþøðààÀ€Àðþþÿ€ÿÀÿðÿøÿÿÿÿ€ÿÿÀÿÿÀÿÿàÿÿðÿÿüÿÿþÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿ€?À?àààðøøþþÿÿÿÿ€ÿ€ÿ€ÿÀÿÀÿÀÿÀÿàÿàÿàààððð?ð?ð?ð?ð?ð?ð?ðððààààààÀÀ?À??€??€?ÿ?ÿ?ÿ>ÿxÿxÿpÿ`ÿ`ÿÀ?ÿ€ÿÿÿÿÿÿÿÿÿ?ÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿüÿÿðÿÿðÿÿàÿÿÀÿÿ€ÿþÿøÿðÿÀÿÀÿþðÀ 8 | \*!ñüÿÿÿÿÿÿÿÿ?ÿÿ?ÿÿ?ÿÿ?ÿÿ?ÿÿ?ÿÿ?ÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿüÿÿøÿÿÀÿÿÿÿÿøÿ€€Àààðüüþþÿÿÿ€ÿ€ÿÀÿÀÿÀÿàÿàÿøÿøÿøÿüÿüÿüÿüÿþÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿüÿüÿüÿøÿøÿøÿàÿàÿàÿÀÿÀÿ€ÿ€ÿÿÿþüüðàÀÀÀ€ 9 | \*!ñ€Àøüþþÿÿ€ÿ€ÿÀÿðÿðÿøÿøÿøÿøÿüÿüüþþþþÿÿÿ?€?€?€?€?€?€?€?€?€?€?€ÿÿþþþþþü?üÿüÿøÿøÿøÿðÿðÿÀÿÀÿ€ÿ€ÿ€ÿþüüøðÀÀ€ 10 | \*!ñ 11 | 2t 12 | !aTiendas 360 13 | B!a Tiendas 360 TrouvilleB 14 | !aFrancisco Bilbao 3923 Montevideo 15 | !aTeléfono: 2419 64 57 16 | 17 | !e-Factura RUC 210330580019 18 | !A 187 Pago: Crédito 19 | !!0tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³! RUC COMPRADOR !0³³! 210094030014 !0³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙt 20 | !aNombre: Tienda Inglesa 21 | !aDirección: Av. Italia 5820 esq la calle XXX 22 | !aCiudad: MONTEVIDEO 23 | 24 | !Fecha: 10/05/2013 Moneda: USD 25 | !aReferencia: e-Factura1111 26 | 27 | !Nafta 108.000,00 28 | !a1,250 U x 99.999,00 29 | !Producto 2 108.000,00 30 | !a1,250 U x 99.999,00 -Dto. 500,00 31 | !Nafta 108.000,00 32 | !a1,250 U x 99.999,00 33 | !Producto 2 108.000,00 34 | !a1,250 U x 99.999,00 -Dto. 500,00 35 | !Nafta 108.000,00 36 | !a1,250 U x 99.999,00 37 | !Nafta 108.000,00 38 | !a1,250 U x 99.999,00 39 | !Producto 2 108.000,00 40 | !a1,250 U x 99.999,00 -Dto. 500,00 41 | !Nafta 108.000,00 42 | !a1,250 U x 99.999,00 43 | !Producto 2 108.000,00 44 | !a1,250 U x 99.999,00 -Dto. 500,00 45 | !Nafta 108.000,00 46 | !a1,250 U x 99.999,00 47 | !__________________________________________ 48 | !Subtotal grav. 10% 834.902,00 49 | !Subtotal grav. 22% 834.902,00 50 | !Iva 10% 0,00 51 | !Iva 22% 625.872,95 52 | !Total 3.470.750,00 53 | !TOTAL A PAGAR 840,00 54 | 55 | 56 | t!ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ADENDA ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜt 57 | 58 | !aEsta es la adenda 59 | 60 | t!ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ FIN ADENDA ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜt 61 | 62 | 63 | @3\–*!Êÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿààààààààþþþþáÿáÿáÿáÿààààþþþþþþþþáááááþþþþÿáÿáÿáÿáààààÿÿÿÿáþáþáþáþþþþþþþþþààààþþþþþþþþáááááááááþþþþÿàÿàÿàÿàáÿáÿáÿáÿþþþþààààÿàÿàÿàÿàþþþþÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿ 64 | \–*!Êþáþáþáþáþþþþááááààààààààààààþþþþþþþþÿáÿáÿáÿáÿÿÿÿáÿàáÿàáÿàáÿàþàþàþàþàáàáàáàáàááááààààÿáþÿáþÿáþÿáþÿáþÿþÿþÿþÿþáþáþáþáþÿþÿþÿþÿþþþþþÿþÿþÿþÿþþþþþþÿþÿþÿþÿáÿþáÿþáÿþáÿþþàþàþàþàþàááàááàááàááàÿÿÿÿààààÿàÿàÿàÿàààààààààþáþáþáþáþþþþááááááááááááþþþþþþþþááááÿÿÿÿÿÿÿÿþþþþ 65 | \–*!Êÿàÿàÿàÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààààÿáÿÿáÿÿáÿÿáÿààààáàáàáàáàÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿþÿþþàþàþàþàààààáÿáÿáÿáÿáÿààààáàáàáàáàáþáþáþáþþþþþÿÿÿÿÿÿàÿÿàÿÿàÿÿàÿáÿÿáÿÿáÿÿáÿÿàÿàÿàÿàþàþàþàþàÿáÿÿáÿÿáÿÿáÿÿàÿàÿàÿàÿþÿþÿþÿþáÿáÿáÿáÿÿÿÿÿÿÿÿÿÿÿÿÿàààààààààþàþàþàþàÿàÿàÿàÿàÿÿÿÿááÿááÿááÿááÿààààààààáàáàáàáàÿàÿàÿàÿàÿáàÿáàÿáàÿáàþþþþÿáÿÿáÿÿáÿÿáÿàÿàÿàÿàÿÿàÿàÿàÿàþàþàþàþà 66 | \–*!Êððððððððððððððððÿÿÿÿÿÿÿÿððððððððÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿððððÿðÿðÿðÿðððððÿðÿðÿðÿððððððððððÿðÿðÿðÿÿÿðÿÿðÿÿðÿÿðÿÿðððððððððÿÿÿÿÿÿÿÿÿðÿðÿðÿððÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿðÿÿððÿððÿððÿððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿððððððððððÿÿÿÿÿÿÿÿÿððÿððÿððÿððÿÿÿÿððððððððÿÿðÿÿðÿÿðÿÿððÿðÿðÿðÿÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿÿÿ 67 | \–*!Êðððððððððððððððððÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿÿðÿðÿðÿðÿÿÿÿÿÿÿÿðððððÿðÿðÿðÿÿðÿðÿðÿðÿðððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿððÿððÿððÿððÿÿðÿÿðÿÿðÿÿðððððððððÿÿÿÿÿÿÿÿðÿðÿðÿðÿÿÿðÿÿðÿÿðÿÿðÿððÿððÿððÿððÿÿÿÿðÿðÿðÿðÿÿÿÿÿÿððððððððÿÿÿÿððððÿÿÿÿÿðÿÿðÿÿðÿÿðÿðÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿðÿÿðÿÿðÿÿÿÿðÿðÿðÿðÿ 68 | \–*!Êððxððxððxððxððððððððxxxxÿÿÿÿÿÿÿÿ‡‡‡‡ÿ€ÿ€ÿ€ÿ€ÿøÿøÿøÿøÿ‡ÿ‡ÿ‡ÿ‡ðxðxðxðxÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿðÿðÿðÿðøøøøøøøøøðððððÿ€ðÿ€ðÿ€ðÿ€ÿÿÿÿÿøÿøÿøÿøÿðÿðÿðÿðøøøø‡‡‡‡ÿðÿðÿðÿðððððððððððððÿðÿðÿðÿðøøøøðððððððððððððððxðxðxðxððððÿÿÿÿÿÿÿÿÿøÿøÿøÿøðÿ‡ðÿ‡ðÿ‡ðÿ‡ÿÿÿÿððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿxÿxÿx‡‡‡‡ 69 | \–*!Êxxxxøÿøÿøÿøÿ€x€x€x€x€x€x€x€x€x€x€x€x€€€€‡‡‡‡‡‡‡‡‡‡‡‡xxxxxxxxxxxx‡‡‡‡‡‡‡‡ÿøÿøÿøÿøÿøÿøÿøÿøøxxøxxøxxøxxxxxxxxxxxxxxÿ€xÿ€xÿ€xÿ€x‡€‡€‡€‡€‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€€€€‡øx‡øx‡øx‡øxxxxxxxxxÿøÿøÿøÿøÿ€ÿ€ÿ€ÿ€ÿÿ‡ÿÿ‡ÿÿ‡ÿÿ‡€€€€ÿÿÿÿÿÿÿÿ€€€€€‡€‡€‡€‡€€€€€€€€‡øx‡øx‡øx‡øx€x€x€x€xøxøxøxøxxxxxÿøÿøÿøÿøÿøøÿøÿøÿøÿxxxx‡ÿø‡ÿø‡ÿø‡ÿø‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€x€x€x€x€€€€€€€€ÿ‡ÿÿ‡ÿÿ‡ÿÿ‡ÿøøøø‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿÿ‡ÿÿ‡ÿÿ‡ÿÿÿøÿøÿøÿø€ÿ€ÿ€ÿ€ÿÿ€ÿ€ÿ€ÿ€xxxxxxxxÿøÿøÿøÿø‡‡ø‡‡ø‡‡ø‡‡ø 70 | \–*!ʇÿÿ‡ÿÿ‡ÿÿ‡ÿÿ‡€‡€‡€‡€‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ‡ÿ€€€€‡ÿÿ‡ÿÿ‡ÿÿ‡ÿÿÿ‡øÿ‡øÿ‡øÿ‡øøxøxøxøx‡€‡€‡€‡€xxxxxxxxÿ€ÿ€ÿ€ÿ€xxxxxxxxøxøxøxøxÿ‡€ÿ‡€ÿ‡€ÿ‡€€ø€ø€ø€ø€øÿ€xÿ€xÿ€xÿ€xxxxxxxxx€x€x€x€x€€€€xÿxÿxÿxÿÿÿøÿÿøÿÿøÿÿø€ø€ø€ø€ø‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€ø€ø€ø€øÿÿøÿÿøÿÿøÿÿø€€€€xxxx€€€€ÿ‡ÿÿ‡ÿÿ‡ÿÿ‡ÿ‡€‡€‡€‡€‡€ÿ‡€ÿ‡€ÿ‡€ÿ‡€‡ÿÿ‡ÿÿ‡ÿÿ‡ÿÿ€€€€øÿøÿøÿøÿøøøøÿøÿøÿøÿø€‡€‡€‡€‡ÿÿøÿÿøÿÿøÿÿø€ÿ€ÿ€ÿ€ÿ‡‡ÿ‡‡ÿ‡‡ÿ‡‡ÿ€€€€€€€€ÿÿ‡ÿÿ‡ÿÿ‡ÿÿ‡‡€‡€‡€‡€øøøø€€€€ÿÿÿÿÿÿÿÿ 71 | \–*!Êÿ€ÿ€ÿ€ÿ€€€€€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€€€€€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€€€€€€€€€€€€€xxxx€€€€€€€€€xxxx€€€€øøøøøøøø‡€‡€‡€‡€xxxx€€€€xxxx€€€€øøøø€€€€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€‡€€€€€€xxxxøøøøÿ€ÿ€ÿ€ÿ€‡€‡€‡€‡€€€€€€€€€€€€€€€€€€€€€ÿ€ÿ€ÿ€ÿ€€€€€‡€‡€‡€‡€€€€€xxxxxxxxÿ€ÿ€ÿ€ÿ€ 72 | 2t 73 | !aCódigo de Seguridad: 123 74 | !aRes. Nro. 123 75 | !aPuede verificar comprobante en: 76 | !awww.dgi.gub.uy 77 | !aIVA al dia 78 | 79 | !(aDGI 80 | !CAE Inicio Fin 81 | !90110000010 A1 A9999999 82 | 83 | !!0tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³! Fecha de vencimiento: 10/12/2013 !0³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙt 84 | p07y 85 | 86 | 87 | 88 | 89 | 90 | 91 | V1 -------------------------------------------------------------------------------- /app/src/main/assets/sample_pdf.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/looped-labs/ESCPOSPrintServiceDemo/ceeb056c2c566e3061f1dc708e97ee5e1f21d8c6/app/src/main/assets/sample_pdf.pdf -------------------------------------------------------------------------------- /app/src/main/assets/sample_receipt.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Sample Receipt 6 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
SUPER BAKERY
#341, M.G. Road,
Bangalore - 560 001
Karnataka - India
No.ItemRateQtyTotal
1Any Language₹ 112.001₹ 112.00
2पूरी भाजी₹ 42.004₹ 168.00
3ಇಡ್ಲಿ ವಡೈ₹ 19.002₹ 38.00
4தோசை₹ 35.003₹ 105.00
5పులావ్₹ 60.001₹ 60.00
Total₹ 231.90
Thank you ! Visit Again
34 | 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/loopedlabs/escposprintservicedemo/DemoMain.java: -------------------------------------------------------------------------------- 1 | /** 2 | * The MIT License (MIT) 3 | *

4 | * Copyright (c) 2015 Looped Labs Pvt. Ltd. 5 | *

6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | *

13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | *

16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | package com.loopedlabs.escposprintservicedemo; 25 | 26 | import android.Manifest; 27 | import android.app.Activity; 28 | import android.content.DialogInterface; 29 | import android.content.Intent; 30 | import android.content.pm.PackageManager; 31 | import android.content.pm.ResolveInfo; 32 | import android.net.Uri; 33 | import android.os.Build; 34 | import android.os.Bundle; 35 | import android.view.Menu; 36 | import android.view.MenuItem; 37 | import android.view.View; 38 | import android.view.inputmethod.InputMethodManager; 39 | import android.webkit.URLUtil; 40 | import android.widget.AdapterView; 41 | import android.widget.EditText; 42 | import android.widget.Spinner; 43 | import android.widget.TextView; 44 | 45 | import com.loopedlabs.selector.FileOperation; 46 | import com.loopedlabs.selector.FileSelector; 47 | import com.loopedlabs.selector.OnHandleFileListener; 48 | import com.loopedlabs.util.debug.DebugLog; 49 | 50 | import java.io.File; 51 | import java.io.IOException; 52 | import java.io.RandomAccessFile; 53 | import java.util.List; 54 | 55 | import androidx.appcompat.app.AlertDialog; 56 | import androidx.appcompat.app.AppCompatActivity; 57 | import androidx.core.app.ActivityCompat; 58 | 59 | 60 | public class DemoMain extends AppCompatActivity { 61 | private static final String ESC_POS_PRINT_INTENT_ACTION = "org.escpos.intent.action.PRINT"; 62 | private static final String ESC_POS_BLUETOOTH_PRINT_SERVICE = "com.loopedlabs.escposprintservice"; 63 | private static final String ESC_POS_WIFI_PRINT_SERVICE = "com.loopedlabs.netprintservice"; 64 | private static final String ESC_POS_USB_PRINT_SERVICE = "com.loopedlabs.usbprintservice"; 65 | private int iSelPrintService = 0; 66 | private int iSelPrintUrlType = 0; 67 | private int iSelPrintFileType = 0; 68 | private String sAppPackage = "com.loopedlabs.escposprintservice"; 69 | private Spinner spPrintService; 70 | private String sPrintUrl = ""; 71 | private String sPrintFile = ""; 72 | private String sDataType = ""; 73 | private String sFileType = ""; 74 | private TextView tvPrintFile; 75 | 76 | @Override 77 | protected void onCreate(Bundle savedInstanceState) { 78 | super.onCreate(savedInstanceState); 79 | setContentView(R.layout.demo_main); 80 | 81 | DebugLog.setDebugMode(BuildConfig.DEBUG); 82 | DebugLog.logTrace(); 83 | 84 | initControls(); 85 | 86 | isStoragePermissionGranted(); 87 | } 88 | 89 | private void initControls() { 90 | DebugLog.logTrace(); 91 | iSelPrintService = 0; 92 | sAppPackage = ESC_POS_BLUETOOTH_PRINT_SERVICE; 93 | spPrintService = findViewById(R.id.spPrintService); 94 | spPrintService.setTag("a"); 95 | spPrintService.setSelection(iSelPrintService, false); 96 | spPrintService.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 97 | @Override 98 | public void onItemSelected(AdapterView parent, View view, int position, long id) { 99 | if (!spPrintService.getTag().equals("a")) { 100 | iSelPrintService = position; 101 | switch (iSelPrintService) { 102 | case 0: 103 | sAppPackage = ESC_POS_BLUETOOTH_PRINT_SERVICE; 104 | break; 105 | case 1: 106 | sAppPackage = ESC_POS_WIFI_PRINT_SERVICE; 107 | break; 108 | case 2: 109 | sAppPackage = ESC_POS_USB_PRINT_SERVICE; 110 | break; 111 | } 112 | alert("Selected Print Service : " + spPrintService.getItemAtPosition(position).toString()); 113 | } 114 | else { 115 | spPrintService.setTag(""); 116 | } 117 | } 118 | 119 | @Override 120 | public void onNothingSelected(AdapterView parent) { 121 | } 122 | }); 123 | 124 | findViewById(R.id.btnPrintConfig).setOnClickListener(new View.OnClickListener() { 125 | @Override 126 | public void onClick(View v) { 127 | PackageManager manager = getPackageManager(); 128 | try { 129 | Intent i = manager.getLaunchIntentForPackage(sAppPackage); 130 | if (i != null) { 131 | i.addCategory(Intent.CATEGORY_LAUNCHER); 132 | startActivity(i); 133 | } 134 | else { 135 | requestInstallPrintService(); 136 | } 137 | } 138 | catch (Exception ignored) { 139 | requestInstallPrintService(); 140 | } 141 | } 142 | }); 143 | 144 | final EditText etPrintUrl = findViewById(R.id.etPrintUrl); 145 | 146 | final Spinner spPrintURLType = findViewById(R.id.spPrintURLType); 147 | iSelPrintUrlType = 0; 148 | sPrintUrl = "https://loopedlabs.com/web-print/loopedlabs.png"; 149 | sDataType = "PNG_URL"; 150 | spPrintURLType.setSelection(iSelPrintUrlType, false); 151 | spPrintURLType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 152 | @Override 153 | public void onItemSelected(AdapterView parent, View view, int position, long id) { 154 | iSelPrintUrlType = position; 155 | sPrintUrl = etPrintUrl.getText().toString(); 156 | if (sPrintUrl.isEmpty() || sPrintUrl.contains("loopedlabs")) { 157 | switch (iSelPrintUrlType) { 158 | case 0: 159 | sPrintUrl = "https://loopedlabs.com/web-print/loopedlabs.png"; 160 | sDataType = "PNG_URL"; 161 | break; 162 | case 1: 163 | sPrintUrl = "https://loopedlabs.com/web-print/loopedlabs.jpg"; 164 | sDataType = "JPG_URL"; 165 | break; 166 | case 2: 167 | sPrintUrl = "https://loopedlabs.com/web-print/sample.pdf"; 168 | sDataType = "PDF_URL"; 169 | break; 170 | case 3: 171 | sPrintUrl = "https://loopedlabs.com/web-print/bill.html"; 172 | sDataType = "HTML_URL"; 173 | break; 174 | } 175 | etPrintUrl.setText(sPrintUrl); 176 | } 177 | } 178 | 179 | @Override 180 | public void onNothingSelected(AdapterView parent) { 181 | } 182 | }); 183 | findViewById(R.id.btnPrintUrl).setOnClickListener(new View.OnClickListener() { 184 | @Override 185 | public void onClick(View v) { 186 | sPrintUrl = etPrintUrl.getText().toString(); 187 | if (!URLUtil.isNetworkUrl(sPrintUrl)) { 188 | etPrintUrl.requestFocus(); 189 | alert("Please enter a valid absolute URL"); 190 | } 191 | else { 192 | hideKeyboard(DemoMain.this); 193 | Intent printIntent = new Intent(ESC_POS_PRINT_INTENT_ACTION); 194 | printIntent.setPackage(sAppPackage); 195 | printIntent.putExtra("DATA_TYPE", sDataType); 196 | printIntent.putExtra(Intent.EXTRA_TEXT, sPrintUrl); 197 | DebugLog.logTrace("Print Intent"); 198 | DebugLog.logTrace("Package : " + sAppPackage); 199 | DebugLog.logTrace("Data Type : " + sDataType); 200 | DebugLog.logTrace("Print Url : " + sPrintUrl); 201 | startActivity(printIntent); 202 | } 203 | } 204 | }); 205 | 206 | tvPrintFile = findViewById(R.id.tvPrintFile); 207 | final Spinner spPrintFileType = findViewById(R.id.spPrintFileType); 208 | iSelPrintFileType = 0; 209 | sPrintFile = ""; 210 | sFileType = "IMAGE_PNG"; 211 | spPrintFileType.setSelection(iSelPrintFileType, false); 212 | spPrintFileType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 213 | @Override 214 | public void onItemSelected(AdapterView parent, View view, int position, long id) { 215 | iSelPrintFileType = position; 216 | sPrintFile = ""; 217 | switch (iSelPrintFileType) { 218 | case 0: 219 | sFileType = "IMAGE_PNG"; 220 | break; 221 | case 1: 222 | sFileType = "IMAGE_JPG"; 223 | break; 224 | case 2: 225 | sFileType = "PDF"; 226 | break; 227 | case 3: 228 | sFileType = "HTML"; 229 | break; 230 | } 231 | tvPrintFile.setText(sPrintFile); 232 | } 233 | 234 | @Override 235 | public void onNothingSelected(AdapterView parent) { 236 | } 237 | }); 238 | 239 | findViewById(R.id.btnBrowse).setOnClickListener(new View.OnClickListener() { 240 | @Override 241 | public void onClick(View view) { 242 | fileSelector(); 243 | } 244 | }); 245 | 246 | findViewById(R.id.tvLoopedLabs).setOnClickListener(new View.OnClickListener() { 247 | @Override 248 | public void onClick(View v) { 249 | String url = "https://loopedlabs.com"; 250 | Intent i = new Intent(Intent.ACTION_VIEW); 251 | i.setData(Uri.parse(url)); 252 | startActivity(i); 253 | } 254 | }); 255 | } 256 | 257 | private void isStoragePermissionGranted() { 258 | if (Build.VERSION.SDK_INT >= 23) { 259 | if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) 260 | == PackageManager.PERMISSION_GRANTED) { 261 | DebugLog.logTrace("Permission is granted"); 262 | } 263 | else { 264 | ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 3); 265 | } 266 | } 267 | else { //permission is automatically granted on sdk<23 upon installation 268 | DebugLog.logTrace("Permission is granted by default"); 269 | } 270 | } 271 | 272 | private FileSelector mFileSel; 273 | 274 | private void fileSelector() { 275 | String[] fileHtmlFilter = {".html", ".htm"}; 276 | String[] fileJpgFilter = {".jpg", ".jpeg"}; 277 | String[] filePngFilter = {".png"}; 278 | String[] filePdfFilter = {".pdf"}; 279 | switch (sFileType) { 280 | case "IMAGE_PNG": 281 | mFileSel = new FileSelector(DemoMain.this, FileOperation.LOAD, mFileListener, filePngFilter); 282 | break; 283 | case "IMAGE_JPG": 284 | mFileSel = new FileSelector(DemoMain.this, FileOperation.LOAD, mFileListener, fileJpgFilter); 285 | break; 286 | case "PDF": 287 | mFileSel = new FileSelector(DemoMain.this, FileOperation.LOAD, mFileListener, filePdfFilter); 288 | break; 289 | case "HTML": 290 | mFileSel = new FileSelector(DemoMain.this, FileOperation.LOAD, mFileListener, fileHtmlFilter); 291 | break; 292 | } 293 | mFileSel.show(); 294 | } 295 | 296 | private OnHandleFileListener mFileListener = new OnHandleFileListener() { 297 | @Override 298 | public void handleFile(final String selFileName) { 299 | DebugLog.logTrace("filePath " + selFileName); 300 | mFileSel.dismiss(); 301 | tvPrintFile.setText(selFileName); 302 | if (isEscPosPrintServiceAvailable()) { 303 | File f = new File(selFileName); 304 | if (f.canRead()) { 305 | byte[] bytes = null; 306 | try { 307 | bytes = readFileAsByteArray(f); 308 | } 309 | catch (IOException e) { 310 | e.printStackTrace(); 311 | alert("Unable to read file contents"); 312 | } 313 | 314 | Intent i = new Intent(); 315 | i.setAction(ESC_POS_PRINT_INTENT_ACTION); 316 | i.setPackage(sAppPackage); 317 | i.putExtra("PRINT_DATA", bytes); 318 | i.putExtra("DATA_TYPE", sFileType); 319 | DebugLog.logTrace("Print Intent"); 320 | DebugLog.logTrace("Package : " + sAppPackage); 321 | DebugLog.logTrace("Data Type : " + sFileType); 322 | DebugLog.logTrace("File Name : " + selFileName); 323 | startActivity(i); 324 | } 325 | else { 326 | alert("Unable to read file"); 327 | } 328 | } 329 | else { 330 | requestInstallPrintService(); 331 | } 332 | } 333 | }; 334 | 335 | @Override 336 | public boolean onCreateOptionsMenu(Menu menu) { 337 | getMenuInflater().inflate(R.menu.demo_main, menu); 338 | return true; 339 | } 340 | 341 | @Override 342 | public boolean onOptionsItemSelected(MenuItem item) { 343 | int id = item.getItemId(); 344 | 345 | if (id == R.id.action_about) { 346 | alert("App Version : " + BuildConfig.VERSION_CODE + "\nDeveloped By : Looped Labs Pvt. Ltd.\nhttps://loopedlabs.com"); 347 | return true; 348 | } 349 | return super.onOptionsItemSelected(item); 350 | } 351 | 352 | private boolean isEscPosPrintServiceAvailable() { 353 | DebugLog.logTrace(); 354 | final PackageManager packageManager = getPackageManager(); 355 | final Intent intent = new Intent(ESC_POS_PRINT_INTENT_ACTION); 356 | intent.setPackage(sAppPackage); 357 | List resolveInfo = 358 | packageManager.queryIntentActivities(intent, 359 | PackageManager.MATCH_DEFAULT_ONLY); 360 | return resolveInfo.size() > 0; 361 | } 362 | 363 | private static void hideKeyboard(Activity activity) { 364 | DebugLog.logTrace(); 365 | InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); 366 | if (imm != null) { 367 | View view = activity.getCurrentFocus(); 368 | if (view == null) { 369 | view = new View(activity); 370 | } 371 | imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 372 | } 373 | } 374 | 375 | private void requestInstallPrintService() { 376 | DebugLog.logTrace(); 377 | AlertDialog.Builder aboutBuilder = new AlertDialog.Builder(this); 378 | aboutBuilder.setTitle(R.string.app_name); 379 | aboutBuilder 380 | .setMessage(spPrintService.getItemAtPosition(iSelPrintService).toString() + " not installed, do you want to install the print service from Google Play Store ?") 381 | .setCancelable(true) 382 | .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 383 | public void onClick(DialogInterface dialog, int id) { 384 | dialog.cancel(); 385 | Intent intentPlayStore = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + sAppPackage)); 386 | startActivity(intentPlayStore); 387 | } 388 | }) 389 | .setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() { 390 | public void onClick(DialogInterface dialog, int id) { 391 | dialog.cancel(); 392 | } 393 | }); 394 | AlertDialog aboutDialog = aboutBuilder.create(); 395 | aboutDialog.show(); 396 | } 397 | 398 | private void alert(String sMsg) { 399 | DebugLog.logTrace(); 400 | AlertDialog.Builder aboutBuilder = new AlertDialog.Builder(this); 401 | aboutBuilder.setTitle(R.string.app_name); 402 | aboutBuilder 403 | .setMessage(sMsg) 404 | .setCancelable(true) 405 | .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 406 | public void onClick(DialogInterface dialog, int id) { 407 | dialog.cancel(); 408 | } 409 | }); 410 | AlertDialog aboutDialog = aboutBuilder.create(); 411 | aboutDialog.show(); 412 | } 413 | 414 | private static byte[] readFileAsByteArray(File f) throws IOException { 415 | RandomAccessFile raf = new RandomAccessFile(f, "r"); 416 | byte[] bytes = new byte[(int) raf.length()]; 417 | raf.readFully(bytes); 418 | raf.close(); 419 | return bytes; 420 | } 421 | 422 | 423 | } 424 | -------------------------------------------------------------------------------- /app/src/main/looped_labs-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/looped-labs/ESCPOSPrintServiceDemo/ceeb056c2c566e3061f1dc708e97ee5e1f21d8c6/app/src/main/looped_labs-web.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/big_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/looped-labs/ESCPOSPrintServiceDemo/ceeb056c2c566e3061f1dc708e97ee5e1f21d8c6/app/src/main/res/drawable-nodpi/big_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/ll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/looped-labs/ESCPOSPrintServiceDemo/ceeb056c2c566e3061f1dc708e97ee5e1f21d8c6/app/src/main/res/drawable-nodpi/ll.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/demologo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/looped-labs/ESCPOSPrintServiceDemo/ceeb056c2c566e3061f1dc708e97ee5e1f21d8c6/app/src/main/res/drawable/demologo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/no-dpi/store_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/looped-labs/ESCPOSPrintServiceDemo/ceeb056c2c566e3061f1dc708e97ee5e1f21d8c6/app/src/main/res/drawable/no-dpi/store_logo.png -------------------------------------------------------------------------------- /app/src/main/res/layout/demo_main.xml: -------------------------------------------------------------------------------- 1 | 24 | 33 | 34 | 44 | 45 | 53 | 54 | 60 | 61 |