onlyoffice具有文档转换的功能,就是你给一个文档的地址,以及一些参数,post给document server,它会转换成你要的,然后返回一个文件地址,你收到这个地址,把文件下载下来保存,提供用户下载。

它官网也讲的比较清楚,这个没有历史版本难度大,最新的API里说可以支持返回json格式,前提是post发生参数的时候,要设定head参数,可惜beego没有试验成功,反正xml用golang也可以很方便解析出struct,不去折腾了。

测试代码如下:

//文档格式转换
type Conversionsend struct {Async      bool   `json:"async"`Filetype   string `json:"filetype"`Key        string `json:"key"`Outputtype string `json:"async"`Thumbnail  Nail   `json:"thumbnail"`Title      string `json:"title"`Url        string `json:"url"`
}type Nail struct {Aspect int  `json:"aspect"`First  bool `json:"first"`Height int  `json:"height"`Width  int  `json:"width"`
}
type Conversionresponse struct {EndConvert bool   `json:"endconvert"`FileUrl    string `json:"fileurl"`Percent    int    `json:"percent"`
}// @Title post conversion doc
// @Description post doc to onlyoffice conversion
// @Success 200 {object} models.AddArticle
// @Failure 400 Invalid page supplied
// @Failure 404 articl not found
// @router /conversion [post]
func (c *OnlyController) Conversion() {
var nail Nailnail.Aspect = 0nail.First = truenail.Height = 850nail.Width = 600var conversionsend Conversionsendconversionsend.Async = falseconversionsend.Filetype = "docx"conversionsend.Key = "Khirz6zTPdfd7"conversionsend.Outputtype = "pdf"conversionsend.Thumbnail = nailconversionsend.Title = "Example Document Title.docx"conversionsend.Url = "http://192.168.99.1/attachment/onlyoffice/111历史版本试验v4.docx"req := httplib.Post("http://192.168.99.100:9000/convertservice.ashx")// req.Header("contentType", "application/json")req.Header("Content-Type", "application/json")//   bt,err:=ioutil.ReadFile("hello.txt")// if err!=nil{//     log.Fatal("read file err:",err)// }beego.Info(conversionsend)b, err := json.Marshal(conversionsend)req.Body(string(b))beego.Info(string(b))var conversionresponse Conversionresponsejsonstring, err := req.String()if err != nil {beego.Error(err)} else {//json字符串解析到结构体,以便进行追加beego.Info(jsonstring)// err = json.Unmarshal([]byte(jsonstring), &conversionresponse)err = xml.Unmarshal([]byte(jsonstring), &conversionresponse)//    fmt.Println(s)if err != nil {beego.Error(err)}resp, err := http.Get(conversionresponse.FileUrl)if err != nil {beego.Error(err)}beego.Info(resp)body, err := ioutil.ReadAll(resp.Body)if err != nil {beego.Error(err)}defer resp.Body.Close()if err != nil {beego.Error(err)}f, err := os.Create("./attachment/onlyoffice/" + "Example Document Title.pdf")if err != nil {beego.Error(err)}defer f.Close()_, err = f.Write(body)// _, err = f.WriteString(str)// _, err = io.Copy(body, f)if err != nil {beego.Error(err)}filePath := "attachment/onlyoffice/Example Document Title.pdf"c.Ctx.Output.Download(filePath) //这个能保证下载文件名称正确c.Data["json"] = conversionresponsec.ServeJSON()}
}

