数据库
配置数据库连接(修改application-dev.yml
文件)
url: jdbc:mysql://127.0.0.1:3306/fastposter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: fastposter
password: 123456
导入数据库脚本 db/fastposter-pro.sql
mysql -u fastposter -p"123456" --default-character-set=utf8mb4 fastposter < db/fastposter-pro.sql
开发测试 启动后端
运行FastposterApplication
修改展示域名application.yml
对应uri-prefix
fastposter:
uri-prefix: https://xxxxxxx
开发测试 前端打包
推荐使用node v14+
安装依赖npm i
本地预览npm run serve
打包npm run build
打包后将dist目录中数据替换server/src/main/resources/static
中文件
自定义字体
在fonts
目录下新建一个字体目录,将字体文件拷贝到改目录下,并执行sql脚本,增加对应的字体。
推荐使用woff格式字体,其他格式,占用空间比较大 不同格式占用空间大小ttf > otf > woff
INSERT INTO `fp_fonts` (`name`, `code`) VALUES ('阿里巴巴普惠体-Light', '738012dc4ddedcea.woff');
单节点运行
如果需要使用生产环境prod配置,请添加-Dspring.profiles.active=prod
参数即可
java -jar -server \
-Xms512m -Xmx512m \
-Dfile.encoding=UTF-8 \
-XX:+HeapDumpOnOutOfMemoryError \
fastposter-pro.jar
如果需要后台运行,使用如下脚本
nohup nice java -jar -server \
-Xms512m -Xmx512m \
-Dfile.encoding=UTF-8 \
-XX:+HeapDumpOnOutOfMemoryError \
fastposter-pro.jar > fastposter-pro.log 2>&1 &
多节点
启动多个fastposter服务,需要配置一下端口,通过-Dserver.port=5002
参数即可
启动第一个节点
nohup nice java -jar -server \
-Xms512m -Xmx512m \
-Dserver.port=5001 \
-Dfile.encoding=UTF-8 \
-XX:+HeapDumpOnOutOfMemoryError \
fastposter-pro.jar > fastposter-pro-5001.log 2>&1 &
启动第二个节点
nohup nice java -jar -server \
-Xms512m -Xmx512m \
-Dserver.port=5002 \
-Dfile.encoding=UTF-8 \
-XX:+HeapDumpOnOutOfMemoryError \
fastposter-pro.jar > fastposter-pro-5002.log 2>&1 &
负载均衡可使用nginx的upstream,示例
server {
listen 80;
server_name sitename.com;
access_log /var/log/nginx/sitename.com.log;
client_max_body_size 30m;
upstream fastposters {
server 127.0.0.1:5001;
server 127.0.0.1:5002;
}
location / {
index index.html ;
proxy_pass http://fastposters;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
}
元数据JSON
{
"h": 1334, // 高度
"w": 750, // 宽度
"id": 19, // ID
"bgc": "#fafbfc", // 背景色
"use": "bgUrl", // 使用背景图还是背景色
"name": "分享海报-副本", // 海报名称
"type": "jpeg", // 类型 可选值:(jpeg|png|webp)
"bgUrl": "store/upload/20220309/f9fc2046806797ac.png", // 背景图地址
"items": [ // 海报元素列表
{
"c": "#000000", // 前景色
"h": 240, // 高度
"p": 0, // 二维码宽度(预留)
"s": 30, // 大小
"t": "qrcode", // 类型 可选值:(qrcode|text|img|avatar)
"v": "https://poster.prodapi.cn/pro/", // 参数默认值
"w": 240, // 宽度
"x": 258, // 位置:x
"y": 916, // 位置:y
"z": 1, // 图层(忽略)
"fn": "", // 字体
"st": 0, // 忽略
"vd": "qrcode", // 参数名称
"bgc": "#ffffff", // 背景色
"lock": false, // 是否锁定(忽略)
"name": "二维码", // 参数备注(忽略)
"uuid": "DMofujOF", // UUID(忽略)
"active": false // 是否激活(忽略)
}
],
"scale": 0.5, // 编辑器缩放比(预览可忽略)
"preview": "store/preview/20220316/2054a4052bafc8c6.jpeg", // 预览地址 (忽略)
"quality": 80 // 图像质量, 只有jpeg,webp格式时生效
}
获取海报
调用服务端的/api/link
接口,即可返回海报的访问地址
返回海报地址
{
"code": 0,
"msg": "success",
"data": {
"url": "http://127.0.0.1:5000/v/e670a0b84209a7d9"
}
}
目前海报支持的图片格式有jpeg
png
webp
,默认使用的是jpeg
在一些使用场景中,需要服务端直接返回图片的base64编码,只需将图片后缀改成.b64
即可,例:http://127.0.0.1:5000/v/e670a0b84209a7d9.b64
在一些使用场景中(如授权书、奖状、证书的生成)需要能够支持 pdf 格式,只需将图片后缀改成.pdf即可,例:http://127.0.0.1:5000/v/e670a0b84209a7d9.pdf