Class: Media::LibreMagickTransmogrifier

Inherits:
Transmogrifier show all
Defined in:
lib/media/transmogrifiers/libremagick.rb

Overview

uses libreoffice and graphicsmagick transmogrifiers to convert from office documents to image documents, by way of PDF.

Instance Attribute Summary

Attributes inherited from Transmogrifier

#command_output, #input, #input_file, #input_type, #name, #options, #output, #output_file, #output_type

Instance Method Summary collapse

Methods inherited from Transmogrifier

add, #command_available?, #converts_from?, #converts_to?, find_class, inherited, #initialize, input_map, list, output_map, #run_command

Constructor Details

This class inherits a constructor from Media::Transmogrifier

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/media/transmogrifiers/libremagick.rb', line 26

def available?
  libre and magick and libre.available? and magick.available?
end

#input_typesObject



17
18
19
# File 'lib/media/transmogrifiers/libremagick.rb', line 17

def input_types
  libre.input_types
end

#libreObject



9
10
11
# File 'lib/media/transmogrifiers/libremagick.rb', line 9

def libre
  Media::Transmogrifier.list["Media::LibreOfficeTransmogrifier"]
end

#magickObject



13
14
15
# File 'lib/media/transmogrifiers/libremagick.rb', line 13

def magick
  Media::Transmogrifier.list["Media::GraphicsMagickTransmogrifier"]
end

#output_typesObject



21
22
23
24
# File 'lib/media/transmogrifiers/libremagick.rb', line 21

def output_types
  # we don't want to use this for pdf, since libreoffice by itself can generate pdf
  magick.output_types - ['application/pdf']
end

#run(&block) ⇒ Object

run libreoffice and then graphicsmagick in succession.

all the options are passed to graphicsmagic, and none to libreoffice, because they are probably not for libreoffice (like crop or resize).



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/media/transmogrifiers/libremagick.rb', line 36

def run(&block)
  pdf_output_file = Media::TempFile.new(nil, "application/pdf")
  libre_transmog = libre.class.new(
    input_file: input_file,       input_type: input_type,
    output_file: pdf_output_file, output_type: "application/pdf")
  status = libre_transmog.run(&block)
  return status if status != :success
  magick_transmog = magick.class.new(
    options.merge({
      input_file: pdf_output_file,  input_type: "application/pdf",
      output_file: output_file,     output_type: output_type
    })
  )
  magick_transmog.run(&block)
end