Class: Ea::Render::ImageConverter
- Inherits:
-
Object
- Object
- Ea::Render::ImageConverter
- Defined in:
- lib/ea/render/image_converter.rb
Overview
Converts SVG strings to PNG and PDF using available system
tools. Detects rsvg-convert, ImageMagick convert, and
headless Chrome (chromium --headless). Raises a clear error
when no converter is available.
Instance Attribute Summary collapse
-
#svg ⇒ Object
readonly
Returns the value of attribute svg.
Class Method Summary collapse
-
.available_converter ⇒ Symbol?
Returns the first available converter executable, or nil.
- .chromium_executable ⇒ Object
Instance Method Summary collapse
-
#initialize(svg) ⇒ ImageConverter
constructor
A new instance of ImageConverter.
-
#to_pdf ⇒ String
PDF bytes.
-
#to_png ⇒ String
PNG bytes.
Constructor Details
#initialize(svg) ⇒ ImageConverter
Returns a new instance of ImageConverter.
13 14 15 |
# File 'lib/ea/render/image_converter.rb', line 13 def initialize(svg) @svg = svg end |
Instance Attribute Details
#svg ⇒ Object (readonly)
Returns the value of attribute svg.
10 11 12 |
# File 'lib/ea/render/image_converter.rb', line 10 def svg @svg end |
Class Method Details
.available_converter ⇒ Symbol?
Returns the first available converter executable, or nil.
35 36 37 38 39 40 41 |
# File 'lib/ea/render/image_converter.rb', line 35 def self.available_converter return :rsvg_convert if system("which rsvg-convert > /dev/null 2>&1") return :magick if system("which convert > /dev/null 2>&1") return :chrome if chromium_executable nil end |
.chromium_executable ⇒ Object
43 44 45 46 47 48 |
# File 'lib/ea/render/image_converter.rb', line 43 def self.chromium_executable %w[chromium chromium-browser google-chrome /Applications/Chromium.app/Contents/MacOS/Chromium /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome] .find { |exe| File.executable?(exe) || system("which #{exe} > /dev/null 2>&1") } end |
Instance Method Details
#to_pdf ⇒ String
Returns PDF bytes.
26 27 28 29 30 31 |
# File 'lib/ea/render/image_converter.rb', line 26 def to_pdf with_tempfile(".svg") do |svg_path| File.write(svg_path, svg) convert(svg_path, :pdf) end end |
#to_png ⇒ String
Returns PNG bytes.
18 19 20 21 22 23 |
# File 'lib/ea/render/image_converter.rb', line 18 def to_png with_tempfile(".svg") do |svg_path| File.write(svg_path, svg) convert(svg_path, :png) end end |