Module: Bizside::FileConverter

Defined in:
lib/bizside/file_converter.rb

Constant Summary collapse

EXT_IMAGE =
['.gif', '.jpg', '.jpeg', '.png']
EXT_OFFICE =
['.doc', '.docx', '.ppt', '.pptx', '.xls', '.xlsx']
EXT_PDF =
['.pdf']

Class Method Summary collapse

Class Method Details

.convert_to_image(file) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/bizside/file_converter.rb', line 26

def self.convert_to_image(file)
  require 'rmagick'

  case File.extname(file.path)
  when *EXT_IMAGE
    dest = file.path + File.extname(file.path)
    unless system("cp #{file.path} #{dest}")
      raise "画像をコピーできませんでした。file=#{file.path}"
    end
    ret = File.new(dest)
  when *EXT_OFFICE
    pdf = convert_to_pdf(file)
    ret = convert_to_image(pdf)
  when *EXT_PDF
    dest = file.path + '.png'
    images = Magick::ImageList.new(file.path) do |m|
      m.quality = 100
      m.density = 96
    end
    images.first.write(dest)
    ret = File.new(dest)
  else
    raise "サポートしていない拡張子です。file=#{file.path}"
  end

  ret
end

.convert_to_pdf(file) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/bizside/file_converter.rb', line 7

def self.convert_to_pdf(file)
  dest = file.path + '.pdf'

  case File.extname(file.path)
  when *EXT_OFFICE
    unless system("java -Xmx512m -jar /opt/jodconverter/lib/jodconverter-core.jar #{file.path} #{dest}")
      raise "オフィス文書からPDFに変換できませんでした。file=#{file.path}"
    end
  when *EXT_PDF
    unless system("cp #{file.path} #{dest}")
      raise "PDFをコピーできませんでした。file=#{file.path}"
    end
  else
    raise "サポートしていない拡張子です。file=#{file.path}"
  end

  File.new(dest)
end