这段时间公司要做一个把上传的ppt文件转换成为一组jpg文件的功能,我查了查资料,发现可以使用libreoffice先把ppt转成pdf,然后再用imagemagick把pdf转换成为jpg来实现,在机子上测试了一下,的确可行,但是服务搭建起来挺麻烦的,还得考虑解决libreoffice字体的问题。后来翻了翻七牛的服务,正好发现他们提供了这样的服务(其实是属于亿方云提供的,不过接入了七牛),而且正好我们的上传数据也在七牛上,这倒是省事儿了,直接决定了使用该服务。

怎么开启这个服务就不在这里说了,文档上写的也算明白,可能会令人感到困惑的地方是,这个服务要怎么调用的问题了。现在回过头来看,其实调用的方法很直观,很容易。不过当时我对七牛那里的“预转持久化处理”和“持久化数据处理”是完全没有概念的,看到文档上给出的调用方式完全是束手无策,所以还是记录在这里以后忘了可以来查。

估计在开发的时候大家都会使用七牛提供的SDK,所以这里就假设大家已经弄到了七牛的SDK了,这里先说下“预转持久化处理”是一个什么样的东西吧,这里直接上代码可能更好理解一些,我用的是PHP开发的。

require 'qiniu/sdk/autoload.php'; //引入七牛SDK
use Qiniu\Auth; //引入要使用的类$accessKey = 'YOUR_ACCESSKEY'; //你的ACCESSKEY
$secretKey = 'YOUR_SECRETKEY'; //你的SECRETKEY
$bucket = 'BUCKET_NAME';  //你要上传到的那个储存空间的名字
$auth = new Auth($accessKey, $secretKey);
$policy = ['persistentOps' => 'yifangyun_preview/v2/format=jpg','persistentNotifyUrl' => 'YOUR_NOTIFY_URL'
];
$token = $auth->uploadToken($bucket, null, 7200, $policy);

以上差不多就是代码的全部了,最后我们获取到了一个token,然后拿着这个token去上传文件就行了,上传后的ppt文件就会自动转换成jpg文件,转换完成后,七牛那边就会把转换的结果通知给'persistentNotifyUrl'中填写的那个URL,这里我们还可以在$policy中加上'persistentPipeline'这个项目来指定私有的队列(Pipeline),如果不指定私有队列而是用默认的公有队列的话,可能要等上很久才能轮到你这个文件去转换,也就是说,$policy如果可能的话,最好变成这个样子:

$policy = ['persistentOps' => 'yifangyun_preview/v2/format=jpg','persistentNotifyUrl' => 'YOUR_NOTIFY_URL','persistentPipeline' => 'YOUR_PIPELINE_NAME'
];

可能大家还会比较关心一个问题就是七牛在转换完成后,到底给我填写的persistentNotifyUrl发送了什么数据,这里我把我收到的数据贴在这里,仅供参考:

    {"id": "z0.57c6a3927823de7b57af9380","pipeline": "1380310700.myline","code": 0,"desc": "The fop was completed successfully","reqid": "fjMAACOHKeiB2m8U","inputBucket": "sbin-media","inputKey": "o_1arfrhrfak9g1i1f16qkqb1ncc9.ppt","items": [{"cmd": "yifangyun_preview/v2/format=jpg","code": 0,"desc": "The fop was completed successfully","hash": "FlR93trssv4f236bwTLH-93Lsg6R","key": "o_1arfrhrfak9g1i1f16qkqb1ncc9.2.jpg","keys": ["o_1arfrhrfak9g1i1f16qkqb1ncc9.9.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.1.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.12.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.20.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.13.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.19.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.16.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.8.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.6.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.17.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.11.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.22.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.23.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.18.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.10.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.21.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.27.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.7.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.3.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.5.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.24.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.4.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.26.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.25.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.15.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.14.jpg","o_1arfrhrfak9g1i1f16qkqb1ncc9.2.jpg"],"returnOld": 0}]}

基本上我想要的东西都返回回来了,不过因为业务需要,我还是不能使用“预转持久化处理”这种方式的,我得“手动控制”转换的时间和条件,防止产生一些垃圾数据,所以“持久化数据处理”的方式对我来说更合适,至于什么是“持久化数据处理”的方式,还是直接贴代码吧。

require 'qiniu/sdk/autoload.php'; //引入七牛SDK
use Qiniu\Auth;
use Qiniu\Processing\PersistentFop; //引入要使用的类$accessKey = 'YOUR_ACCESSKEY'; //你的ACCESSKEY
$secretKey = 'YOUR_SECRETKEY'; //你的SECRETKEY
$bucket = 'BUCKET_NAME';  //你要上传到的那个储存空间的名字
$key = 'YOUR_FILE_KEY'; //就是你在上传后那个文件的名字,一般会在上传成功后返回
$auth = new Auth($accessKey, $secretKey);
$pfop = new PersistentFop($auth, $bucket, 'YOUR_PIPELINE_NAME', 'YOUR_NOTIFY_URL');
$fops = 'yifangyun_preview/v2/format=jpg';
$pfop->execute($key, $fops);

其实仔细看看的话,这种方式需要的参数和“预转持久化处理”所需要的参数差不多,只不过放的位置不太一样罢了,而且也没有获取token(引入的类中有没有干这事儿我还得再看看,至少这段代码中没有明显的token),所以可以在文件上传之后,再调用这段代码,然后等着七牛那边通知吧。

