{"id":22831494,"url":"https://github.com/defuj/printer-js","last_synced_at":"2026-01-24T21:36:40.061Z","repository":{"id":264359631,"uuid":"877094704","full_name":"defuj/printer-js","owner":"defuj","description":"Printer Bluetooth Plugin Javascript","archived":false,"fork":false,"pushed_at":"2024-10-23T08:31:39.000Z","size":31,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-05T08:58:03.358Z","etag":null,"topics":["bluetooth","html","javascript","printer-thermal"],"latest_commit_sha":null,"homepage":"https://defuj.github.io/printer-js/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/defuj.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-23T04:36:29.000Z","updated_at":"2025-08-14T18:35:18.000Z","dependencies_parsed_at":"2024-11-23T20:51:10.959Z","dependency_job_id":null,"html_url":"https://github.com/defuj/printer-js","commit_stats":null,"previous_names":["defuj/printer-js"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/defuj/printer-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defuj%2Fprinter-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defuj%2Fprinter-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defuj%2Fprinter-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defuj%2Fprinter-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/defuj","download_url":"https://codeload.github.com/defuj/printer-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defuj%2Fprinter-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28737436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T21:19:41.845Z","status":"ssl_error","status_checked_at":"2026-01-24T21:13:38.675Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluetooth","html","javascript","printer-thermal"],"created_at":"2024-12-12T20:26:14.882Z","updated_at":"2026-01-24T21:36:40.043Z","avatar_url":"https://github.com/defuj.png","language":"HTML","readme":"# PrintPlugin\n\n[![npm version](https://badge.fury.io/js/bluetooth-print-js.svg)](https://badge.fury.io/js/bluetooth-print-js)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nPrintPlugin adalah plugin JavaScript untuk mencetak teks menggunakan printer thermal Bluetooth. Plugin ini mendukung dua ukuran kertas: \"58mm\" dan \"80mm\".\n\n## Fitur\n\n1. Mencetak teks dengan berbagai opsi seperti huruf tebal, garis bawah, perataan, dan ukuran teks.\n2. Mencetak teks dengan dua kolom.\n3. Mencetak garis putus-putus.\n4. Mencetak baris baru.\n5. Mendukung dua ukuran kertas: \"58mm\" dan \"80mm\".\n6. Mendukung koneksi ke printer thermal Bluetooth.\n7. Mendukung browser modern seperti Chrome, Firefox, dan Edge.\n8. Mendukung Node.js.\n9. Mendukung penggunaan CDN.\n10. Mendukung penggunaan NPM.\n11. Mendukung penggunaan ES6.\n\n## Instalasi\n\n### Menggunakan NPM\n\n```bash\nnpm install bluetooth-print-js\n```\n\nimport atau require PrintPlugin ke dalam proyek Anda.\n\n```javascript\nimport PrintPlugin from \"bluetooth-print-js\";\n```\n\nor\n\n```javascript\nconst PrintPlugin = require(\"bluetooth-print-js\");\n```\n\n### Menggunakan CDN\n\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/bluetooth-print-js@1.0/index.min.js\"\u003e\u003c/script\u003e\n```\n\n## Penggunaan\n\n### Membuat Instance dari PrintPlugin\n\nAnda dapat membuat instance dari PrintPlugin dengan atau tanpa menentukan ukuran kertas yang diinginkan. Ukuran kertas yang didukung adalah \"58mm\" dan \"80mm\". Jika ukuran kertas tidak ditentukan, ukuran kertas default adalah \"58mm\".\n\n```javascript\n// Create instance with paper size \"80mm\"\nlet printer = new PrintPlugin(\"80mm\");\n```\n\nor\n\n```javascript\n// Create instance with default paper size \"58mm\"\nlet printer = new PrintPlugin();\n```\n\n### Menghubungkan ke Printer dan Mencetak Teks\n\nGunakan metode `connectToPrint` untuk menghubungkan ke printer Bluetooth dan mencetak teks. Anda perlu menyediakan dua fungsi callback: `onReady` dan `onFailed`.\n\n- `onReady`: Dipanggil ketika koneksi ke printer berhasil. Anda dapat menggunakan objek print yang diteruskan ke callback ini untuk mencetak teks.\n- `onFailed`: Dipanggil ketika koneksi ke printer gagal. Anda dapat menggunakan parameter message untuk mendapatkan pesan error.\n\n### Cara Menggunakan PrintPlugin\n\n1. Hubungkan ke printer dan cetak teks.\n\n   ```javascript\n   printer.connectToPrint({\n     onReady: async (print) =\u003e {\n       await print.writeText(\"Hello, World!\");\n     },\n     onFailed: (message) =\u003e {\n       console.log(message);\n     },\n   });\n   ```\n\n2. Contoh penggunaan lengkap (HTML):\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"UTF-8\" /\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /\u003e\n    \u003ctitle\u003eBluetooth Print\u003c/title\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003ch1\u003eBluetooth Print\u003c/h1\u003e\n    \u003cbutton id=\"connect\"\u003eConnect and Print\u003c/button\u003e\n    \u003cp id=\"status\"\u003e\u003c/p\u003e\n\n    \u003cscript src=\"https://cdn.jsdelivr.net/npm/bluetooth-print-js@1.0/index.min.js\"\u003e\u003c/script\u003e\n    \u003cscript\u003e\n      document.getElementById(\"connect\").addEventListener(\"click\", () =\u003e {\n        let printer = new PrintPlugin(\"80mm\");\n        printer.connectToPrint({\n          onReady: async (print) =\u003e {\n            // Print Header\n            await print.writeText(\"SADIGIT\", {\n              align: \"center\",\n              bold: true,\n              size: \"double\",\n            });\n            await print.writeText(\n              \"Jl. Kutamaya No.Ruko A, Kotakulon, Kec. Sumedang Sel., Kabupaten Sumedang, Jawa Barat 45311\",\n              { align: \"center\" }\n            );\n            await print.writeText(\"0852-2299-9699\", { align: \"center\" });\n            await print.writeLineBreak();\n            await print.writeText(\"No.Transaksi: SDGT-ONL-0001\", {\n              align: \"center\",\n            });\n            await print.writeText(\"Kasir: Otongsuke\", { align: \"center\" });\n            await print.writeText(\"2024-10-23 10:20:18\", { align: \"center\" });\n\n            // Print Items\n            await print.writeDashLine();\n            for (let i = 0; i \u003c 5; i++) {\n              await print.writeText(\"Item Sample-\" + i, { align: \"left\" });\n              await print.writeTextWith2Column(\"1 pcs x 10.000\", \"10.000\");\n            }\n            await print.writeDashLine();\n\n            // Print Total\n            await print.writeTextWith2Column(\"Total :\", \"50.000\");\n            await print.writeTextWith2Column(\"Bayar :\", \"100.000\");\n            await print.writeTextWith2Column(\"Kembali :\", \"50.000\");\n            await print.writeTextWith2Column(\"Metode :\", \"Tunai\");\n\n            // Print Footer\n            await print.writeLineBreak();\n            await print.writeText(\n              \"Terimakasih sudah mencoba Follow IG @sadigit.id\",\n              { align: \"center\" }\n            );\n            await print.writeLineBreak(3);\n          },\n          onFailed: (message) =\u003e {\n            console.log(message);\n          },\n        });\n      });\n    \u003c/script\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n### Metode yang Tersedia\n\n- `writeLineBreak({ count = 1 })`: Menulis baris baru.\n- `writeDashLine()`: Menulis garis putus-putus.\n- `writeTextWith2Column(text1, text2, options)`: Menulis teks dengan dua kolom.\n- `writeText(text, options)`: Menulis teks.\n- `connectToPrint({ onReady, onFailed })`: Menghubungkan ke printer dan memanggil callback onReady atau onFailed.\n\n### Opsi untuk Metode `writeText` dan `writeTextWith2Column`\n\n- `bold`: Menentukan apakah teks dicetak dengan huruf tebal. (default: false)\n- `underline`: Menentukan apakah teks dicetak dengan garis bawah. (default: false)\n- `align`: Menentukan perataan teks. Nilai yang didukung: \"left\", \"center\", \"right\". (default: \"left\")\n- `size`: Menentukan ukuran teks. Nilai yang didukung: \"normal\", \"double\". (default: \"normal\")\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefuj%2Fprinter-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefuj%2Fprinter-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefuj%2Fprinter-js/lists"}