PPT转图片

在网上找到的一段代码,经测试可以使用,不过需要已经安装了office的ppt软件。

下面吧代码拿出来和大家分享:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;

namespace testPPTtoJPG
{
    
public partial class Form1 : Form
    {
        
public Form1()
        {
            InitializeComponent();
        }

        
private void Form1_Load(object sender, EventArgs e)
        {
            ApplicationClass ac 
= new ApplicationClass();

            
string srcRoot;
            
string dstRoot;
            FolderBrowserDialog fbd 
= new FolderBrowserDialog();
            fbd.Description 
= "Select root folder";
            
if (fbd.ShowDialog() != DialogResult.OK)
                
return;
            srcRoot 
= fbd.SelectedPath;
            fbd.Description 
= "Select destination folder";
            fbd.ShowNewFolderButton 
= true;
            
if (fbd.ShowDialog() != DialogResult.OK)
                
return;
            dstRoot 
= fbd.SelectedPath;

            
string[] pptFiles = Directory.GetFiles(srcRoot, "*.ppt", SearchOption.AllDirectories);
            
string[] potFiles = Directory.GetFiles(srcRoot, "*.pot", SearchOption.AllDirectories);
            
string[] pptxFiles = Directory.GetFiles(srcRoot, "*.pptx", SearchOption.AllDirectories);
            Console.WriteLine(
"Find " + (
                pptxFiles.GetUpperBound(
0+ 1 +
                potFiles.GetUpperBound(
0+ 1 +
                pptxFiles.GetUpperBound(
0+ 1+ "Files");

            
foreach (string ppt in pptFiles)
            {
                
string dir = ppt.Substring(srcRoot.Length + 1);
                
string fullDir = Path.Combine(dstRoot, dir);
                fullDir 
= fullDir.Substring(0, fullDir.Length - 4);
                Directory.CreateDirectory(fullDir);
                Console.WriteLine(
"Converting PPT File (" + fullDir + ")");
                Presentation p 
= ac.Presentations.Open(ppt, MsoTriState.msoCTrue, MsoTriState.msoCTrue, MsoTriState.msoFalse);
                p.SaveAs(fullDir, PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoCTrue);
                p.Close();
            }

            
foreach (string pot in potFiles)
            {
                
string dir = pot.Substring(srcRoot.Length + 1);
                
string fullDir = Path.Combine(dstRoot, dir);
                fullDir 
= fullDir.Substring(0, fullDir.Length - 4);
                Directory.CreateDirectory(fullDir);
                Console.WriteLine(
"Converting POT File (" + fullDir + ")");
                Presentation p 
= ac.Presentations.Open(pot, MsoTriState.msoCTrue, MsoTriState.msoCTrue, MsoTriState.msoFalse);
                p.SaveAs(fullDir, PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoCTrue);
                p.Close();
            }

            
foreach (string pptx in pptxFiles)
            {
                
string dir = pptx.Substring(srcRoot.Length + 1);
                
string fullDir = Path.Combine(dstRoot, Path.GetFileName(dir));
                fullDir 
= fullDir.Substring(0, fullDir.Length - 4);
                Directory.CreateDirectory(fullDir);
                Console.WriteLine(
"Converting PPTX File (" + fullDir + ")");
                Presentation p 
= ac.Presentations.Open2007(pptx, MsoTriState.msoCTrue, MsoTriState.msoCTrue, MsoTriState.msoFalse, MsoTriState.msoFalse); ;
                p.SaveAs(fullDir, PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoCTrue);
                p.Close();
            }

            Console.WriteLine(
"All done, press enter key to exit");
            Console.ReadLine();
        }
    }
}

转载于:https://www.cnblogs.com/gofficer/archive/2008/10/15/1312017.html

namespace PPT2Img { class Program { [STAThread] static void Main(string[] args) { TaskTimerRecorder taskTimerRecorder = new TaskTimerRecorder(); //确认需要执行的操作 //getinfo:获取总页数 //convert:将指定起始页码换到指定文件夹 string strActionMode = "getinfo"; //拿到输入文件名 string strPPTFileName = "PPT路径"; //拿到输出图片路径 string strOutputFilePath = "图片输出路径"; //拿到输出图片的名词前缀(后缀就是从0计数的页码) string strPrefix = "输出图片前缀"; //需要抠掉的颜色 uint nColor = 0xffffffff; //需要输出的起始页码 int nBeginPage = 0; //需要输出的结束页码(-1为全部输出) int nEndPage = -1; //宽高 int nWidth = 1920; int nHeight = 1080; if (args.Length > 0) { strActionMode = args[0]; if (args.Length > 1) { strPPTFileName = args[1]; } if (args.Length > 2) { strOutputFilePath = args[2]; if (strActionMode == "getinfo") { Console.WriteLine("工作模式是:" + strActionMode); Console.WriteLine("PPT路径是:" + strPPTFileName); Console.WriteLine("结果输出路径是:" + strOutputFilePath); Console.WriteLine("开始执行"); ESBasic.Office.OfficeScanner scaner = new ESBasic.Office.OfficeScanner(); int nPage = scaner.GetInfo(strPPTFileName); FileStream fs = File.Create(strOutputFilePath + "pagecount.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(nPage.ToString()); sw.Close(); fs.Close(); Console.WriteLine("执行结束"); return; } else if (strActionMode == "convert") { if (args.Length > 3) { strPrefix = args[3]; if (args.Length > 4) { string strColor = args[4]; nColor = uint.Parse(strColor, System.Globalization.NumberStyles.HexNumber); if (args.Length > 5) { string strBeginPage = args[5]; nBeginPage = int.Parse(strBeginPage); if (args.Length > 6) { string strEndPage = args[6]; nEndPage = int.Parse(strEndPage); if (args.Length > 7) { string strWidth = args[7]; nWidth = int.Parse(strWidth); if (args.Length > 8) { string strHeight = args[8]; nHeight = int.Parse(strHeight); //Console.WriteLine("1:工作模式是:" + strActionMode); //Console.WriteLine("2:PPT路径是:" + strPPTFileName); //Console.WriteLine("3:图片输出路径是:" + strOutputFilePath); //Console.WriteLine("4:图片输出前缀是:" + strPrefix); //Console.WriteLine("5:需要抠掉的颜色是:" + nColor.ToString()); //Console.WriteLine("6:输出起始页码是:" + nBeginPage.ToString()); //Console.WriteLine("7:输出结束页码是:" + nEndPage.ToString()); //Console.WriteLine("8:输出宽度是" + nWidth.ToString()); //Console.WriteLine("9:输出高度是" + nHeight.ToString()); //Console.WriteLine("1:" + strActionMode); //Console.WriteLine("2:" + strPPTFileName); //Console.WriteLine("3:" + strOutputFilePath); //Console.WriteLine("4:" + strPrefix); //Console.WriteLine("5:" + nColor.ToString()); //Console.WriteLine("6:" + nBeginPage.ToString()); //Console.WriteLine("7:" + nEndPage.ToString()); //Console.WriteLine("8:" + nWidth.ToString()); //Console.WriteLine("9:" + nHeight.ToString()); ESBasic.Office.OfficeScanner scaner = new ESBasic.Office.OfficeScanner(); int nPage = scaner.Convert(strPPTFileName, strOutputFilePath, strPrefix, nColor, nBeginPage, nEndPage, nWidth, nHeight); FileStream fs = File.Create(strOutputFilePath + "pagecount.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(nPage.ToString()); sw.Close(); fs.Close(); return; } } } } } } Console.WriteLine("1:" + strActionMode); Console.WriteLine("2:" + strPPTFileName); Console.WriteLine("3:" + strOutputFilePath); Console.WriteLine("4:" + strPrefix); Console.WriteLine("5:" + nColor.ToString()); Console.WriteLine("6:" + nBeginPage.ToString()); Console.WriteLine("7:" + nEndPage.ToString()); Console.WriteLine("8:" + nEndPage.ToString()); Console.WriteLine("9:" + nEndPage.ToString()); Console.WriteLine("10"); } } } else { #if false //无参数模式,给一些参数,调试使用 strActionMode = "convert"; strPPTFileName = "C:\\Users\\dujiangtao\\Desktop\\测试2.pptx"; strOutputFilePath = "E:\\output\\"; strPrefix = "ppt"; nColor = 0x000000ff; nWidth = 1920; nHeight = 1080; nColor = uint.Parse("000000ff", System.Globalization.NumberStyles.HexNumber); nBeginPage = 0; nEndPage = -1; ESBasic.Office.OfficeScanner scaner = new ESBasic.Office.OfficeScanner(); int nPage = scaner.Convert(strPPTFileName, strOutputFilePath, strPrefix, nColor, nBeginPage, nEndPage, nWidth, nHeight); FileStream fs = File.Create(strOutputFilePath + "pagecount.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(nPage.ToString()); sw.Close(); fs.Close(); taskTimerRecorder.Stop(); Console.ReadLine(); #endif } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值