在第三方网站、内网信息系统嵌入"打印精灵"标签编辑器
“打印精灵”提供了一组API, 可以将标签设计器(SpiritDesigner)嵌入到第三方网站或内网信息系统中,以极低的成本为第三方提供完善的标签编辑、打印功能。
使用条件:: 嵌入”打印精灵"标签编辑器,需要一个企业账号(互联网模式)或安装SpiritCenter(内网模式)。两种模式开发方式完全相同,仅服务器地址有差别, 互联网模式为打印精灵官网地址: https://www.printspirit.cn, 内网模式为SpiritCenter安装IP地址( http://安装IP:9011 或 https://安装IP:9443)
体验
体验嵌入第三方网站效果,请下载第三方网站模拟程序。该程序在本机建立一个模拟网站, 通过打印精灵的第三方API, 实现标签的编辑、打印等功能。 同时,该程序提供了源码, 包括GO, PHP语言的范例程序, 供嵌入打印精灵时参考。 详见模拟第三方网站程序的使用。
下载模拟程序 ,该程序为绿色软件,可以直接执行.
打开windows 的命令行(CMD, PowerShell等)。
cd PATH/to/下载文件保存目录
.\third_site.exe -p 8000 -ip SpiritCenter安装IP地址,
- -p 参数指定web端口,缺省为8000
- -ip 指定SpiritCenter安装IP地址, 如果不指定, 表示使用打印精灵官网作为编辑服务器
然后使用http://127.0.0.1:8000访问, 将列出标签, 并可选择编辑,新增,删除标签.
原理
对于在线企业版用户,SpiritCenter用户,“打印精灵”提供了如下几个API:
- /api/get-access-token 获取访问token, 调用下面的API前需要先调用该API。获取的token可以缓存使用,有效期为1个小时。
- /api/new-label 创建一个新的一个空白标签, 或者复制一个已有标签. 返回新创建标签的ID, 可以保存ID到数据库中, 并随时通过该ID编辑标签。
- /api/del-label 删除标签
- /api/get-label-list 获取标签列表
- /api/get-label-content 获取标签内容
- /third-edit 编辑标签
第三方网站可以通过 get-label-list API 获取本企业的全部标签列表,调用时需要提供一个附加参数subclass,为自定的分类标识,最常见的用途是用来区分该企业下的最终用户, 方便SaaS软件的开发。有了这几个API, 第三方企业网站可以按自己的需要分类列出各种标签模板, 进一步实现选择打印模板,显示预览,编辑等。
第三方网站如果需要编辑标签, 跳转到(或内嵌到IFRAME中)https://www.printspirit.cn/third-edit?token=token&subclass=subclass&tpid=tpid, 即可打开编辑编辑。需要三个参数: subclass / tpid , 如果不设置tpid,表示新建。
第三方网站可以用new-label先创建标签,获取新建标签的ID, 然后再编辑。这样可以将标签id保存在系统中,用于后续的打印、编辑等操作.
第三方网站如果需要在自己的网站保存标签数据, 可以使用 get-label-content API 获取标签的内容。注意:多数情况下无需在本地保存标签数据。
第三方网站如果需要在自己的网站预览标签,可以使用<img src="https://www.printspirit.cn/utils/thumb?id=tp_id"/>
(打印精灵官网) 或 <img src="http://IP:9011/utils/thumb?id=tp_id"/>
(SpiritCenter)
注意: 互联网模式,请在“打印精灵”注册帐号后,联系客户开通API功能。测试时,可以使用third_test帐号,密码也是third_test。
开发工具
为方便嵌入程序开发, 我们提供了开发示例及SDK:
- GO-SDK: www.github.com/printspirit/gosdk
- 示例程序: www.github.com/printspirit/spirit_example 包括GO, PHP版本
GO-SDK
go get github.com/printspirit/gosdk
使用site = gosdk.NewThirdApp(HOST_URL, PASS, WORD)
创建实例, 然后调用API
func NewThirdApp(host, uid, pass string) *ThirdApp
func (app *ThirdApp) DelLabel(id string) error
func (app *ThirdApp) GetEditUrl(subclass, tpid string) (string, error)
func (app *ThirdApp) GetList(subclass string) (*[]TpInfo, error)
func (app *ThirdApp) NewLabel(name string, width, height, dpi int, subclass, refid string) (string, error)
示例源码
clone gihub 源码,可以在本地修改、编译运行程序。
git clone https://www.github.com/printspirit/spirit_example
程序在third_site目录下,分为GO, PHP 两个版本
GO:
cd third_site\go
go build
.\third_site.exe -p 8000 -ip ip_of_spiritcenter
PHP:
使用php5.4以上环境的内置web服务。
cd third_site\php
php -S localhost:8000 main.php
对PHP程序的说明,请查看
API 详解
get-access-token
获取访问token, 调用下面的API前需要先调用该API。获取的token可以缓存使用,有效期为1个小时。
http[s][:port]/服务器IP地址/api/get-access-token?userid=XXX&passwd=XXXX
服务器访问URL:
- 在线企业版 https://www.printspirit.cn
- SpiritCenter http://安装IP:9011
下同。
参数 | 说明 | 例子 |
---|---|---|
userid | 用户名 | |
passwd | 密码 |
返回:
{
"rc":"OK",
"token":"5c6L3nGjDJlaGVSi_PJwVZR8..............",
"expirt":3600
}
rc为OK时,返回token, 以及过期时间。
new-label
http[s][:port]/服务器IP地址/api/new-label?token=XXXXX&subclass=XXX...
参数 | 说明 | 例子 |
---|---|---|
token | 通过get-access-token获取 | |
subclass | 子分类 | |
width | 标签宽 单位0.1mm | |
height | 标签高 单位0.1mm | |
dpi | 缺省分辨率 dot/英寸 单位0.1mm | |
name | 标签名 | |
refid | 以refid指定的标签为模板创建新标签 | 如果无该参数, 创建空标签 |
{
"rc":"OK"
"id": 3120f21d-e33c-41ed-8f99-3e259a12f6cd
}
成功时返回标签id, 可以用于进行编辑等操作
del-label
删除标签
http[s][:port]/服务器IP地址/api/del-label?token=XXXXX&subclass=XXX...
参数 | 说明 | 例子 |
---|---|---|
token | 通过get-access-token获取 | |
id | 标签ID |
get-label-list
http[s][:port]/服务器IP地址/api/get-label-list?token=XXXXX&subclass=XXX
参数 | 说明 | 例子 |
---|---|---|
token | 通过get-access-token获取的 | |
subclass | 子分类 | 设备用标签 |
返回:
{
"rc":"OK"
"data":[{
"id": "0a12953e-1379-4105-ac8a-e4cbde51c0fc",
"name":"第三方接口测试",
"memo":"第三方接口测试-模板1-另存",
"width":1200,
"height":800,
"subclass":"2",
"private":0,
"create_time":"2021-02-14T13:47:58Z",
"modify_time":"2021-02-14T13:48:50Z"
}]
}
get-label-content
获取标签的内容。
http[s][:port]/服务器IP地址/api/get-label-content?token=XXX&tpid=TPID
参数 | 说明 | 例子 |
---|---|---|
token | 通过get-access-token获取的 | |
tpid | 需要获取内容的标签ID |
返回:
{
"rc":"OK",
"tpinfo":{
"id":"0a12953e-1379-4105-ac8a-e4cbde51c0fc",
"name":"第三方接口测试",
"memo":"第三方接口测试-模板1-另存",
"dpi":203,
"width":1200,
"height":800,
"subclass":"2",
"create_time":"2021-02-14T13:47:58Z",
"modify_time":"2021-02-14T13:48:50Z"
},
"data":[
{...},
{...}
],
}
third-edit
将跳转到打印精灵网站或SpiritCenter服务器,开始编辑
http[s][:port]/服务器IP地址/third-edit?subclass=XXXX&tpid=XXXX&token=XXXX
参数 | 说明 | 例子 |
---|---|---|
token | 通过get-access-token获取的 | |
subclass | 子分类 | 设备用标签 |
tpid | 模板id | 如果为空,表示新建 |