2009-06-24 4 views
7

私はちょうどこれを行うコードスニペットを探していますが、C#またはPerlでも可能です。PowerPointプレゼンテーションをC#またはPerlでHTML/JPEGとしてプログラムで開いて保存するにはどうすればよいですか?

私はこれではない大きなタスクを願っ

;)

+0

私はあなたの最善の策は、多分それを研究してみてください...いくつかのC#およびPowerPoint相互運用機能アセンブリになると思います。 –

+1

プログラムを実行しているコンピュータにはPowerPointがインストールされていますか? –

答えて

6

Kevが指摘するように、Webサーバ上でこれを使用しないでください。

#!/usr/bin/perl 

use strict; 
use warnings; 

use Win32::OLE; 
use Win32::OLE::Const 'Microsoft PowerPoint'; 
$Win32::OLE::Warn = 3; 

use File::Basename; 
use File::Spec::Functions qw(catfile); 

my $EXPORT_DIR = catfile $ENV{TEMP}, 'ppt'; 

my ($ppt) = @ARGV; 
defined $ppt or do { 
    my $progname = fileparse $0; 
    warn "Usage: $progname output_filename\n"; 
    exit 1; 
}; 

my $app = get_powerpoint(); 
$app->{Visible} = 1; 

my $presentation = $app->Presentations->Open($ppt); 
die "Could not open '$ppt'\n" unless $presentation; 

$presentation->Export(
    catfile($EXPORT_DIR, basename $ppt), 
    'JPG', 
    1024, 
    768, 
); 

sub get_powerpoint { 
    my $app; 
    eval { $app = Win32::OLE->GetActiveObject('PowerPoint.Application') }; 
    die "[email protected]\n" if [email protected]; 

    unless(defined $app) { 
     $app = Win32::OLE->new('PowerPoint.Application', 
      sub { $_[0]->Quit } 
     ) or die sprintf(
      "Cannot start PowerPoint: '%s'\n", Win32::OLE->LastError 
     ); 
    } 
    return $app; 
} 
22

C:\presentation1.pptを開き、相互運用機能アセンブリを入手する必要がある場合などC:\Presentation1\slide1.jpg

としてスライドを保存します以下は、それは次のとおりです。ただし、以下のPerlスクリプトは、オフラインファイル変換などのために完全に罰金ですOfficeインストールプログラムの「ツール」から入手できます。または、here (office 2003)からダウンロードできます。新しいバージョンのオフィスをお持ちの場合は、他のバージョンのリンクを見つけることができます。

using Microsoft.Office.Core; 
using PowerPoint = Microsoft.Office.Interop.PowerPoint; 

namespace PPInterop 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     var app = new PowerPoint.Application(); 

     var pres = app.Presentations; 

     var file = pres.Open(@"C:\Presentation1.ppt", MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse); 

     file.SaveCopyAs(@"C:\presentation1.jpg", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoTrue); 
    } 
    } 
} 

編集: Sinan's versionは、輸出を使用することで、出力解像度を指定することができますので、少し良いオプションになりそうです。 C#の場合は、上述の最後の行を変更:

file.Export(@"C:\presentation1.jpg", "JPG", 1024, 768); 
+2

+1のC#ソリューション(私がもう一度投票することができますが、それはさらに8時間程度でなければなりません;-) –

+1

これは優れています。 Office 2010以降のすべてのユーザーには、ライブラリ 'Microsoft.Office.Core' [libは実際にはCOMライブラリです](http://stackoverflow.com/questions/5932794/microsoft-office-core-reference-missing)、ロードする必要がある拡張機能ではありません。 –

関連する問題