# JPrint **Repository Path**: BuYaoPenXiangShui/java-print ## Basic Information - **Project Name**: JPrint - **Description**: 使用java实现的打印控件,供web调用实现静默(无预览)打印的效果. 一、普通打印机支持。 二、条码打印支持: 北洋: BTP-2200E Plus - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 7 - **Created**: 2024-04-25 - **Last Updated**: 2025-08-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README @[TOC]() # 一、项目介绍 ## 1.功能说明 | 功能 | 说明 | 截图 | | -------- | -------------------------------------- | ------------------------------------------------------------ | | 打印 | http协议,打印机服务自由切换 | ![输入图片说明](https://foruda.gitee.com/images/1736816985470840584/51161e6a_1479216.png "屏幕截图") | | 开机自启 | 支持开机自启 | ![输入图片说明](https://foruda.gitee.com/images/1736817079210399548/967efe46_1479216.png "屏幕截图") | | 端口设置 | 支持服务端口自由配置,不再担心端口冲突 | ![输入图片说明](https://foruda.gitee.com/images/1753342165828819357/b282a446_1479216.png "屏幕截图") | | 托盘 | 支持托盘,后台运行 | | | 换肤 | 换肤功能,支持自定义肤色 | | | 代理 | 支持正向代理 | | | ☁️云打印 | 默认开启远程访问 | | 🍉此文档内容针对当前最新版本进行说明并非适用于所有版本。可前往releases查看版本对应说明。 ## 2.相关文档 | 相关文档 | | ------------------------------------------------------------ | | [🎞️使用视频](https://www.bilibili.com/video/BV19sRfYAEXW) | | [使用文档](https://blog.csdn.net/qq_27185879/article/details/138338933) | | [端口号修改](https://blog.csdn.net/qq_27185879/article/details/150267674) | | [代理使用场景](https://blog.csdn.net/qq_27185879/article/details/150269421) | | [打印服务切换](https://blog.csdn.net/qq_27185879/article/details/150337701) | | [中文乱码解决方案](https://blog.csdn.net/qq_27185879/article/details/150339143) | ## 2.安装包 releases中仅提供最新版本的安装程序 # 二、API说明 | 端口号 | 2024 | | :----: | :--: | ## 入参说明 ### 1.paperSize 缺省时,按客户端打印机设置 | 参数值 | 说明 | | :-------: | :--------------: | | A | A 尺寸。 | | B | B 尺寸。 | | C | C 尺寸。 | | D | D 尺寸。 | | E | E 尺寸。 | | EXECUTIVE | executive 尺寸。 | | FOLIO | folio 尺寸。 | | INVOICE | invoice 尺寸。 | | ISO_A0 | A0 尺寸。 | | ISO_A1 | A1 尺寸。 | | ISO_A10 | A10 尺寸。 | | ISO_A2 | A2 尺寸。 | | ISO_A3 | A3 尺寸。 | | ISO_A4 | A4 尺寸。 | | ISO_A5 | A5 尺寸。 | | ISO_A6 | A6 尺寸。 | | ISO_A7 | A7 尺寸。 | | ISO_A8 | A8 尺寸。 | | ISO_A9 | A9 尺寸。 | ### 2.type | 参数值 | 说明 | | :----: | :--------: | | PDF | PDF打印 | | IMG | 图片打印 | | TEXT | 纯文本打印 | | HTML | html打印 | ### 3.source | 参数值 | 说明 | | :----: | :----------: | | text | 纯文本 | | path | 本地文件地址 | | url | 网络地址 | | blob | 文件流 | ### 4.direction 缺省时,按客户端打印机设置 | 参数值 | 说明 | | ----------------- | --------------------------------------------- | | PORTRAIT | 默认,不做任何处理 | | LANDSCAPE | 将要描绘的打印流页旋转 +90 度(即逆时针方向) | | REVERSE_LANDSCAPE | 将要描绘的打印流页旋转 -90 度(即顺时针方向) | | REVERSE_PORTRAIT | 将要描绘的打印流页旋转 180 度 | ### 5.其它 type所支持的source打印类型 | | PDF | IMG | TEXT | HTML | | ---- | ---- | ---- | -----| ---- | | text | | | | | | path | ✅ | ✅ | | | | url | ✅ | ✅ | | | | blob | ✅ | ✅ | | | ## 1.服务连接 更详细的打印过程信息主要此服务响应【非必要操作,可忽略此操作,直接调用打印接口】
ws://127.0.0.1:2024/print
🍎返回信息 ```json {"code":0,"msg":"操作成功","data":"0"} ``` data为sessionId,用于数据通信。 ## 2.打印 ### 1.打印单个文件 | POST | /print/single | | ---- | ------------- | 🍎参数说明: | 参数 | 类型 | 必填 | 说明 | 示例 | | :-------- | ------- | ------------------------- | :-----------------------------------------------: | -------- | | sessionId | String | 否 | sessionId,用于详细的打印消息通信 | 0 | | copies | Integer | 否 | 打印份数。缺省时为1 | 1 | | paperSize | String | 否 | 纸张尺寸,缺省时,为客户机打印机设置 | ISO_A4 | | type | String | | 打印类型 | PDF | | source | String | | 打印文档来源 | blob | | content | String | 否 | 当source非blob时,此值必填 | | | file | blob | 否 | 当source为blob时,此值必填 | | | direction | String | 否 | 打印方向,缺省时为客户机打印机设置 | PORTRAIT | 🍏示例数据: ### FORM传值!!! ```json { "sessionId": "0", "copies": 1, "paperSize": "ISO_A4", "type": "PDF", "source": "url", "content": "http://127.0.0.1/print.pdf", "direction": "PORTRAIT" } ``` ### 2.取消打印作业(v3已移除) 如果没有正在进行的打印作业,则此调用不执行任何操作。 | GET | /print/cancel | | ---- | ------------- | ### 如果对你有帮助。请给个免费的⭐️start吧 # 三、其它 ## 1.开机自启 支持一键开机自启功能。失败的话会有提示信息 ![设置失败](https://foruda.gitee.com/images/1734428147313290887/dc574a61_1479216.png "image-20240514163812433.png") 一般把安全管家或者杀毒软件关了即可开启成功。 (ps:`感兴趣的可自行修改代码绕过安全权限检测`) 🍉手动设置: 1.Win+R .输入regedit,打开注册表 ![注册表设置](https://foruda.gitee.com/images/1734428344365903317/aece6747_1479216.png "image-20240514164437106.png") 2.打开 ``` \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ``` 然后设置相应值即可。 ## 2.端口设置 ![输入图片说明](https://foruda.gitee.com/images/1753342165828819357/b282a446_1479216.png "屏幕截图") 设置服务的端口号,默认(缺省时)端口号为2024,下次启动生效!!! # 更新日志 >JPrint V3.1.2(2025-07-24)
>1.完善【图片】文件打印(未完全验证。如有问题请Issues)
>2.追加【服务端口】设置(重启生效)
>3.优化代理,忽略浏览器的默认访问图标行为
>JPrint V3.1.1(2025-01-14)
>1.UI升级焕新
>2.托盘精简
>3.追加代理设置
>4.追加安装模式选择
>JPrint V3.1.0(2024-12-17)
>1.修复已知bug
>2.代码重构,策略加工厂模式管理分配打印服务
>3.接口升级,支持文件打印方向、纸张大小、设置
>4.支持blob、path、url、text打印来源
>5.异步打印
>6.追加文本、图片、HTML打印入口
>7.取消接口去除
>8.窗口显示打印列表,打印服务切换
>9.北洋条码打印示例(相关jar包请从官网下载)
>JPrint V2.0.0(2024-05-14)
>1.添加ws协议,用于返回消息通信
>2.更改打印接口
>3.追加取消打印接口
>4.追加一键开机自启功能
>5.追加打印份数设置
>JPrint V1.1.0(2024-04-30 )
>1.安装程序汉化
>2.安装程序体积精简1/3
>3.托盘美化
>4.程序重命名为JPrint
>javaPrint 1.0.0(2024-04-25)
>1.支持web端调用
>2.支持本地PDF和网络PDF的打印。
>3.已做托盘,可后台运行
>接口相关
>1.端口:2024
>2.Post请求
>通过本地地址:http://127.0.0.1:2024/print/printOneByPath
>通过网络地址:http://127.0.0.1:2024/print/printOneByUrl
>请求体:
>{"path":127.0.0.1/demo.pdf}