解説

ディレクトリ「/data/picture/2015」にある「*.jpg」にマッチする画像ごとにPowerPointのページを作って片っ端から画像を張り付けていくプログラムです。 PowerPointのページタイトルは連番を振ってます。 何に使っているかは秘密です...

ポイントはページサイズをcmからピクセル(pixel)に変換しているところです。 Win32OLEではPowerPointのサイズとか画像の位置をpixelで扱っているのですが、アプリだとcmで扱っているのでppc (pixel per cm)の単位を出して変換してます。

参考にしたのは。 https://davis.gfd-dennou.org/rubygadgets/ja/?(Tips)+PowerPoint+%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%BC%AB%C6%B0%C0%B8%C0%AE とVBAPPT9.CHM。

追記 (2015/02/09)

PHPでも結構簡単にWIN32OLEを使えることが判明。PHPでディレクトリにある画像を片っ端からPowerPointに貼り付け

ソースコード

require 'win32ole'

def getAbsolutePath(path)
  fso = WIN32OLE.new('Scripting.FileSystemObject')
  return fso.GetAbsolutePathname(path)
end

pp = WIN32OLE.new("PowerPoint.Application")
pp.Visible = true
slides = pp.Presentations.add
width = slides.pageSetup.slideWidth
height = slides.pageSetup.slideHeight
ppc = width / 25.4

i = 1
j = 1
Dir.chdir("/data/picture/2015/")
Dir.glob("*.jpg") do |f|
  slide = slides.Slides.Add(i, 11)
  slideShape = slide.Shapes
  title = sprintf("2014-%03d", j)
  slideShape.Title.TextFrame.TextRange.Text = title
  img = getAbsolutePath(f)
  picture = slideShape.AddPicture(img, false, true, 10, 10)
  picture.LockAspectRatio = true
  picture.left = 0.79 * ppc
  picture.top = 4.12 * ppc
  picture.width = 23.81 * ppc
  i = i + 1
  if i % 2 == 1 then
    j = j + 1
  end
end

実行結果

pptfig.jpg

添付ファイル: filepptfig.jpg 2002件 [詳細]

  添付編集
Last-modified: 2015-02-09 (月) 12:02:00 (3326d)