用onlyoffice给流程中的office文件下载加水印的方法
由 0x400 发布于
安装onlyoffice集成应用
## 服务管理中添加个接口
```
var requestJson = JSON.parse(requestText);
var fun = requestJson.fun;
var data = requestJson.data;
var Config = Java.type("com.x.base.core.project.config.Config");
var requestHost = this.request.getRequestURL().toString().split("x_program_center")[0];
var result = {
}
var xtoken = encodeURI(this.currentPerson.token);
if (typeof (requestJson) === "string") {
requestJson = JSON.parse(requestJson);
}
this.generateSimpleUUID = function() {
const characters = '0123456789abcdef';
let uuid = '';
for (let i = 0; i < 36; i++) {
if (i === 8 || i === 13 || i === 18 || i === 23) {
uuid += '-';
} else if (i === 14) {
uuid += '4';
} else if (i === 19) {
uuid += characters[(Math.random() * 4 | 0) + 8];
} else {
uuid += characters[Math.floor(Math.random() * 16)];
}
}
return uuid;
}
this.getDocserviceConverter = function () {
var docserviceConverter;
var action = this.Actions.load("x_onlyofficefile_assemble_control");
action.OnlyofficeConfigAction.getConfig(function (json) {
docserviceConverter = json.data.docserviceConverter;
}.bind(this));
return docserviceConverter;
}
this.getToken = function (json) {
var token;
var data = {
"tokenText": JSON.stringify(json)
}
var action = this.Actions.load("x_onlyofficefile_assemble_control");
action.OnlyofficeAction.token(data, function (json) {
token = json.data.value;
}.bind(this));
return token;
}
this.transfor = function () {
var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair');
var ArrayList = Java.type('java.util.ArrayList');
var HttpConnection = Java.type("com.x.base.core.project.connection.HttpConnection");
var heads = new ArrayList();
var p1 = new NameValuePair('Content-Type', 'application/json; charset=utf-8');
heads.add(p1);
var p2 = new NameValuePair('Accept', 'application/json');
heads.add(p2);
var url = this.getDocserviceConverter(); //请求地址
var id = data.id;
var filename = data.filename;
var watermark = data.watermark;
var outputtype = "pdf";
var filetype = "docx";
var key = this.generateSimpleUUID();
var params = {
"async": false,
"filetype": filetype,
"key": key,
"outputtype": outputtype,
"password": "",
"title": filename + "." + outputtype,
"watermark": {
"align": 1,
"fill": [255, 255, 255],
"height": 100,
"margins": [10, 10, 10, 10],
"paragraphs": [
{
"align": 2,
"fill": [255, 255, 255],
"linespacing": 1,
"runs": [
{
"bold": true,
"italic": false,
"fill": [255, 0, 0],
"font-family": "Arial",
"font-size": 40,
"strikeout": false,
"text": watermark,
"underline": false
},
{
"text": "<%br%>"
}
]
}
],
"rotate": -45,
"transparent": 0.1,
"type": "rect",
"stroke-width": 0,
"stroke": [0, 0, 255],
"width": 100
}
,
"url": requestHost + "x_processplatform_assemble_surface/jaxrs/attachment/download/" + id + "?" + Config.person().getTokenName() + "=" + xtoken
}
params.token = this.getToken(params);
print(params.token)
var row = {
"filename": filename,
"fileid": id,
"filetype": filetype,
"filekey": key,
"outputtype": outputtype,
"result": "",
"fileurl": "",
"personname": this.currentPerson.name,
"personid": this.currentPerson.unique,
"convert": false,
"percent": 0
}
var docContent = JSON.stringify(params);
var resp = HttpConnection.postAsString(url, heads, docContent); // 发起请求
var respObj = JSON.parse(resp);
print(JSON.stringify(respObj))
if (respObj.error) {
result.type = "error";
result.message = "失败";
result.data = respObj.error;
row.status = "error";
row.result = respObj.error;
} else {
result.type = "success";
result.data = respObj.fileUrl;
result.message = "success";
}
}
this[fun]();
this.response.setBody(result, "application/json");
```
## 调用接口
```json
{
"fun" : "transfor",
"data" : {
"id" : "bad15942-92d0-46ac-ae9c-a49df05921b9",
"watermark" : "内部资料",
"filename" : "test333"
}
}
```
id 为流程中要转换的word文件
## 转换效果

评论