在 PT210 上打印
通过完整克隆的仓库使用附带的辅助脚本。将 PRINT_SKILL_DIR 解析为本技能目录,然后调用:
bash "$PRINT_SKILL_DIR/scripts/print.sh" --help
需要 macOS、uv、一台已唤醒且装有纸卷的 PT210 打印机,以及调用应用的蓝牙权限。Markdown/Excalidraw 还需要本地安装 Google Chrome。首次安装依赖时会使用网络;渲染过程保持本地。请勿假定本技能文件夹在脱离仓库时能正常工作。
首次连接
bash "$PRINT_SKILL_DIR/scripts/print.sh" scan
bash "$PRINT_SKILL_DIR/scripts/print.sh" setup --address 扫描得到的UUID
macOS 通过机器特定的 UUID 识别 BLE 设备,而非经典蓝牙 MAC。设置过程会验证受支持的可写特征,并将选择保存到 ~/.config/pt210/printer.json。如果只发现一台唯一的 PT210,则无需 --address 即可选择;如果匹配到多台,则需要指定目标设备。如果未保存设备,绝不会回退到其他打印机。--address 会覆盖 PT210_ADDRESS 环境变量,再覆盖已保存的选择。inspect 命令连接但不打印。
准备、预览、打印
始终使用确切的请求内容。打印请求即授权输出纸张;不要添加冗余的确认步骤。先预览不熟悉的布局。
bash "$PRINT_SKILL_DIR/scripts/print.sh" preview --file /tmp/note.md --output /tmp/note-preview.png
bash "$PRINT_SKILL_DIR/scripts/print.sh" print --file /tmp/note.md
- 纯文本:通过 stdin 或
--file输入。ASCII 使用内置字体快速打印;Unicode(包括韩文)使用位图文本。--mode raster强制使用位图模式。 - Markdown:
.md/.markdown文件自动检测;stdin 使用--format markdown。保留请求的格式。标题、强调、列表、任务复选框、引用、代码、表格和链接会正确渲染。宽表格会转换为带标签的行。链接包含目标地址;图片显示替代文本占位符。原始 HTML 保持原样,外部资源被阻止。 - Excalidraw:
.excalidraw/.excalidraw.json文件自动检测;stdin 或通用 JSON 使用--format excalidraw。使用build-excalidraw构建一次(需要 npm)。使用保存的场景,而不是共享 URL、库、Obsidian 包装器或 PNG。不要从 Mermaid 重新生成已编辑的场景。官方本地渲染器保留几何形状,并按纸张宽度等比缩放。小文字警告需要通过预览检查;不要静默裁剪或重新排列。支持嵌入式 PNG/JPEG/WebP/GIF;远程嵌入和 SVG 图片会明确失败。Excalidraw 和 Markdown 始终使用位图模式。
预览从不访问蓝牙,且拒绝覆盖已有文件。Markdown/Excalidraw 预览使用与打印相同的选项。对于纯文本,使用 print --mode raster 以匹配预览;原生字体有所不同。每个作业末尾带有虚线导引线和 20 毫米的空白撕纸边距。通过 --tear-margin-mm 0..50 调整,或使用 --no-tear-line 省略导引线。默认高度限制为 2,400 点(含边距共 300 毫米);缩短大段输出,或为请求的长收据显式提高 --max-height。
投递与故障处理
等待进程完成。transmitted 表示蓝牙写入已完成,并非纸张输出的独立证明。首次设置或测试新传输行为时,需要人工确认纸张输出。本地锁防止作业重叠;不要绕过它。失败/中断的发送可能已部分打印:重试前检查纸张,切勿自动重新发送。
如果找不到打印机,请用户将其打开并靠近,同时断开手机上的打印机应用。当蓝牙被沙盒限制时,使用运行时认可的权限路径。蓝牙拒绝需要用户在 macOS 的“隐私与安全性”中手动操作;不要编辑 TCC 设置。仅支持经典蓝牙的变体需要其他已验证的传输方式;不要猜测串行端口或使用办公室/默认打印机。
如果输出损坏,--transport conservative 会在下一次授权作业中使用较小的数据包。打印机配置、锁定文件和渲染缓存属于本地运行时状态;切勿提交它们。完整的功能、设置和限制请参见仓库的 README。