类对象支持库。路径:支持库 → 扩展类库 → 打印类。
类型名写「打印类」。声明时自动创建。
按页输出文本、表格、图片(Win32 GDI)。坐标与页边距单位为 百分之一毫米(HIMETRIC,0.01mm;例如 1000 = 10mm)。
另支持 原始字节通道(打开原始 / 发送原始):经系统打印机 WritePrinter、datatype=RAW,可发 ESC/POS、ZPL 等任意协议。与 GDI 打开 / 画布互斥;v1 仅同步。小票语义请用 小票类。
在 IDE 里开通打印类后才能编译。编进用户程序之后,运行时不再检查授权。能力包:plugins/supportlib.print/(须在 YStudio.exe 旁 plugins/,重启 IDE 后出现在 支持库 → 扩展类库 → 打印类)。
无内置预览窗。 用「画布 + 取画布图片」自己做预览(如放到图片框);用「异步 + 是否完成」避免关闭时卡界面。
无内置设置窗。 用「取默认打印机 / 取纸张列表 / 置纸张·方向·份数·双面·彩色 + 应用设置」自己做设置页;选择打印机() 仍可作系统对话框备用。
完整示例工程:examples/打印预览(图片框 DIY 预览 + 同步/异步打印)。
自定义打印设置
打印类 打
文本 机 = 打.取默认打印机()
文本 纸张们 = 打.取纸张列表(机) // 填到自建下拉;非空机名会记为当前打印机
打.置纸张("A4")
打.置方向(0) // 0纵 1横
打.置份数(1)
打.置双面(0) // 0关 1长边 2短边
打.置彩色(真)
如果 (!打.应用设置()) {
信息框(打.取错误(), 0)
返回
}
// 此时可取可打宽度/纸张宽高等;再打开画布或打开作业
如果 (打.打开画布("", 0)) {
// …同一套输出…
打.关闭()
}
改选项后请先 应用设置()(或直接 打开/打开画布,有未应用改动时会自动应用)。双面不被驱动接受时,其余项仍会应用,并用 取错误() 提示。
预览与实打一致(重要)
打开画布 会按目标打印机的物理纸张、DPI、不可打边距建图,原点/可打区域算法与 打开() / 选择打印机() 相同;再配上同一套输出命令,预览与实打对齐。
推荐:
- 先确定打印机(
选择打印机()或记下打印机名) 打开画布(打印机名)或名空(用已选/默认),dpi 填 0(跟打印机分辨率)- 同一套
开始页/输出*/结束页画预览 取画布图片()→ 图片框- 真正打印时对同一打印机再跑一遍同一套输出(可抽成子程序)
dpi>0 仅作降采样加快预览,可能有细微差别,正式预览请用 0。
打印类 打
打.置字体("微软雅黑", 10)
打.置页边距(1000, 1000, 1000, 1000)
函数 画一页() {
打.开始页()
打.输出文本行("对账单", 14)
打.输出表格(0, 打.取游标Y(), "品名\t数量\n苹果\t2", 2500)
打.结束页()
}
// —— 预览 ——
如果 (打.打开画布("", 0)) { // 默认打印机,DPI 跟机
画一页()
图片框1.图片 = 打.取画布图片()
打.关闭()
}
// —— 实打 ——
如果 (打.打开()) {
画一页()
打.关闭()
}
仓库示例:examples/打印预览(启动即刷新预览;可改标题/备注后再刷新)。
异步打印
打印类 打
打.异步(真)
打.置文档名("对账单")
如果 (打.选择打印机()) {
打.开始页()
打.输出文本行("标题", 14)
打.结束页()
打.关闭() // 立刻返回,后台回放到打印机
}
// 定时器里:
如果 (打.是否完成()) {
如果 (打.取错误() != "") {
信息框(打.取错误(), 0)
}
}
异步(真) 时:打开/选择打印机只准备作业,输出命令先录制;关闭() 在后台线程创建打印机 DC 并回放。对话框仍在 UI 线程弹出。
同步快速开始
打印类 打
如果 (打.打开()) {
打.开始页()
打.输出文本行("对账单", 14)
打.结束页()
打.关闭()
} 否则 {
信息框(打.取错误(), 0)
}
原始指令(RAW)
与 GDI「打开」不同:这里把你给的字节原样交给驱动(datatype=RAW),适合 ESC/POS、ZPL 等。小票语义(对齐、切纸、二维码)请优先用 小票类;本通道是「通用水管」。
打印类 打
如果 (!打.打开原始("XP-58")) { // 空=默认打印机
信息框(打.取错误(), 0)
返回
}
打.发送原始(十六进制到字节集("1B40")) // 复位
打.发送原始(文本到字节集("Hello", 3)) // 3=GBK
打.发送原始(十六进制到字节集("0A1D5600")) // 换行+切纸(视机型)
打.关闭()
- 驱动须支持 RAW;失败看
取错误。 - 网口/串口热敏、本机 ESC/POS 模拟器:用小票类
打印到网口("127.0.0.1", 9100),不必走系统打印机队列。 - Windows 模拟预览见 receipt.md · 推荐测试路径。
命令摘要
| 方法 | 说明 |
|---|---|
异步(启用) / 是否完成() |
后台打印与轮询 |
打开画布([打印机名], [dpi=0]) |
按该机纸张/DPI 建画布;dpi 0=跟机 |
取画布图片() |
PNG 字节集(DIY 预览) |
打开([打印机名]) / 选择打印机() |
打开 GDI 作业 |
打开原始([打印机名]) / 发送原始(字节集) |
RAW 通道(任意协议) |
取打印机列表() / 取默认打印机() |
打印机 |
取纸张列表([打印机名]) |
可用纸张名 |
置/取纸张 置/取方向 置/取份数 置/取双面 置/取彩色 |
自定义设置项 |
应用设置() |
写入 DEVMODE 并刷新度量 |
置文档名 / 置页边距 / 置字体 |
作业与版式 |
取可打宽度/高度 / 取纸张宽度/高度 |
度量(0.01mm;应用设置后即可取) |
置游标 / 取游标X/Y |
流式排版;开始页 重置 |
开始页 / 结束页 |
分页 |
输出文本 / 输出多行文本 / 量文本高度 / 输出文本行 |
文本 |
输出图片 / 输出表格 |
图片与表格(表格返回占用高度) |
关闭() |
提交 / 启动后台 / 释放画布 |
取错误() |
最近失败原因(含后台) |
返回高度的方法成功为占用高度(≥1),失败为 0。