ONLYOFFICE文档转换开发技术相关推荐

  1. 好程序员技术文档HTML5开发中的javascript闭包

    好程序员技术文档HTML5开发中的javascript闭包,事实上,通过使用闭包,我们可以做很多事情.比如模拟面向对象的代码风格;更优雅,更简洁的表达出代码;在某些方面提升代码的执行效率,同时避免对命 ...

  2. Word转PDF功能实现,文档转换工具通过PHP开发

    最近比较火的文档转换工具相信大家都听说过,但是怎么实现呢? 通过该接口可以将图片.word.excel.ppt等文档转换为pdf格式的文件 1.可以将Office(Word,Excel,PowerPo ...

  3. 智能媒体管理产品文档转换/预览功能介绍(4)--快速搭建

    摘要: 智能媒体管理提供了 Cloud Native 架构的文档转换/预览服务,本文介绍快速搭建的示例,让您用 DIY 的体验方式实现文档预览功能. 一.导语 智能媒体管理 提供了 Cloud Nat ...

  4. 如何将CSDN文档转换成IPYNB格式的文档?

    简 介: ※IPYNB格式的文档可以很方便在Jupyter Notebook环境内方便研究人员对于算法.数据进行操作.Markdown文本则便于形成各种网络文档.本文介绍了利用notedown实现将C ...

  5. 文档转换、在线预览的几种方式以及推荐

    互联网时代的繁荣期,在线教育犹如三国中的巴蜀之地,无论是各大巨头还是中小软件.都希望在此领域分的一口肥肉. 其中,关于文档转换.一直是开发在线教育软件让人头痛的事. 在这先说一下文档转换以及预览的几种 ...

  6. 如何在 Ubuntu 上安装 ONLYOFFICE 文档 v7.2

    作者:Vincent Young 使用社区版,您可以在本地服务器上安装 ONLYOFFICE 文档,并将在线编辑器与 ONLYOFFICE 协作平台或其他热门系统集成在一起. ONLYOFFICE文档 ...

  7. 如何利用 nbconvert将 IPYNB文档转换 Markdown文档?

    简 介: IPYNB文件是现在基于IPython开发工程人员记录和分析处理算法和数据记录文档.将该文档转换成其它格式可以方便面进行思想共享,工作汇报等.利用 nbconvert可以很方便将ipynb的 ...

  8. 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势

    ​[摘要]程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于 ...

  9. 在线文档有哪些技术难点

    实现一个多人协作在线文档有哪些技术难点? 想知道实现类似于语雀.石墨文档或腾讯文档等产品的难点在哪些地方? 大体上说,多人协作的在线文档在技术上主要分成三大块:"在线"." ...

  10. 机房收费系统个人重构版:透过文档谈文档驱动开发

    [背景] 机房收费系统个人重构已接近尾声,在最后阶段自己去补文档以及其中涉及到的图!经过将近一周的奋战将其完善,并最终通过师父的验收.透过这次机房重构写文档和画图,自己感触颇深,在此与大家共享. [文 ...

最新文章

  1. AI芯片的过去、现在与未来
  2. 解析jsonarra_使用JSONReader或JSONObject / JSONArray解析JSON数据
  3. java question_Core Java Question List No3
  4. Linux常用命令-入门
  5. java中foreach怎么访问,Java对象阵列Foreach方法访问
  6. 趣学python编程第六章答案_Python核心编程-第六章-习题
  7. LeetCode 126. 单词接龙 II(图的BFS)
  8. python编程计算器_Python编程之计算器/字符及界面
  9. 视频监控、直播——基于opencv,libx264,live555的RTSP流媒体服务器 (zc301P摄像头)By Chain_Gank...
  10. 【面试题总结】2、反转字符串的几种形式
  11. Lua中的聊天屏蔽敏感词汇
  12. 极客大学架构师训练营 系统架构 分布式数据库 数据分片 业务分库 CAP ACID BASE 第11课 听课总结
  13. python程序开发入门教程_史上最全Python快速入门教程,满满都是干货
  14. Manjaro安装scrt8.3 201912
  15. FileHandler文件处理
  16. 计算机标准差平方差怎么按,数学标准差公式
  17. 【服务器数据恢复】IBM某型号服务器VMware虚拟机误删除的数据恢复案例
  18. Deepin20-R7000开启显示器扩展
  19. Linux环境下二进制安装PostgreSql
  20. 用计算机画小鸡,水墨电脑画--丝瓜小鸡图

热门文章

  1. web项目js调用斑马打印机打印二维码
  2. 轻松掌握Mybatis(上)
  3. 分别使用while、do-while和for循环输出1-1000中含有7或者7倍数的整数之和及个数-详解
  4. 服务器虚拟化百科,硬件虚拟化 硬件虚拟化的意思解释|硬件虚拟化是什么意思 -我酷百科...
  5. 解决flex布局的space-evenly兼容性问题
  6. linux pvdisplay PE,linux中的pvmove,pvremove,pvs,pvscan
  7. springboot疫情防控下基于微信小程序的食堂订餐系统毕业设计源码261620
  8. codewars Kata——Persistent Bugger问题
  9. 一篇文章搞定Redis Stream
  10. Django学习之视图层