HTTP同步 + MQTT异步双协议打印中间件,完美适配本地内网 + 云端云服务 + 物联网分布式全场景

当前版本:V2.0


一、项目简介

FastPrintAgent 是一款轻量、高性能的企业级分布式打印中间件,基于成熟 FastReport 报表引擎开发,核心能力就是解析 JSON 报文,自动转换为报表数据集,无需手写字段映射,在FastReport报表设计器进行拖拽方式设计报表。

内置 HTTP 同步 + MQTT 异步双通信协议,兼顾传统本地对接与物联网云端分布式场景,完美补齐传统HTTP打印存在的内网穿透依赖、动态IP适配差、离线断连丢任务、多设备集群管控困难等短板,一套中间件可同时覆盖局域网本地打印、云端远程打印、工控物联网设备打印全业务场景。

程序支持 Windows 系统服务常驻、桌面客户端双模式运行,彻底解决企业异构系统打印集成复杂、多网点打印分散、报表开发冗余繁琐、多打印机调度不便、云端远程打印连通性差等行业痛点。内置可视化无代码模板设计能力,支持单据在线打印、在线预览、PDF导出归档,是企业信息化、工业自动化、物联网边缘计算场景下通用的标准化打印服务。


二、HTTP 与 MQTT 协议核心对比(核心差异化优势)

传统HTTP接口在分布式门店、工厂工控、云端远程设备场景中存在天然缺陷,本项目原生集成MQTT协议,针对性解决各类网络与打印任务痛点,两者详细对比如下:

对比维度传统 HTTP 打印(同步调用)本项目 MQTT 打印(异步推送)
网络环境要求必须固定内网IP、需要端口映射、必须暴露端口,存在网络安全风险无需固定IP、无需端口映射、无需暴露本机端口,内网设备联网更安全
连接模式短连接,请求完成立即断开,网络波动极易丢失打印任务长连接常驻,自动断线重连,支持离线消息缓存,打印任务永不丢失
使用场景仅限本地局域网、同网段业务系统对接跨网段、跨城市连锁门店、云端远程下发、工控机、物联网终端
运维难度每台设备单独配置网络,多设备集群运维流程繁琐统一MQTT Broker管理,可批量管控所有打印终端,运维成本极低
适用人群本地单一系统、局域网内网快速对接需求分布式项目、云端项目、工控物联网、全国多门店集群项目

三、核心优势

  • 双协议兼容,无缝平滑切换:同一套打印模板、同一套业务JSON数据,无需修改业务代码,即可自由切换HTTP、MQTT两种调用方式
  • 业务解耦,聚焦核心开发:将打印能力从业务系统中完全抽离,业务系统无需关注打印机硬件、报表模板、底层打印驱动细节,极简对接即可完成全流程打印
  • 企业级统一打印中台:支持多套异构系统统一接入,规避重复开发打印业务逻辑,实现全网打印机统一调度、统一运维、统一监控
  • 全开发语言兼容:支持 C++、C#、Java、Python、Delphi、PHP、Go 等主流开发语言,统一JSON格式入参,无需适配底层驱动
  • 多打印机集中管控:通过接口可按需指定目标打印机,适配分布式环境下多设备、多打印机一站式调度管理
  • 零代码可视化模板设计:内置FastReport可视化设计器,拖拽即可生成报表,原生支持条码、二维码、电子签章、金额大写自动汇总功能
  • 双运行模式稳定可靠:支持Windows系统服务7×24小时无人值守运行,搭配桌面可视化客户端,同时满足生产环境稳定性与日常调试便捷性需求
  • 一站式内置调试工具箱:集成JSON格式化、Base64图片互转、全量日志追溯、一键模板设计功能,大幅降低接口对接与问题排查成本

四、适用场景

4.1 HTTP 适配场景

  • 企业内网ERP、进销存、OA办公、财务报销、CRM客户管理系统单据打印
  • 本地单工位、单设备局域网内快速对接打印
  • 老旧本地业务系统快速改造,快速接入标准化打印能力

4.2 MQTT 专属适配场景(核心优势场景)

  • 工业工控:MES生产系统、工位工控机、自动化生产线远程报表打印
  • 连锁业态:餐饮门店、商超零售、物流网点全国分布式远程打印
  • 医疗政务:HIS/LIS政务系统跨网段报表打印、PDF电子文件归档
  • 物联网场景:边缘设备、智能终端、无固定IP设备远程打印任务下发
  • 分布式集群:多厂区、多机房、跨地域设备统一打印调度管理
  • 云服务对接:阿里云 / 腾讯云 / 华为云原生集成,适配云ERP、云MES、云零售、云政务系统跨云远程打印

