SharePoint 2013 文档库中PPT转换PDF
通过使用 PowerPoint Automation Services,可以从 PowerPoint 二进制文件格式 (.ppt) 和 PowerPoint Open XML 文件格式 (.pptx) 转换为其他格式。例如,您可能需要将一批 PowerPoint 97–2003 文件升级到 Open XML 演示文稿文件。您还可以在“编辑”菜单中创建自定义操作,以允许用户按需创建 PDF 版本的演示文稿。
一、效果演示:
1、新建一个ppt文档(office 2013,后缀pptx),添加内容,上传到文档库,如下图:

2、新建一个测试文档库,上传该ppt到文档库,如下图:

3、执行写好的转换程序,执行后,文档库多出一个pdf文档,如下图:

4、查看新生成的pdf文件,如下图:

综上所述,就是使用 PowerPoint Automation Services服务,将文档库中的ppt文档,自动转换成为pdf文档。当然,也可以用于将ppt类型的文档,批量转换为pptx文档。
5、科普一下PPTX类型文档
Open XML标准的简单介绍:Ecma Office Open XML(“Open XML”)是针对字处理文档、演示文稿和电子表格的国际化开放标准,可免费供多个应用程序在多个平台上实现。
该标准旨在提供现有 ISO 标准所无法提供的独特好处,其中包括能够实现从现有二进制格式向基于 XML 的格式的高保真移植。
二、操作步骤:
首先,创建一个Windows控制台程序(4.0),引用两个类文件(Microsoft.SharePoint.dll和Microsoft.Office.Server.PowerPoint.dll),前面的类文件就不多说了,后面的位置在C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.Office.Server.PowerPoint\v4.0_15.0.0.0__71e9bce111e9429c下,如下图:

然后,编写核心代码,如下:
//PDF转换,extension是原文档后缀,验证是不是该格式
PdfRequest request = new PdfRequest(
fStream,
".pptx",
stream); //开始转换
IAsyncResult result = request.BeginConvert(
SPServiceContext.GetContext(site),
null,
null);
支持的目标文档格式包括所有支持的源文档格式,以及以下格式:
- .pptx(Open XML 文件格式演示文稿格式)
- .xps(Open XML 纸张规范)
- .jpg
- .png(可移植网络图形格式)
三、其他类成员介绍:
1、PresentationRequest 类
PresentationRequest 类(继承自 Request 类)将 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 转换为其他演示文稿文件格式。在上面提及的第一种方案中,您使用此类将文档库中的旧的演示文稿文件转换为 Open XML 文件格式演示文稿格式。
PresentationRequest 类的构造函数方法具有三个必需参数:
- input - 采用需要转换为 Stream 对象的文件。
- extension - 指定将转换的文件的文件扩展名的字符串。
- output - 指定将存储输出的 SPFileStream 对象。
2、PdfRequest 类
PdfRequest 类(也继承自 Request 类)将 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 转换为 .pdf 文件。在上面提及的第二种方案中,您使用此类将演示文稿转换为 PDF 文件。
PdfRequest 类的构造函数方法也具有三个必需参数(input、extension 和 output),这类似于 PresentationRequest 类。
3、PictureRequest 类
PictureRequest 类(也继承自 Request 类)将 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 转换为一组 .jpg 或 .png 格式的图像文件。
此外,PictureRequest 类的构造函数方法具有四个必需参数。input、extension 和 output 参数与 PresentationRequest 类构造函数的参数类似。PictureRequest 类的构造函数方法也具有必需的 format 参数,该参数必需是 PictureFormat 枚举中的常数。
4、简单说明
其实使用起来,就是转换不同类型,使用不同的类,但是extension的参数,填写原文档的扩展名,代码很简单,MSDN的文档给的也非常详细,我附后了。
四、完整代码

