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.Printer | Windows 桌面服务,提供 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 / pdfBytes 和 renderSource,服务端会返回 INVALID_PARAMS。
接下来读什么
- 想先跑通浏览器打印:看 快速上手。
- 想了解桌面服务配置:看 Printer 应用。
- 想嵌入自己的 .NET 宿主:看 Engine DLL。
- 想手写 HTTP 或 WebSocket:看 API 参考。