利用OnlyOffice实现公文编辑器组件的Word转PDF功能
由 0x400 发布于
- 已安装并配置好OnlyOffice集成应用。
## 实现步骤
### 服务管理中创建接口 `word2pdfByOnlyoffice`
```javascript
/********************
this.requestText//请求正文
this.currentPerson//当前用户
this.response//响应对象。通过this.response.setBody(data)设置响应内容
this.org; //组织快速访问方法
********************/
var requestJson = JSON.parse(requestText);
var fun = requestJson.fun;
print("fun:" + 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.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(){
try{
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 outputtype = "pdf";
var filetype = "docx";
var key = data.id;
var params = {
"async": false,
"filetype": filetype,
"key": key,
"outputtype": outputtype,
"password": "",
"title": filename + "." + outputtype,
"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";
}
}catch(e){
e.printStackTrace();
result.type = "error";
result.message = "失败";
result.data = e.name + ": " + e.message
}
}
this[fun]();
this.response.setBody(result,"application/json");
```
### 调用方法
```javascript
o2.Actions.load("x_program_center").InvokeAction.execute("word2pdfByOnlyoffice", {
"fun": "transfor",
"data": {
"id": "bad15942-92d0-46ac-ae9c-a49df05921b9",//附件标识
"filename": "test"//返回的附件名称
}
},function (json) {
}.bind(this));
```
### 返回结果示例
```json
{
"type": "success",
"data": "http://onlyofficeenterprise.o2oa.net/cache/files/data/conv_bad15942-92d0-46ac-ae9c-a49df05921b9_513/output.pdf/test.pdf?md5=VqKZC18BeE6e_cYfW9pOJQ&expires=1743045361&shardkey=-2040923637&filename=test.pdf",
"message": "success"
}
```
评论