Skip to content

EasyInk Printer (.NET)

EasyInk 的 .NET 链路解决的是 Windows 本地打印。

前端最常见的入口是:

ts
import { createEasyInkPrinter } from '@easyink/print-integration-easyink-printer'

const printer = createEasyInkPrinter({
  serviceUrl: 'http://localhost:18080',
  viewer: 'iframe',
})

await printer.ready()
await printer.print({ schema, data })

这段代码会连接本机 EasyInk.Printer,创建托管 Viewer,默认生成 PDF,再把 PDF 提交给 Windows 本地打印服务。

printer.ready() 只是可选的预检:你想先确认服务和打印机列表时再调它;如果你已经在别处完成连接检查,也可以直接打印。

两层组件

.NET 部分拆成两层:

text
浏览器前端
  -> EasyInk.Printer HTTP/WebSocket
  -> EasyInk.Engine
  -> Windows 打印通道
组件作用
EasyInk.PrinterWindows 桌面服务,提供 HTTP/WebSocket、托盘、管理界面、审计、配置和 Render 调用
EasyInk.Engine纯打印引擎,负责打印机查询、PDF 获取、队列和物理打印执行

如果你是浏览器项目,大多数时候直接安装并启动 EasyInk.Printer。如果你已经有自己的 .NET 宿主,只差打印引擎,再看 EasyInk.Engine

Engine 里当前有三条物理打印路径:

text
PDF
  -> RoutingPrintService
     -> SumatraPdfPrintService
     -> EscPosRawPrintService
     -> PdfiumPrintService

路由优先级按代码实现是:SumatraPDF fallback、ESC/POS raw、默认 PDFium/GDI。

  • PdfiumPrintService:默认路径,渲染 PDF 位图,再通过 PrintDocument 交给 Windows Spooler。
  • EscPosRawPrintService:命中 RawPrinterNames 时,把 PDF 转成 ESC/POS 光栅指令直发。
  • SumatraPdfPrintService:命中 SumatraPrinterNames 且配置了 SumatraPDF 路径时,使用 SumatraPDF CLI 打印。

Render 与 PDF

EasyInk Printer 可以接收两类输入:

json
{
  "printerName": "HP LaserJet",
  "pdfBase64": "JVBERi0xLjQK..."
}
json
{
  "printerName": "HP LaserJet",
  "renderSource": {
    "type": "easyink",
    "schema": {
      "version": "1.0.0",
      "unit": "mm",
      "page": { "mode": "fixed", "width": 80, "height": 120 },
      "guides": { "x": [], "y": [] },
      "elements": []
    },
    "data": {
      "receipt": { "no": "R-001" }
    }
  }
}

PDF 输入会直接进入 Engine 打印路径。模板输入会先在浏览器端走托管 Viewer,再由 SDK 选择 PDF、模板渲染或 HTML 路径。

注意

一笔打印请求只能有一个来源。不要同时传 pdfBase64 / pdfUrl / pdfBytesrenderSource,服务端会返回 INVALID_PARAMS

接下来读什么