打印内容会离开本机吗?
不会。MCP server、客户端、PDF 渲染和打印队列都在本机;只有首次用 npx 拉取 npm 包时需要联网。数据不上云,也没有云端中继。
装好「Web打印专家」客户端之后,再给你的 AI 宿主挂一个 stdio MCP server,模型就能直接调用本机打印机打印 HTML、网页、PDF 和图片。它不改客户端、也不改 web-print-pdf 浏览器库——只是给客户端已有的本机端口再接一个客户端。
三层链路,每层都跑在你自己的机器上,没有云端中继:
npx -y mcp-web-print-pdf 启动 MCP server,走 stdio 传输。AI host (Claude / Cursor / dsh)
| stdio: npx -y mcp-web-print-pdf
v
mcp-web-print-pdf
| ws://127.0.0.1:16794/websocket/standard
v
Web Print Expert client --> printerdry_run: true 预览。未授权时正式打印会返回 Not allowed to use, please purchase authorization;先确认客户端已登录并完成授权。
先单独跑一次 npx -y mcp-web-print-pdf 之外的检查:打开客户端,确认它正在运行、端口没被占用。宿主真正连上后,第一个该调用的工具是 getConnectStatus。
所有宿主都是同一个 stdio 命令,只是配置文件位置和顶层键不同:
{
"mcpServers": {
"webprint": {
"command": "npx",
"args": ["-y", "mcp-web-print-pdf"],
"env": { "WEBPRINT_PORT": "16794" }
}
}
}dsh 用 YAML 插入,写法不同但字段等价:
- insert:
- id: mcp-webprint
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: webprint
transport: stdio
command: npx
args:
- '-y'
- 'mcp-web-print-pdf'
toolCallTimeoutMs: 180000改完配置重启宿主,在它的 MCP 面板里确认服务已连接。模型侧看到的工具名会带命名空间,例如 mcp__webprint__printHtml;先 getConnectStatus 探活,再 printHtml 加 dry_run: true 看预览是否生成。
客户端端口默认 16794,可用 WEBPRINT_PORT 覆盖;WebSocket 请求超时默认 120 秒,可用 WEBPRINT_TIMEOUT(毫秒)覆盖。
配置格式以各宿主当前版本文档为准;下表是常见位置,用来快速定位文件。
| 宿主 | 配置位置 | 顶层键 |
|---|---|---|
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json | mcpServers |
| Cursor | ~/.cursor/mcp.json 或项目内 .cursor/mcp.json | mcpServers |
| dsh | ~/.dsh/profiles/<profile>/cordis.patch.yml | insert(YAML) |
| Claude Code | claude mcp add --scope user webprint -- npx -y mcp-web-print-pdf | CLI 写入 |
| VS Code + Copilot | .vscode/mcp.json | servers |
| OpenAI Codex CLI | ~/.codex/config.toml | mcp_servers(TOML) |
| Cline / Roo / Kilo | cline_mcp_settings.json | mcpServers |
| Cherry Studio / Trae | 设置面板里手动添加 STDIO 服务 | 图形界面 |
工具名与 web-print-pdf@2.x 的方法名一一对应(utils. 前缀不能出现在工具名里,故省略)。
| 工具 | 作用 | 备注 |
|---|---|---|
getConnectStatus | 检查客户端是否在线 | 打印前先探活 |
getPrinterList | 列出本机打印机(名称 + 驱动) | 拿到准确的 printer_name |
getPrinterPapers | 查询某台打印机支持的纸张 | 用于填 paper_format / print_options.bin |
printHtml | 打印 HTML 字符串 | 最常用;HTML 片段或完整页面都行 |
printHtmlByUrl | 抓取网页后打印 | 可传 cookies / httpHeaders |
printHtmlByBase64 | 打印 Base64 编码的 HTML | 受 10MB 消息上限约束 |
printPdfByUrl | 打印 PDF 链接 | 客户端先下载再打印 |
printPdfByBase64 | 打印 Base64 编码的 PDF | 约 5MB 以内 |
printImageByUrl | 打印图片链接 | — |
printImageByBase64 | 打印 Base64 编码的图片 | 裸 base64 会按文件头自动补前缀 |
printFile | 按本机路径打印 .pdf / .html / 图片 | 本仓库额外提供,绕开 stdio 消息上限 |
batchPrint | 一次提交多个混合任务 | 任务的 action 必须一致 |
| 工具 | 作用 | 备注 |
|---|---|---|
setTitle | 设置客户端窗口标题 | reset: true 恢复默认 |
setThemeColor | 设置客户端主题色 | |
switchTabsVisibility | 切换标签页显隐 | |
setContactUsTabInnerHtml | 设置「联系我们」页面内容 |
三个 options 对象分别对应上游的三个实参:pdf_options / print_options 走客户端白名单校验(字段名写错直接报错),extra_options 允许任意自定义键并原样返回。
合并规则:对象里显式写的字段优先,便利参数只补空缺。
| MCP 参数 | 对应上游 | 说明 |
|---|---|---|
| 内容字段 | 第 1 个实参 | html / url / base64 / path / tasks |
pdf_options | pdfOptions | 排版成 PDF:纸张、边距、页眉页脚、水印、页码、背景 |
print_options | printOptions | 投递打印机:打印机名、份数、单双面、缩放、纸盒、热敏锐化 |
extra_options | extraOptions | action、requestTimeout、cookies、httpHeaders、localStorages |
dry_run | — | 便利开关:传 true 只渲染预览、不出纸;不传则直接打印 |
paper_format / printer_name / copies | — | 便利参数,等价于 print_options 里的同名字段 |
printFile 或 URL 通道。toolCallTimeoutMs)。pdf_options.paperFormat 传自定义纸名。它只认固定枚举(A0–A6 / Letter / Legal / Tabloid / Ledger);80mm 小票、100×150 面单请改用 width + height。{ type, data, pdfOptions?, printOptions?, extraOptions? },内容放 data,不是 content / url / base64;同一批次里每个任务的 extraOptions.action 必须一致。printFile。它会读取模型指定的本机任意路径,只应在可信环境里启用。print_html / list_printers),0.2.0 起统一成上游的驼峰方法名,旧名不再生效。getConnectStatus:客户端在线才继续。getPrinterList:确认模型看到的目标打印机名称与你预期一致。printHtml 加 dry_run: true:返回里有预览地址 / PDF 地址,说明渲染链路通了。Get-PrintJob)看作业状态,而不是只看工具返回值。不会。MCP server、客户端、PDF 渲染和打印队列都在本机;只有首次用 npx 拉取 npm 包时需要联网。数据不上云,也没有云端中继。
不能。网页版只接受远程 HTTP MCP,本项目提供的是本机 stdio server。要在网页版用,需要自己在中间加一层 HTTP 桥。
一对一映射:printHtml、batchPrint、utils.getPrinterList 等公开 API 都有同名工具,只是把入参改成 MCP 的 JSON 形式,并额外加了 printFile(按本机路径打印)。
先检查打印机是否暂停 / 离线 / 缺纸,任务可能停在系统队列里;再确认授权状态,未授权时正式打印会报 NOTALLOWUSE。
MCP server 本身是 MIT 开源包,不需要额外付费;正式出纸仍然依赖「Web打印专家」客户端的授权。想先验证链路,可以传 dry_run: true 只渲染预览。
同一套 web-print-pdf 前端代码可在 Windows、macOS、Linux/信创混合环境运行;请按终端操作系统安装对应客户端。