Class: Media::LibreMagickTransmogrifier
- Inherits:
-
Transmogrifier
- Object
- Transmogrifier
- Media::LibreMagickTransmogrifier
- 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, #options, #output, #output_file, #output_type
Class Method Summary collapse
- .available? ⇒ Boolean
- .ghostscript_available? ⇒ Boolean
- .input_types ⇒ Object
- .libre ⇒ Object
- .magick ⇒ Object
- .output_types ⇒ Object
Instance Method Summary collapse
-
#run(&block) ⇒ Object
run libreoffice and then graphicsmagick in succession.
Methods inherited from Transmogrifier
add, command_available?, converts_from?, converts_to?, find_class, inherited, #initialize, input_map, list, output_map, #run_command, run_command
Constructor Details
This class inherits a constructor from Media::Transmogrifier
Class Method Details
.available? ⇒ Boolean
26 27 28 29 30 31 32 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 26 def self.available? libre && magick && libre.available? && magick.available? && ghostscript_available? end |
.ghostscript_available? ⇒ Boolean
34 35 36 37 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 34 def self.ghostscript_available? cmd = `which ghostscript`.chomp !cmd.empty? && command_available?(cmd) end |
.input_types ⇒ Object
17 18 19 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 17 def self.input_types libre.input_types end |
.libre ⇒ Object
9 10 11 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 9 def self.libre Media::Transmogrifier.list["Media::LibreOfficeTransmogrifier"] end |
.magick ⇒ Object
13 14 15 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 13 def self.magick Media::Transmogrifier.list["Media::GraphicsMagickTransmogrifier"] end |
.output_types ⇒ Object
21 22 23 24 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 21 def self.output_types # we don't want to use this for pdf, since libreoffice by itself can generate pdf magick.output_types - ['application/pdf'] end |
Instance Method Details
#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).
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/media/transmogrifiers/libremagick.rb', line 45 def run(&block) pdf_output_file = Media::TempFile.new(nil, "application/pdf") libre_transmog = self.class.libre.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 = self.class.magick.new( .merge({ input_file: pdf_output_file, input_type: "application/pdf", output_file: output_file, output_type: output_type }) ) magick_transmog.run(&block) end |