Προς το περιεχόμενο

batch export powerpoint to images


random

Προτεινόμενες αναρτήσεις

Δημοσ.

Προσπαθώ να κάνω batch export όλα τα images πολλών Powerpoint presentations. Καλό θα ήταν κάτι έτοιμο, αλλα μετά απο μακρά αναζήτηση βρήκα μόνο 1 commercial app.

 

Εψαξα λοιπόν για source, και κάτι βρήκα.

τρέχουν με το windows scripting host με κωδικα vb.

 

Το πρώτο, κάνει τη δουλειά που θέλω, για ένα PPT, και θα μπορούσα να το καλώ απο ένα .bat με την εντολή

FOR %1 IN %2 DO....

και να περάσει απο όλο το folder.

Το μόνο πρόβλημα είναι οτι πρέπει πριν το καλέσεις, πρέπει να έχεις ηδη ανοιχτό το Powerpoint, αλλιώς βγάζει μήνυμα:

"Invalid request. The PowerPoint Frame window does not exist. Error 80048240"

 

listing 1

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">' ** modified code from: http://guymcarthur.com/resources/vbs/ppt2gif.xml **

' This code runs on a Windows Scripting Host to export a PowerPoint

' presentation to a series of GIF images. It

' also writes an XML file suitable for creating a JavaScript slideshow with my slides XSLT.

' Convert PowerPoint to GIFs

' Tested w/ PPT97 (must be open in window)

' $Revision: 1.1 $

 

'put here bmp,jpg,gif for image format

ext = "jpg"

 

' CHANGE THIS LINES TO RUN WITH PARAMETERS

indir = "D:\#script\"

myfile = "test3.ppt"

'myfile=WScript.Arguments(0)

'outdir=WScript.Arguments(1)

 

infile= indir & myfile

outdir= indir & "imag_" & myfile &"_"& ext & "\"

 

w=580

h=435

 

Dim fso, fldr

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If Not fso.FolderExists(outdir) Then Set fldr = fso.CreateFolder(outdir)

 

Dim obj

Set obj = CreateObject("Powerpoint.Application")

'Set obj = WScript.CreateObject("Powerpoint.Application")

 

Dim xml

Set xml = fso.CreateTextFile(outdir&"\slides.xml", TRUE)

 

xml.WriteLine("<?xml version=""1.0""?>")

xml.WriteLine("<!-- Generated from ppt2gif -->")

 

' this does not work!

' obj.Visible = FALSE

 

obj.Presentations.Open(infile)

 

xml.WriteLine("<slides title="""&obj.ActivePresentation.Name&""">")

 

 

For i = 1 To obj.ActivePresentation.Slides.Count

slide="slide"&i&"-"&w&"x"&h&"."&ext

 

With obj.ActivePresentation.Slides(i)

.Export outdir&"\"&slide, ext, w, h

 

xml.WriteLine("<slide src="""&slide&""">")

If .Shapes.hasTitle Then xml.WriteLine(.Shapes.Title.TextFrame.TextRange.Text)

End With

xml.WriteLine("</slide>")

' End If

Next

 

obj.Quit

 

xml.WriteLine("</slides>")[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">εδώ έχει ενα παραδειγμα πως ανοιγουν το powerpoint

 

listing 2

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">app = new Application();

Presentations presentations = app.get_Presentations();

Presentation present = presentations.Open("C:\\test.ppt", 0, 0, 1);

present.SaveAs("C:\\ppt.jpg",PpSaveAsFileType.ppSaveAsJPG);

java.lang.System.out.println("Saved as JPG");

Thread.sleep(3000);

present.Close();

app.Quit();[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">Είμαι λίγο άσχετος απο vb, μπορεί κάποιος να το βελτιώσει? και αν έχετε καμιά ιδέα σε τελείως διαφορετικό τρόπο (java, klp) δεκτή.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...