class Powerpoint::Presentation
Attributes
slides[R]
Public Class Methods
new()
click to toggle source
# File lib/powerpoint/presentation.rb, line 11 def initialize @slides = [] end
Public Instance Methods
add_intro(title, subtitile = nil)
click to toggle source
# File lib/powerpoint/presentation.rb, line 15 def add_intro(title, subtitile = nil) existing_intro_slide = @slides.select {|s| s.class == Powerpoint::Slide::Intro}[0] slide = Powerpoint::Slide::Intro.new(presentation: self, title: title, subtitile: subtitile) if existing_intro_slide @slides[@slides.index(existing_intro_slide)] = slide else @slides.insert 0, slide end end
add_pictorial_slide(title, image_path, coords = {})
click to toggle source
# File lib/powerpoint/presentation.rb, line 29 def add_pictorial_slide(title, image_path, coords = {}) @slides << Powerpoint::Slide::Pictorial.new(presentation: self, title: title, image_path: image_path, coords: coords) end
add_picture_description_slide(title, image_path, content = [])
click to toggle source
# File lib/powerpoint/presentation.rb, line 37 def add_picture_description_slide(title, image_path, content = []) @slides << Powerpoint::Slide::DescriptionPic.new(presentation: self, title: title, image_path: image_path, content: content) end
add_text_picture_slide(title, image_path, content = [])
click to toggle source
# File lib/powerpoint/presentation.rb, line 33 def add_text_picture_slide(title, image_path, content = []) @slides << Powerpoint::Slide::TextPicSplit.new(presentation: self, title: title, image_path: image_path, content: content) end
add_textual_slide(title, content = [])
click to toggle source
# File lib/powerpoint/presentation.rb, line 25 def add_textual_slide(title, content = []) @slides << Powerpoint::Slide::Textual.new(presentation: self, title: title, content: content) end
file_types()
click to toggle source
# File lib/powerpoint/presentation.rb, line 72 def file_types slides.map {|slide| slide.file_type if slide.respond_to? :file_type }.compact.uniq end
save(path)
click to toggle source
# File lib/powerpoint/presentation.rb, line 41 def save(path) Dir.mktmpdir do |dir| extract_path = "#{dir}/extract_#{Time.now.strftime("%Y-%m-%d-%H%M%S")}" # Copy template to temp path FileUtils.copy_entry(TEMPLATE_PATH, extract_path) # Remove keep files Dir.glob("#{extract_path}/**/.keep").each do |keep_file| FileUtils.rm_rf(keep_file) end # Render/save generic stuff render_view('content_type.xml.erb', "#{extract_path}/[Content_Types].xml") render_view('presentation.xml.rel.erb', "#{extract_path}/ppt/_rels/presentation.xml.rels") render_view('presentation.xml.erb', "#{extract_path}/ppt/presentation.xml") render_view('app.xml.erb', "#{extract_path}/docProps/app.xml") # Save slides slides.each_with_index do |slide, index| slide.save(extract_path, index + 1) end # Create .pptx file File.delete(path) if File.exist?(path) Powerpoint.compress_pptx(extract_path, path) end path end