string siteURL = "http://URL";
using (SPSite site = new SPSite(siteURL))
{
using (SPWeb web = site.OpenWeb())
{
Console.WriteLine("Begin conversion"); SPFolder docs = web.Folders[siteURL +
"/PPT_Transfer"];
SPFile file = docs.Files[siteURL +
"/PPT_Transfer/TransferPPT.pptx"]; Stream fStream = file.OpenBinaryStream();
SPFileStream stream = new SPFileStream(web, 0x1000); //PDF转换,extension是原文档后缀,验证是不是该格式
PdfRequest request = new PdfRequest(
fStream,
".pptx",
stream); IAsyncResult result = request.BeginConvert(
SPServiceContext.GetContext(site),
null,
null); request.EndConvert(result); //新文档添加到文档库
SPFile newFile = docs.Files.Add(
"TransferPdf.pdf",
stream,
true);
Console.WriteLine("Output: {0}", newFile.Url); }
}
参考文献
SharePoint 2013 中的 PowerPoint Automation Services
http://msdn.microsoft.com/zh-CN/library/sharepoint/fp179894
SharePoint 2013 文档库中PPT转换PDF的更多相关文章
- sharepoint 2013 文档库eventhandle权限控制
记录一下如何在sharepoint server 2013文档库中,使用eventhandle控制文档库document library的条目item权限. ///<summary> // ...
- 迁移TFS,批量将文档导入SharePoint 2013 文档库
一.需求分析 公司需要将存在于旧系统(TFS)所有的文档迁移至新系统(SharePoint 2013).现已经将50G以上的文档拷贝到SharePoint 2013 Server上.这些文档是一些不规 ...
- sharepoint 2013 文档库 资源管理器打开报错 在文件资源管理器中打开此位置时遇到问题,将此网站添加到受信任站点列表,然后重试。
我们在使用sharepoint 2013的文档库或者资源库的时候,经常会需要用到使用“资源管理器”来管理文档,但是有时候,点击“使用资源管理器打开”,会提示如下错误: 在文件资源管理器中打开此位置时遇 ...
- SharePoint 2013 文档库“样式”变了
有朋友反馈说文档库的样式变了. 经查证,原来有人修改了视图的"样式":库设置—视图—样式,改为默认即可. 另外,如果编辑页面,编辑web部件的属性,在"杂项"勾 ...
- SharePoint 2007 文档库中的文档添加评论功能
背景:接到一个项目,要求文档管理,当然文档库就可以了,但是要求文档需要大家去读,读完以后还可以发表评论,这Moss貌似就有点困难了.和同事一起合计,想来想去也没有太好的办法,后来想到传统开发,两个表的 ...
- 上传文件到 Sharepoint 的文档库中和下载 Sharepoint 的文档库的文件到客户端
文件操作应用场景: 如果你的.NET项目是运行在SharePoint服务器上的,你可以直接使用SharePoint服务器端对象模型,用SPFileCollection.Add方法 http://msd ...
- SharePoint 2010遍历文档库中所有的文件,文件夹
转:http://hi.baidu.com/sygwin/item/f99600849d51a12b110ef3eb 创建一个可视WebPart,并拖放一个label控件到ascx文件上,用于显示结果 ...
- sharepoint给文档库每个数据条添加权限
前言 老大任务,做一个读取文档库把里面的每一条数据添加权限.挺起来很简单,但是做起来,还是很简单,哈哈.因为我没有接触过这些代码,所以得不断的请教了.大题明白了,简单实现了一下,应用控制台先做了一下简 ...
- MWeb for Mac使用教程-如何在文档库中快速搜索
使用MWeb for Mac专业的 Markdown 编辑写作软件,可以让你随时记录自己的想法,灵感,创意,为您的工作节省宝贵的时间.本篇文章带来的是MWeb for Mac如何在文档库中快速搜索使用 ...
随机推荐
- LINQ系列:Linq to Object分区操作符
分区是指将一个单一的输入序列划分成两个或多个部分或序列,同时不会对输入元素重排序,返回一个新形成的部分.LINQ分割操作符包括Skip.SkipWhile.Take和TakeWhile. 1. Ski ...
- Vue.js学习笔记(6)tree
分享一段用 <ul>和<li>标签实现tree的代码,可能写的不是很好,如果大家有更好的希望和小颖分享下.嘻嘻 啦啦啦,代码看这里喽: <div class=" ...
- 如何让ASP.NET Web API的Action方法在希望的Culture下执行
在今天编辑推荐的<Hello Web API系列教程--Web API与国际化>一文中,作者通过自定义的HttpMessageHandler的方式根据请求的Accep-Language报头 ...
- 应用程序框架实战十八:DDD分层架构之聚合
前面已经介绍了DDD分层架构的实体和值对象,本文将介绍聚合以及与其高度相关的并发主题. 我在之前已经说过,初学者第一步需要将业务逻辑尽量放到实体或值对象中,给实体“充血”,这样可以让业务逻辑高度内聚, ...
- Java 8 Stream API详解--转
原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...
- 弹幕文化与HTML5
分享人:herry 弹幕篇:弹幕文化与HTML5 说说弹幕 弹幕文化 1什么是弹幕? 弹(dàn)幕(mù)在国内兴起已经有个把年了,相信很多朋友都差不多知道弹幕这个东西. 弹幕系统最初的起源是一家日 ...
- SQL Server中公用表表达式 CTE 递归的生成帮助数据,以及递归的典型应用
本文出处:http://www.cnblogs.com/wy123/p/5960825.html 我们在做开发的时候,有时候会需要一些帮助数据,必须需要连续的数字,连续间隔的时间点,连续的季度日期等等 ...
- Android置底一个View后运行报错
大致问题是 放一个LinearLayout ID @+id/layout ,然后在它上面放一个button 设置android:layout_above="@id/layout" ...
- 匿名方法与Lambda表达式
1.匿名方法 在学习委托时,我们知道委托实例至少要绑定一个方法才能使用,而调用委托实际上是调用了它所关联地方法.一般来说,需要定义一个与委托签名相符的方法,并使之与委托变量关联.如以下代码: Acti ...
- 十大经典排序算法总结(JavaScript描述)
前言 读者自行尝试可以想看源码戳这,博主在github建了个库,读者可以Clone下来本地尝试.此博文配合源码体验更棒哦~~~ 个人博客:Damonare的个人博客 原文地址:十大经典算法总结 这世界 ...