Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Power{Point,ed by,Shell}八木 悠(@miriyagi)
八木 悠(@miriyagi)
私は CUI が大好きだ!
研究で使うのは当然 Linux
研究に明け暮れる幸せな日々
研究発表でも
使うのは当然 Beamer
そんな CUI を愛する学生生活を満喫
とある企業に入社
渡されるのは Windows, Office, ...
みんな GUI しかないじゃない!
そんなある日……
PowerShell ならできるじゃない!
• PowerPoint プレゼンテーションを CUI で作りたい• XHTML を PowerShell 経由で変換できたら素敵• 文字だけではなく画像やリストにも対応したい            やりたいこと
• Microsoft 製のシェルスクリプト言語• Windows 7 から標準搭載• 最新版は PowerShell 3.0             PowerShell とは
PS C:UsersYagi> cd TempPS C:UsersYagiTemp> $x = lsPS C:UsersYagiTemp> $x     ディレクトリ: C:UsersYagiTempMode                La...
PowerShell ISE
$xml = [xml] (Get-Content "source.xhtml")$sections = $xml.html.body.section$x = $sections[0].h1            XHTML (XML) の読み込み
$powerPoint = New-Object -ComObject PowerPoint.Application$presentation = $powerPoint.Presentations.Add($true)       プレゼンテ...
$slide = $presentation.Slides.Add($index, 12)                白紙スライドの追加
$ori =[Microsoft.Office.Core.MsoTextOrientation]::msoTextOrientationHorizontal# $ori = 1$textBox = $slide.Shapes.AddTextBo...
# フォント$box.TextFrame.TextRange.Font.NameFarEast = "メイリオ"$box.TextFrame.TextRange.Font.NameAscii = "Consolas"$box.TextFrame...
$picture =$Slide.Shapes.AddPicture("image.png", $false, $true, $posX, $poxY, $width, $height)                    画像の埋め込み
if ($pictureWidth -gt $slideWidth) {    $cropWidth = $pictureWidth - $slideWidth    $picture.PictureFormat.Crop.ShapeLeft ...
後はこれを組み合わせれば……
完成!
デモ
• XHTML を PowerPoint プレゼンテーションにするPowerShell スクリプトを書いたよ!• Windows でも(意外と)CUI で遊べるよ!              まとめ
• スライドテンプレートの利用• 複数コンテンツへの対応• 他のタグへの対応             今後の課題
PowerPoint Powered by PowerShell
Upcoming SlideShare
Loading in …5
×

PowerPoint Powered by PowerShell

8,391 views

Published on

"Power{Point,ed by,Shell}" by @miriyagi at 1st #lt_titech

Published in: Technology

PowerPoint Powered by PowerShell

  1. 1. Power{Point,ed by,Shell}八木 悠(@miriyagi)
  2. 2. 八木 悠(@miriyagi)
  3. 3. 私は CUI が大好きだ!
  4. 4. 研究で使うのは当然 Linux
  5. 5. 研究に明け暮れる幸せな日々
  6. 6. 研究発表でも
  7. 7. 使うのは当然 Beamer
  8. 8. そんな CUI を愛する学生生活を満喫
  9. 9. とある企業に入社
  10. 10. 渡されるのは Windows, Office, ...
  11. 11. みんな GUI しかないじゃない!
  12. 12. そんなある日……
  13. 13. PowerShell ならできるじゃない!
  14. 14. • PowerPoint プレゼンテーションを CUI で作りたい• XHTML を PowerShell 経由で変換できたら素敵• 文字だけではなく画像やリストにも対応したい やりたいこと
  15. 15. • Microsoft 製のシェルスクリプト言語• Windows 7 から標準搭載• 最新版は PowerShell 3.0 PowerShell とは
  16. 16. PS C:UsersYagi> cd TempPS C:UsersYagiTemp> $x = lsPS C:UsersYagiTemp> $x ディレクトリ: C:UsersYagiTempMode LastWriteTime Length Name---- ------------- ------ -----a--- 2012/11/24 15:15 114145 bing.png-a--- 2012/11/24 16:17 400645 logo.png-a--- 2012/11/24 14:48 54711 love.pngPS C:UsersYagiTemp> $x[1].Name.ToUpper()LOGO.PNG オブジェクト指向シェル
  17. 17. PowerShell ISE
  18. 18. $xml = [xml] (Get-Content "source.xhtml")$sections = $xml.html.body.section$x = $sections[0].h1 XHTML (XML) の読み込み
  19. 19. $powerPoint = New-Object -ComObject PowerPoint.Application$presentation = $powerPoint.Presentations.Add($true) プレゼンテーションの新規作成
  20. 20. $slide = $presentation.Slides.Add($index, 12) 白紙スライドの追加
  21. 21. $ori =[Microsoft.Office.Core.MsoTextOrientation]::msoTextOrientationHorizontal# $ori = 1$textBox = $slide.Shapes.AddTextBox($ori, $x, $y, $width, $height)$textBox.TextFrame.TextRange.Text = "YUKI.N>みえてる?" テキストボックスの作成
  22. 22. # フォント$box.TextFrame.TextRange.Font.NameFarEast = "メイリオ"$box.TextFrame.TextRange.Font.NameAscii = "Consolas"$box.TextFrame.TextRange.Font.Size = 24# 色$box.Fill.BackColor.RGB = 0x562401 # -> RGB(0x01, 0x24, 0x56)$box.TextFrame.TextRange.Font.Color.RGB = 0xFFFFFF テキストボックスの変更
  23. 23. $picture =$Slide.Shapes.AddPicture("image.png", $false, $true, $posX, $poxY, $width, $height) 画像の埋め込み
  24. 24. if ($pictureWidth -gt $slideWidth) { $cropWidth = $pictureWidth - $slideWidth $picture.PictureFormat.Crop.ShapeLeft += $cropWidth / 2 $picture.PictureFormat.Crop.ShapeWidth -= $cropWidth $picture.Left = 0} 画像のトリミング
  25. 25. 後はこれを組み合わせれば……
  26. 26. 完成!
  27. 27. デモ
  28. 28. • XHTML を PowerPoint プレゼンテーションにするPowerShell スクリプトを書いたよ!• Windows でも(意外と)CUI で遊べるよ! まとめ
  29. 29. • スライドテンプレートの利用• 複数コンテンツへの対応• 他のタグへの対応 今後の課題

×