• SharePoint 2013 文档库中PPT转换PDF


    转载自:http://www.cnblogs.com/jianyus/p/3342382.html

    通过使用 PowerPoint Automation Services,可以从 PowerPoint 二进制文件格式 (.ppt) 和 PowerPoint Open XML 文件格式 (.pptx) 转换为其他格式。例如,您可能需要将一批 PowerPoint 97–2003 文件升级到 Open XML 演示文稿文件。您还可以在“编辑”菜单中创建自定义操作,以允许用户按需创建 PDF 版本的演示文稿。

    一、效果演示:

    1、新建一个ppt文档(office 2013,后缀pptx),添加内容,上传到文档库,如下图:

    clip_image006

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

    clip_image007

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

    clip_image008

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

    clip_image009

      综上所述,就是使用 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:WindowsMicrosoft.NETassemblyGAC_MSILMicrosoft.Office.Server.PowerPointv4.0_15.0.0.0__71e9bce111e9429c下,如下图:

    clip_image010

      然后,编写核心代码,如下:

    复制代码
     1 //PDF转换,extension是原文档后缀,验证是不是该格式
     2 PdfRequest request = new PdfRequest(
     3     fStream,
     4     ".pptx",
     5 stream);
     6 
     7 //开始转换
     8 IAsyncResult result = request.BeginConvert(
     9     SPServiceContext.GetContext(site),
    10     null,
    11     null);
    复制代码

      支持的目标文档格式包括所有支持的源文档格式,以及以下格式:

    • .pptx(Open XML 文件格式演示文稿格式)
    • .pdf
    • .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);

    }
    }


    复制代码
     1 string siteURL = "http://URL";
     2 using (SPSite site = new SPSite(siteURL))
     3 {
     4     using (SPWeb web = site.OpenWeb())
     5     {
     6         Console.WriteLine("Begin conversion");
     7 
     8         SPFolder docs = web.Folders[siteURL +
     9             "/PPT_Transfer"];
    10         SPFile file = docs.Files[siteURL +
    11             "/PPT_Transfer/TransferPPT.pptx"];
    12 
    13         Stream fStream = file.OpenBinaryStream();
    14         SPFileStream stream = new SPFileStream(web, 0x1000);
    15 
    16         //PDF转换,extension是原文档后缀,验证是不是该格式
    17         PdfRequest request = new PdfRequest(
    18             fStream,
    19             ".pptx",
    20             stream);
    21 
    22         IAsyncResult result = request.BeginConvert(
    23             SPServiceContext.GetContext(site),
    24             null,
    25             null);
    26 
    27         request.EndConvert(result);
    28 
    29         //新文档添加到文档库
    30         SPFile newFile = docs.Files.Add(
    31             "TransferPdf.pdf",
    32             stream,
    33             true);
    34         Console.WriteLine("Output: {0}", newFile.Url);
    35 
    36     }
    37 }
    复制代码

    参考文献

    SharePoint 2013 中的 PowerPoint Automation Services

    http://msdn.microsoft.com/zh-CN/library/sharepoint/fp179894

  • 相关阅读:
    Jmeter beanshell preprocessor随机添加任意多个请求参数
    Jmeter 场景设计
    jmeter 参数化
    .net 匿名方法
    jmeter 运行脚本报错 java.net.BindException: Address already in use
    Jmeter mysql性能测试
    ngcordova 监控网络制式改变
    建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期
    Kafka架构
    Linux命令
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/3602345.html
Copyright © 2020-2023  润新知