2011-10-12 61 views
1

嗨,夥計們:我想創建一個使用原始文本文件的Powerpoint演示文稿,以便我可以快速編輯文件並查看結果,並以統一格式進行打印。基本上,我正在談論從演示中分離數據內容。我可以在原始文本中定義powerpoint或演示文稿嗎?

我該怎麼做?我在想,也許乳膠可能是一個選擇。我還看到有Powerpoint和開放式辦公室演示文稿的API。

+0

你想要「powerpoint」或任何形式的演示文稿格式? – dagnelies

+0

我知道沒有TeX的實現可以輸出PPT格式(以及爲什麼要在地球上它想要,PDF比較好)。 –

+0

你的問題在這裏不是真正的主題(不是關於軟件開發),也不是你提問的方式。如果您想使用LaTeX創建演示文稿(而不是PowerPoint文檔),請查看「beamer」類(如果遇到問題,請諮詢[TeX Stack Exchange](http://tex.stackexchange.com/) ))。 –

回答

1

Powerpoint通過COM公開了它的API - 這使得可以在支持COM的任何編程語言中執行(幾乎)所有可以在GUI中執行的任何操作。難點在於API在版本之間變化。 API範圍的一種方法是使用宏記錄工具手動完成一張幻燈片,然後將其翻譯爲目標語言。

我已經有了一些老的(未測試過的)Powerpoint 2003的Python代碼,它應該能夠讓你瞭解代碼的樣子,這取決於你的佈局需求。

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) 

編輯:

OpenOffice的(可以導出到PowerPoint)還附帶它的scripting API可以用來解決類似的問題。

+0

那麼如何讓COM和python在* NIX上互操作呢?似乎有一些特定於Windows的庫。 – jayunit100

+0

我不知道這段代碼是否可以在windows下工作。我沒有嘗試過,但它可能在Wine下面。已編輯答案以提供替代* NIX兼容解決方案。 –

+1

因爲示例代碼自動執行PowerPoint,所以您至少需要安裝並運行PowerPoint的副本。除了Windows ...或者一個合適的模擬器...它不會工作。至於PPT版本的差異,我沒有看到任何可能受到影響的代碼。相同的代碼應該從97年以後的任何版本的PPT上運行一致。一般來說,在這裏沒有任何理由使用Select,這樣做會大大減慢代碼的運行速度,並阻止你無形地運行PPT。 FWIW。 –

1

如果您只需要帶有標題和項目符號的幻燈片,則非常簡單。創建一個如下所示的txt文件(使用TAB鍵代替以下內容):

Slide 1 Title 
<tab>Bullet Level One Text 
<tab><tab>Bullet Level Two Text 
<tab>Back to Bullet Leven One again 
Slide 2 Title 
Slide 3 Title 
<tab>More Bulleted text 
<tab><tab>Tufte hates us by now 
<tab><tab>But we don't care, do we? 
Slide 4 Title 

依此類推。保存文件,啓動PowerPoint,選擇文件打開命令,在文件打開對話框中選擇大綱或所有類型的文件,並選擇您的TXT文件。完成。

相關問題