五、核心功能详情

5.1 标准化双协议接口能力

系统统一JSON入参格式,HTTP同步调用、MQTT异步消息复用同一套业务请求数据,支持直接打印、在线预览、PDF导出归档三大核心能力,业务端无需改动代码即可切换通信方式。

5.2 灵活部署能力

提供双重运行模式:Windows系统服务(开机自启、无人值守)、桌面可视化客户端。支持分布式多机器批量部署,完全适配企业长期稳定生产运行环境。

5.3 企业级报表能力

基于成熟FastReport报表内核开发,支持复杂嵌套表格、明细数据自动汇总、金额大写自动转换、Base64电子签章嵌入、自定义页面排版,完全满足企业正式单据规范化打印要求。

5.4 打印状态监测

实时判断打印机状态、是否离线暂停;识别卡纸、缺纸、打印完成等各类状态。

5.5 全能调试工具箱

  • JSON工具:支持代码格式化、压缩、折叠,快速校验接口请求数据合法性
  • 多媒体工具:图片与Base64字符串双向互转,适配电子签章、业务凭证图片嵌入打印场景
  • 模板工具:一键唤起报表设计器,自动绑定测试数据,快速完成打印模板开发
  • 日志工具:全量留存HTTP、MQTT全部打印请求日志,双击日志可一键回填请求参数,快速复现线上问题

5.6 多打印机独立线程队列

针对分布式多打印机场景,内置 TPrintQueueManager / TAgentPrintManager 调度引擎:每台打印机分配独立工作线程与专属任务队列(单打印机任务上限 50,自动排队互不阻塞),避免单台卡纸、缺纸、慢打影响其它打印机;PDF 导出由独立的 ExportManager 队列处理,导出任务不占用打印线程,打印与导出并发互不影响。

5.7 模板集中分发

模板由中心服务(Hub)统一管理与版本控制,服务端通过 TemplateUpdate 广播通知变更,客户端收到后执行防抖 + 增量拉取(仅下载发生变化的模板)+ 原子替换落盘,无需人工拷贝。模板在 PrintTemplate(正式)/ PrintTemplateModifying(编辑中)/ PrintTemplateHistory(历史版本)三目录中分层管理,发布即生效、编辑不中断在线打印,支持多网点模板一键统一下发。


六、快速开始

6.1 安装部署步骤

  1. 下载 FastPrint Agent 安装包,解压至电脑纯英文路径,避免中文目录导致程序乱码异常
  2. 右键以管理员身份运行「安装服务.bat」脚本,自动完成Windows系统服务安装
  3. 服务安装后自动启动,默认HTTP监听端口:9798,支持自定义端口修改
  4. 部署完成后程序常驻系统右下角托盘,左键点击图标即可打开客户端主界面进行参数配置
  5. 进入计算机服务列表,查看 ASuperService 服务状态为正在运行,即代表部署成功

6.2 HTTP 调用基础规范

6.2.1 HTTP最简调用示例
{
  "command": "print-report",
  "requester": "ERP-System",
  "printTaskId": "123456789",
  "reportTemplate": "SalesOrder",
  "exportFileName": "D:\\PDF\\202608151159000_SalesOrder.pdf",
  "printer": "",
  "printCn": 1,
  "printData": {
    "title": "销售订单",
    "orderNo": "SO20240520001",
    "customer": "张三",
    "items": [
      {"product": "笔记本电脑", "quantity": 1, "price": 5999},
      {"product": "鼠标", "quantity": 2, "price": 99}
    ]
  }
}

6.3 MQTT 调用规范(含 1 个专属参数)

通过 MQTT 主题下发完整 JSON 请求报文,在服务端与客户端共用同一套请求体的基础上,新增一个专属业务参数 responseTopic,实现打印任务全流程异步闭环回调(下发任务 → 执行 → 结果异步回发到你指定的主题)。

6.3.1 MQTT完整请求示例
{
  "command": "print-report",
  "requester": "ERP-System",
  "printTaskId": "123456789",
  "responseTopic": "print/receive/1234",
  "reportTemplate": "SalesOrder",
  "exportFileName": "D:\\PDF\\202608151159000_SalesOrder.pdf",
  "printer": "",
  "printCn": 1,
  "printData": {
    "title": "销售订单",
    "orderNo": "SO20240520001",
    "customer": "张三",
    "items": [
      {"product": "笔记本电脑", "quantity": 1, "price": 5999},
      {"product": "鼠标", "quantity": 2, "price": 99}
    ]
  }
}
6.3.2 MQTT异步统一状态回执(自动推送至指定回执主题)
{
  "printTaskId": "123456789",
  "timestamp_ms": 1787210533798,
  "code": 0,
  "printer": "aGeneric / Text Only",
  "msg": "success"
}

