# 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**: 36
- **Forks**: 12
- **Created**: 2024-04-25
- **Last Updated**: 2026-01-29
## Categories & Tags
**Categories**: utils
**Tags**: None
## README
@[TOC]()
# 一、项目介绍
## 1.功能说明
| 功能 | 说明 | 截图 |
| -------- | -------------------------------------- | ------------------------------------------------------------ |
| 打印 | http协议,打印机服务自由切换 |  |
| 开机自启 | 支持开机自启 |  |
| 端口设置 | 支持服务端口自由配置,不再担心端口冲突 |  |
| 托盘 | 支持托盘,后台运行 | |
| 换肤 | 换肤功能,支持自定义肤色 | |
| 代理 | 支持正向代理 | |
| ☁️云打印 | 默认开启远程访问 | |
🍉此文档内容针对当前最新版本进行说明并非适用于所有版本。可前往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,用于数据通信。
🍎如果需要获取打印过程中的打印机状态。通过此协议获取,包含不限于以下状态
| code | message |
| ------ | ------------ |
| 200000 | 开始准备 |
| 200001 | 开始打印 |
| 200002 | 打印结束 |
| 200003 | 打印异常 |
| 200004 | 数据传输完成 |
| 200005 | 需要人工干预 |
| 200006 | 打印失败 |
| 200007 | 打印取消 |
## 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 |
| printServer | String | 否 | 指定打印机打印,缺省时使用控件选中的打印服务 | |
🍏示例数据:
### FORM传值!!!
```json
{
"sessionId": "0",
"copies": 1,
"paperSize": "ISO_A4",
"type": "PDF",
"source": "url",
"content": "http://127.0.0.1/print.pdf",
"direction": "PORTRAIT"
}
```
##
### 2.获取打印机列表
非必要接口
| Get | /print/getPrintServers |
| ---- | ---------------------- |
🍏返回示例:
```json
{
"code": 0,
"msg": "操作成功",
"data": [
"OneNote for Windows 10",
"OneNote (Desktop)",
"NPIB81E3D (HP LaserJet Tank 1020w)",
"Microsoft XPS Document Writer",
"Microsoft Print to PDF",
"Fax",
"Adobe PDF"
]
}
```
### 3.取消打印作业(v3已移除)
如果没有正在进行的打印作业,则此调用不执行任何操作。
| GET | /print/cancel |
| ---- | ------------- |
### 如果对你有帮助。请给个免费的⭐️start吧
# 三、其它
## 1.开机自启
支持一键开机自启功能。失败的话会有提示信息

一般把安全管家或者杀毒软件关了即可开启成功。
(ps:`感兴趣的可自行修改代码绕过安全权限检测`)
🍉手动设置:
1.Win+R .输入regedit,打开注册表

2.打开
```
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
```
然后设置相应值即可。
## 2.端口设置

设置服务的端口号,默认(缺省时)端口号为2024,下次启动生效!!!
# 更新日志
>JPrint V3.1.3(2025-12-31)
>1.[新增]-获取客户机打印机列表接口
>2.[优化]-打印接口追加printServer字段,用于指定打印机进行打印
>3.[优化]-添加更详细的打印机状态(通过ws协议获取相关信息)
>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}