还有一点需要注意的就是只有存储区域为华东的储存空间才能使用这个文档转换服务,这个坑刚开始卡了我好久,再从头开始读文档的过程中才了解到这个问题。

其实在使用的过程中,还有一个坑是我想吐槽的地方,但是在看“预转持久化处理”和“持久化数据处理”这两个概念的时候,官方给的例子是这样的

 "persistentOps":"avthumb/mp4;avthumb/m3u8/noDomain/1/segtime/15/vb/440k",

让我以为这种命令必须是"参数1/值1/参数2/值2/参数3/值3"这样的格式,然而文档转换服务给出的请求方法是这样的

yifangyun_preview/v2/ext=<Ext>/action=<Action>/format=<DestFormat>/page_number=<PageNumber>

也就是说是"参数1=值1/参数2=值2/参数3=值3"这样的格式,我一度以为是不是这个文档给错了,然后还是按照"参数1/值1/参数2/值2/参数3/值3"这样的格式去请求,坑了不少时间。

转载于:https://my.oschina.net/shengxiashiren/blog/741370

使用七牛的文档转换服务将PPT转换为JPG相关推荐

  1. 文档转换 云服务器,文档转换服务

    文档转换服务(yifangyun_preview) 描述 文档转换服务(yifangyun_preview)能帮您把各种office文档转换为PDF格式,从而达到在各个浏览器上面预览PDF的效果. 本 ...

  2. 永中DCS文档转换服务其它产品对比

    一.利用DCOM配置直接操作Office文件 作用:读取文件内容,导出Html文件 优势:免费 劣势:1.服务器上必须安装Office软件 2.配置麻烦,正如微软所说,读取Office不是这么干的. ...

  3. (五)java项目中的文档转换案例实战——Word转换为PDF

    前言 由于在开发中需要适配不同的多端应用,在文件相关处理中也会存在相同的问题,需要将文档转换为不同的格式展示,本节我们主要通过一个小案例实现在java环境下实现Word2003(doc). Word2 ...

  4. 阿里云智能媒体服务 oss文档转换及预览

    本人 在工作中 也是接触到这个需求 我们本身的文档 都存储在阿里云的oss上 ,由于浏览文档需要下载后观看 为了方便浏览文档方便 开了这样一个功能 将文档转换成图片来进行预览 好了 废话就不多说了 下 ...

  5. 七牛CEO许式伟:服务端开发那些事儿

    [http://www.donews.com/company/201511/2907818.shtm] 七牛CEO许式伟:服务端开发那些事儿 2015-11-09 11:14:05 服务端开发对于任何 ...

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

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

  7. java将office文档,word,ppt,pdf文档转换成swf文件在线预览

    java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux ...

  8. html长图转换成pdf,支持把各类文档转换成 HTML5(SVG)接口、长图片、PDF 。word转pdf、word转html5、pdf转网页html5、pdf转图片的接口...

    详情请到九云图官网了解一下.https://server.9yuntu.com/yuntu/resource/website/api.html 把 OFFICE / PDF / CAD 等文档转换成 ...

  9. openoffice jodconverter 文档转换pdf过坑记录

    文档转换性能测试 在财务系统中使用了两种PDF转换组件 一种是com.artofsolving,也是系统第一次引用的组件: <!-- https://mvnrepository.com/arti ...

最新文章

  1. java中数组的复制
  2. HDU 1816, POJ 2723 Get Luffy Out(2-sat)
  3. Linux Shell编程入门
  4. Fisher_Yates算法
  5. oracle创建表语句_利用FME去拼接SQL语句并创建表
  6. 生成对抗网络(GAN)的统计推断
  7. 用dotnet自带的mail类发邮件出现的问题
  8. linux虚拟机tomcat上部署web项目的常用命令
  9. 前端_网页编程 WebAPI_01
  10. 如何检查python的库是否安装成功_如何测试redis是否安装成功
  11. python 携程_python 携程爬虫开发笔记
  12. 线性最小二乘法的通俗理解
  13. 资源放送丨《Oracle存储过程性能分析案例》PPT视频
  14. 鹅厂算法大神干货实录,初赛通关“秘籍”还不赶快来GET!
  15. 网上无意中看到的一句话。。。
  16. CSS文件在jsp 文件中应该放的位置
  17. windows系统c语言编译器安装
  18. matlab电磁场,电磁场与波 电磁材料及MATLAB计算
  19. 一个动态路由OSPF配置实例(eNSP)
  20. 计算机用老毛桃u盘备份系统,如何用老毛桃u盘备份系统

热门文章

  1. 在移动硬盘中安装win10和macos双系统
  2. SpringBoot整合华为云OBS
  3. 2019最新抖音全方位数据分析报告
  4. python3可视化-pyecharts图形库,大饼图Pie的创建和使用
  5. 使用微搭低代码集成腾讯地图
  6. hive------内部函数与自定义函数
  7. 儿童护眼台灯哪个品牌好?2023品牌护眼台灯最新排行榜
  8. henu云计算复习-图片版
  9. linux 7 realm,系统运维|Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC...
  10. 朱一龙左娜扎右热巴,王栎鑫:我想活成你的样子