6.4 全功能示例查看

程序支持嵌套明细、金额自动汇总、金额大写转换、Base64电子签章渲染、PDF导出等全业务场景。打开 FastPrint Agent 客户端主界面 → 帮助 → JSON 示例,即可查看完整可直接复用的调试案例。


七、API 接口文档

7.1 HTTP 接口列表

接口功能请求地址
直接打印、打印预览、PDF导出http://127.0.0.1:9798/api/print

7.2 公共请求参数(HTTP/MQTT通用)

参数名类型必填参数说明
commandstring对应接口执行能力:1.print-report(直接打印);2.show-report(打印预览);3.export-pdf(PDF导出)
requesterstring调用方系统标识(如 ERP-System),用于日志溯源与多系统区分
printTaskIdstring业务端自定义唯一任务编号,用于匹配回执消息,实现打印任务溯源
reportTemplatestringFastReport 模板文件名,存放于程序 PrintTemplate 目录,仅传文件名称,无需携带 .fr3 后缀
printerstring目标打印机全称,可空;留空时按优先级使用:程序默认打印机 > 系统默认打印机
printCnint打印份数,默认值为1
exportFileNamestring仅PDF导出接口生效,填写本地文件完整保存路径;
1. 仅适配 export-pdf 接口;
2. 需要保证目标目录拥有文件写入权限;
3. 调用示例:"D:\\PDF\\test.pdf"
4. 为避免PDF中文乱码、文字空白、字体缺失问题,模板设计时所有中文文本控件,必须选用微软雅黑、宋体、黑体等系统兼容中文字体,禁止使用无中文适配的特殊字体
printDataobject1. 业务打印核心数据集;
2. 字段后缀添加 _base64image,程序可自动识别并渲染Base64格式图片;
3. 支持中文键名,模板可视化设计时可读性更强;
4. printData节点下不支持二次嵌套对象(Object),可支持多层数组(Array)嵌套,具体规范可参考客户端内置JSON示例

7.3 MQTT 专属新增参数(MQTT版本v5.0)

参数名类型必填参数说明
responseTopicstring打印任务执行完成后,程序推送执行结果的自定义MQTT回执主题

7.4 统一响应参数说明

7.4.1 成功响应
{
  "printTaskId": "123456789",
  "code": 0,
  "msg": "ok",
  "timestamp_ms": 1787210533798,
  "printer": "aGeneric / Text Only"
}
7.4.2 失败响应
{
  "printTaskId": "123456789",
  "code": -1,
  "msg": "缺少printer字段",
  "timestamp_ms": 1787210533798
}

八、客户端使用指南

8.1 系统托盘功能

程序后台常驻系统右下角托盘,无前台窗口占用系统资源,左键点击托盘图标即可快速打开客户端主操作界面。

8.2 主界面核心功能

  • 打印调试:内置JSON编辑器、Base64双向转换工具,支持一键打印、预览、PDF导出操作
  • 模板设计:自动绑定JSON测试数据,一键打开报表设计器,零代码快速制作打印模板
  • 日志查询:全量记录HTTP、MQTT全部打印请求日志,双击日志可一键回填参数,快速复现问题
  • 参数设置:支持自定义HTTP端口、默认打印机、MQTT服务连接地址与账号密码
  • 帮助中心:内置注册激活入口、全套JSON调用示例、完整图文接入教程

九、模板设计教程

  1. 打开客户端主界面,切换至打印调试页面
  2. 粘贴业务JSON请求数据,或直接读取历史请求日志回填参数
  3. 点击模板设计按钮,程序自动生成空白报表模板并绑定对应业务数据集
  4. 拖拽表格、条码、二维码、图片、文本等控件,完成报表页面布局排版
  5. 将页面控件绑定printData内对应业务字段,调整字体、页边距、分页规则
  6. 保存模板文件,文件自动存入程序PrintTemplate目录,接口直接填写模板名即可调用


FastPrint Agent 项目地址:
GitHub:https://github.com/mingjiesoft/FastPrintAgent
Gitee:https://gitee.com/mingjiesoft/FastPrintAgent

Logo

一站式 AI 云服务平台

更多推荐