C#学习笔记(24)——C#将PPT批量转为JPG(最简单的方法)

说明(2017-8-1 11:15:46):

1. 哈哈,我就说微软肯定有自己的办法,把PPT转成图片。

2. 主要是要引入两个微软自己的程序集,vs里自带直接添加引用,注意一下版本,12.0是office2007吧?反正我用的14.0的。

添加完会多出来两个引用:

3. 剩下的看代码就可以了,非常之简单,核心代码就三行!

4. 感谢下面的参考资料:

http://bbs.csdn.net/topics/360019178

另外stackoverflow是个好东西:

https://stackoverflow.com/questions/2972263/ppt-slides-to-images

还有必应搜索,不知道比百度强到哪里去了,添加程序集的时候遇到几个问题,都是在必应里搜索到解决办法的:

http://cn.bing.com/

xaml:

<Window x:Class="PPT2JPG.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="开始转成图片" HorizontalAlignment="Left" Height="40" Margin="366,181,0,0" VerticalAlignment="Top" Width="103" Click="Button_Click_1"/>
        <Label Content="PPT路径" HorizontalAlignment="Left" Height="32" Margin="46,69,0,0" VerticalAlignment="Top" Width="77"/>
        <TextBox Name="txtBoxPath" HorizontalAlignment="Left" Height="35" Margin="129,66,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="354"/>
    </Grid>
</Window>

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System.IO;

namespace PPT2JPG
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            File.Delete("log.txt");
        }

        private void ShowLog(string log)
        {
            File.AppendAllText("log.txt", "\r\n" + DateTime.Now.ToString() + log);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {

        }
        //PPT转成JPG
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string pptPath = txtBoxPath.Text;
            if (pptPath != "" && Directory.Exists(pptPath))
            {
                DirectoryInfo pptInfos = new DirectoryInfo(pptPath);
                foreach (FileInfo pptInfo in pptInfos.GetFiles("*.ppt*"))
                {
                    //创建图片文件夹
                    if (!Directory.Exists(pptInfo.FullName.Split(‘.‘)[0]))
                    {
                        Directory.CreateDirectory(pptInfo.FullName.Split(‘.‘)[0]);
                    }
                    else
                    {
                        continue;
                    }
                    //开始转换PPT
                    try
                    {
                        ApplicationClass pptApp = new ApplicationClass();
                        Presentation pptPres = pptApp.Presentations.Open(pptInfo.FullName, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
                        for (int i = 0; i < pptPres.Slides.Count; i++)
                        {
                            string imgPath = pptInfo.FullName.Split(‘.‘)[0] + @"\" + (i + 1).ToString() + ".jpg";
                            pptPres.Slides[i + 1].Export(imgPath, "jpg", 960, 720);
                        }
                        Console.WriteLine("已经转换完:"+pptInfo.FullName);
                        pptPres.Close();
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("无法转换:" + pptInfo.FullName);
                        ShowLog("无法生成图片:" + pptInfo.FullName);
                        continue;
                    }

                }
                MessageBox.Show("转换图片完成!");
            }
            else
            {
                MessageBox.Show("路径为空或不存在!");
            }
        }
    }
}
时间: 2024-10-13 11:17:39

C#学习笔记(24)——C#将PPT批量转为JPG(最简单的方法)的相关文章

C++学习笔记24,方法重写与方法隐藏

该博文仅用于交流学习,请慎用于任何商业用途,本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中重新编写父类中的虚函数的实现.要求子类中的函数必须跟父类中的原型一致. 包括返回值类型(协变返回类型不算)以及参数的数目,排列顺序. #include <iostream> #include <string> using namespace std; class base{ public: v

[ExtJS学习笔记]第七节 Extjs的组件components及其模板事件方法学习

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://ww

angular学习笔记(二十八-附1)-$resource中的资源的方法

通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,比如$save,可以直接调用来保存该资源: 比如有一个$resource创建的服务: var service = angular.module('myRecipe.service',['ngResource']); service.factory('Recipe',['$resource',function($resource){ return $resource('/recipe/:id',

php批量删除cookie的简单实现方法

这篇文章主要介绍了php批量删除cookie的简单实现方法,实例分析了删除单个cookie及数组遍历的方式批量删除cookie的技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了php批量删除cookie的简单实现方法.分享给大家供大家参考.具体实现方法如下: <?php //删除单个cookie:键值设置为空.时间设置为过期了的时间 setCookie("name","",time()-60); //删除多个cookie,采用遍历数组方式 foreac

[原创]java WEB学习笔记24:MVC案例完整实践(part 5)---删除操作的设计与实现

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例

前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也体现了微软一贯原则–“简单”. 安装完了我想很多朋友也着急想体验下EF的好处了吧,今天我就通过EF框架对增.删.改操作做一个简单示例. 创建表 这里我只是做示例所以就创建了一个表并且字段也很少.下面是sql语句,大家可以直接复制生成表结构.   CREATE TABLE Book   (   Id

C#学习笔记(23)——C#将PPT批量转为JPG(aspose方法)

说明(2017-7-31 18:30:25): 1. 最主要的是下载到aspose的破解文件,我在这里下载的http://www.lenosoft.net/down/10205.htm,如果不差钱可以买正版,也就一万多.有试用版,不过转换完有水印,水印很大,很大. 2. aspose没有给出直接将PPT转为图片的方法,只能是先将PPT转为PDF,再将PDF转为图片.所以只用到了两个dll文件,Aspose.Slides和Aspose.Pdf. 3. 其实有个网站上有教程,是aspose的中国代理

struts2学习笔记--上传单个和批量文件示例

struts2提供了对上传文件的支持,将上传后的文件封装为java.io.File对象,开发者只需要在Action中定义一个File类型的变量,然后直接使用该变量,将它复制到目的目录即可. 单个文件上传实例 ` 下面是一个单个文件上传的小例子,webRoot下新建一个upLoad.jsp,核心代码为: <body> <!-- 必须将method指定为post,同时将enctype属性设置成如下形式, 第一个input中的name属性,值必须与Action中定义的Fil类型的变量名相同 -

List的一阶函数操作代码实战详解之Scala学习笔记-24

package com.leegh.dataset /** * @author Guohui Li */object List_FirstOrder_Ops { def main(args: Array[String]): Unit = { println(List(1, 2, 3, 4) ::: List(4, 5, 6, 7, 8) ::: List(10, 11)) println(List(1, 2, 3, 4) ::: (List(4, 5, 6, 7, 8) ::: List(10,