Class: Media::LibreOfficeTransmogrifier
Instance Attribute Summary
#command_output, #input, #input_file, #input_type, #options, #output, #output_file, #output_type
Class Method Summary
collapse
Instance Method Summary
collapse
add, command_available?, converts_from?, converts_to?, find_class, inherited, #initialize, input_map, list, output_map, #run_command, run_command
Class Method Details
.available? ⇒ Boolean
55
56
57
|
# File 'lib/media/transmogrifiers/libreoffice.rb', line 55
def self.available?
command_available?(LIBREOFFICE_COMMAND)
end
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/media/transmogrifiers/libreoffice.rb', line 24
def self.input_types
%w(
text/plain text/html text/richtext application/rtf
text/csv text/comma-separated-values
application/msword application/mswrite application/powerpoint
application/excel application/access application/vnd.ms-msword
application/vnd.ms-mswrite application/vnd.ms-powerpoint
application/vnd.ms-excel application/vnd.ms-access
application/msword-template application/excel-template
application/powerpoint-template
application/vnd.oasis.opendocument.spreadsheet
application/vnd.oasis.opendocument.formula
application/vnd.oasis.opendocument.chart
application/vnd.oasis.opendocument.image
application/vnd.oasis.opendocument.graphics
application/vnd.oasis.opendocument.presentation
application/vnd.oasis.opendocument.text-web
application/vnd.oasis.opendocument.text
application/vnd.oasis.opendocument.text-template
application/vnd.oasis.opendocument.text-master
application/vnd.oasis.opendocument.presentation-template
application/vnd.oasis.opendocument.graphics-template
application/vnd.oasis.opendocument.spreadsheet-template
application/vnd.openxmlformats-officedocument.wordprocessingml.document
)
end
|
.output_types ⇒ Object
51
52
53
|
# File 'lib/media/transmogrifiers/libreoffice.rb', line 51
def self.output_types
["application/pdf"] + input_types
end
|
Instance Method Details
#run(&block) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/media/transmogrifiers/libreoffice.rb', line 59
def run(&block)
status = nil
Dir.mktmpdir do |work_directory|
ext = extension(output_type)
if ext
arguments = [
LIBREOFFICE_COMMAND,
'--headless',
"-env:UserInstallation=file://#{work_directory}/home",
'-convert-to', extension(output_type),
'-outdir', work_directory,
input_file
]
status = run_command(*arguments, &block)
libreoffice_output = work_directory + '/' + replace_extension(input_file, extension(output_type))
if File.exist?(libreoffice_output)
replace_file from: libreoffice_output, to: output_file
else
msg = ["Error: Could not find libreoffice output %s \n" % output_file]
msg << arguments.join(' ')
msg += Dir[work_directory + '/*']
unless command_output.empty?
msg << 'LibreOffice said:'
msg << command_output
end
msg = msg.join("\n")
error msg
yield(msg) if block_given?
return :failure
end
else
yield('could not find extension for type %s' % output_type) if block_given?
return :failure
end
end
return status
end
|