Skip to content

Releases: huy97/printagent

v2.1.0 - in đúng khổ tuỳ chỉnh

Choose a tag to compare

@huy97 huy97 released this 16 Sep 11:54

Sửa lỗi in sai khổ

  • Chiều cao tự động đo sai: bản in giấy cuộn (bill, hoá đơn POS) bị cắt sang trang thứ hai gần như trắng. Phép đo nay theo nội dung thật, cộng đúng lề mặc định trong cấu hình và phần padding dưới của body. Cả 4 template giấy cuộn đi kèm đều về lại 1 trang.
  • Bỏ trống chiều cao giờ đúng nghĩa là tự co theo nội dung, khớp với những gì giao diện hiển thị. Trước đây nó âm thầm thành 297mm, khiến bản in trên máy in tem bị thu nhỏ còn một nửa.
  • Khung trang tự chèn: template có khổ tuỳ chỉnh được chèn sẵn doctype và CSS khung (bỏ lề mặc định của trình duyệt, box-sizing: border-box) trước style của template. Gửi page.frame = false để tắt.

Bổ sung

  • Template tem vận đơn 100x150mm cho máy in tem nhiệt, có mã vạch Code 128 và QR, bản tiếng Việt và tiếng Anh.
  • Helper {{barcode}} sinh mã vạch Code 128 dạng SVG, không cần thư viện ngoài.
  • Màn xem trước báo khổ thật của bản render và số trang, cảnh báo ngay khi nội dung tràn khỏi khổ đã đặt. API trả kèm header X-Render-Width-Mm, X-Render-Height-Mm, X-Render-Pages.

Cập nhật

npx @hyydev/printagent@latest

v1.2.0 - cài được trên máy trắng

Choose a tag to compare

@huy97 huy97 released this 06 Sep 05:36

Cài được trên máy trắng: không cần Node, git hay quyền admin.

Trình cài đặt một dòng

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/huy97/printagent/main/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/huy97/printagent/main/install.ps1 | iex

Script tải Node LTS bản portable (đối chiếu SHA-256 của nodejs.org) vào ~/.printagent/runtime, cài agent từ npm vào ~/.printagent/app, tạo lệnh printagent rồi mở màn hình cài đặt. Máy đã có Node >= 20 thì dùng luôn bản đó. Mọi thứ nằm trong ~/.printagent, gỡ cài đặt là xoá thư mục đó.

Bản trước phải clone repo về mới chạy được và phụ thuộc nvm/winget; qua curl | bash thì đường dẫn gốc sai nên không cài được gì.

Biến môi trường: PRINTAGENT_LANG=en, PRINTAGENT_NO_START=1, PRINTAGENT_HOME, PRINTAGENT_NODE_TRACK.

SumatraPDF tự cài trên Windows

Bước "Công cụ in file PDF" tải bản portable về ~/.printagent/tools và ghi vào printing.sumatraPath, không cần quyền admin. Tải lỗi thì mới lùi về winget/choco. Trước đây bước này chỉ báo thiếu và bắt người dùng tự chạy winget install.

Sửa lỗi

  • Node portable được đưa vào PATH trước khi npm chạy: script postinstall của puppeteer gọi thẳng lệnh node nên trước đó cài thất bại với sh: node: command not found.
  • Cài từ mã nguồn dùng --no-package-lock để không sinh lockfile thứ hai cạnh yarn.lock.
  • findSumatra dùng chung giữa bước cài đặt và driver in, cùng nhận thư mục ~/.printagent/tools.

v1.1.0

Choose a tag to compare

@huy97 huy97 released this 06 Sep 03:37

Bộ template tiếng Anh

Thêm bộ mẫu thứ hai gồm 6 template tiếng Anh, dùng USD và định dạng en-US: invoice-a4-en, bill-80mm-en, receipt-escpos-en, tax-invoice-a4-en, pos-receipt-80mm-en, cash-receipt-a5-en. Hai bộ dùng id khác nhau nên cài chung một máy được.

Hai helper mới đọc số tiền thành chữ tiếng Anh kèm tên đơn vị: {{enWords 979.76 currency="USD"}} và {{amountWords total locale="en" currency="USD"}} (chọn cách đọc theo ngôn ngữ).

Chỉ tạo template khi được đồng ý

Agent không còn tự tạo template lúc khởi động. Màn hình cài đặt có công tắc riêng, hỏi trước rồi mới tạo, theo đúng ngôn ngữ đang chọn. Tạo sau bất cứ lúc nào: nút Bộ mẫu ở tab Template, POST /api/templates/seed, hoặc printagent setup --templates.

Chuyển ngôn ngữ khi cài đặt

Wizard trong terminal hỏi ngôn ngữ trước tiên. Ngôn ngữ chọn ở màn cài đặt (web hoặc terminal) trở thành agent.locale, quyết định luôn bộ template được tạo.

Endpoint mới

  • GET /api/templates/seeds?lang=vi|en liệt kê một bộ mẫu mà không tạo gì.
  • POST /api/templates/seed tạo bộ mẫu của một ngôn ngữ, mẫu đã có được giữ nguyên.

v1.0.0

Choose a tag to compare

@huy97 huy97 released this 06 Sep 03:15

Bản phát hành đầu tiên của PrintAgent.

npm install -g @hyydev/printagent
printagent start

Có gì

  • Bốn cách điều khiển: REST API, WebSocket, MCP (HTTP và stdio), web UI.
  • In PDF thẳng từ base64, URL hoặc upload multipart; hoặc template Handlebars + biến JSON rồi tự render PDF phía agent.
  • 6 mẫu chuẩn Việt Nam: hoá đơn GTGT A4, hoá đơn máy tính tiền 80mm, phiếu thu 01-TT, bill nhiệt, ESC/POS raw.
  • Quét máy in trên CUPS (macOS/Linux) và Windows, đặt máy in mặc định, in trang thử.
  • Tunnel Cloudflare (quick và named) hoặc ngrok, có xác minh hostname bằng nonce.
  • One-click setup cross-platform, tự cài Node LTS qua nvm nếu thiếu, đăng ký chạy nền theo launchd/systemd/Task Scheduler.
  • Song ngữ đầy đủ tiếng Việt và tiếng Anh cho UI, lỗi API, CLI và tài liệu.
  • Tài liệu cho tác nhân AI: /.well-known/printagent.json, /openapi.json, /llms.txt.

Bảo mật

Ngoại lệ miễn API key cho máy local đòi thoả đồng thời bốn điều kiện độc lập (địa chỉ loopback, Host loopback, không có header proxy, Sec-Fetch-Site same-origin/none), nên request qua tunnel hay do một website khác khởi tạo đều không lọt. Sai key 10 lần trong một phút thì bị chặn 5 phút, tính chung cho REST và WebSocket. Tunnel không bật được khi chưa bật xác thực hoặc chưa có key nào.