Powerpoint предоставляет свой API через COM - что позволяет делать (почти) все, что вы можете делать в GUI, на любом языке программирования, который поддерживает COM. Сложность в том, что API меняется между выпусками. Один из способов расширить API - использовать средство записи макросов, чтобы вручную сделать один слайд, а затем перевести его на целевой язык.
У меня есть какой-то старый (недавно не проверенный) код Python для Powerpoint 2003, который должен дать вам представление о том, как может выглядеть код в зависимости от потребностей вашего макета.
from win32com.client import Dispatch
ppLayoutTitle = 1
ppLayoutText = 2
def writePresentation( fname, data ):
pptApp = Dispatch('Powerpoint.Application')
pres = pptApp.ActivePresentation
aw = pptApp.ActiveWindow
slides = pres.Slides
for item in data:
t1 = item[0]
t2 = item[1]
stype = item[2]
assert(stype in [ppLayoutTitle,ppLayoutText])
s = slides.Add( slides.Count, stype )
aw.View.GotoSlide(s.SlideIndex)
s.Shapes.Item(1).Select()
aw.Selection.ShapeRange.TextFrame.TextRange.Select()
aw.Selection.ShapeRange.TextFrame.TextRange.Characters(Start=1, Length=0).Select
tr = aw.Selection.TextRange
tr.Text = t1
s.Shapes.Item(2).Select()
aw.Selection.ShapeRange.TextFrame.TextRange.Select()
if stype == ppLayoutText:
aw.Selection.ShapeRange.TextFrame.TextRange.ParagraphFormat.Bullet.Visible = 0
aw.Selection.ShapeRange.TextFrame.TextRange.Characters(Start=1, Length=0).Select
tr = aw.Selection.TextRange
tr.Text = t2
slides.Range(slides.Count).Delete()
pres.SaveAs(fname)
Edit:
Openoffice (который может экспортироваться в powerpoint) также поставляется с API сценариев , который можно использовать для решения подобных проблем.