diff --git a/README.md b/README.md index 0a8a8a3..d73a883 100644 --- a/README.md +++ b/README.md @@ -24,38 +24,40 @@ gem install wkhtmltoimage-binary ## Usage - # IMGKit.new takes the HTML and any options for wkhtmltoimage - # run `wkhtmltoimage --extended-help` for a full list of options - kit = IMGKit.new(html, :quality => 50) - kit.stylesheets << '/path/to/css/file' - kit.javascripts << '/path/to/js/file' - - # Get the image BLOB - img = kit.to_img - - # New in 1.3! - img = kit.to_img(:jpg) #default - img = kit.to_img(:jpeg) - img = kit.to_img(:png) - - # Save the image to a file - file = kit.to_file('/path/to/save/file.jpg') - file = kit.to_file('/path/to/save/file.png') - - # IMGKit.new can optionally accept a URL or a File. - # Stylesheets nor Javascripts can not be added when source is provided as a URL of File. - kit = IMGKit.new('http://google.com') - kit = IMGKit.new(File.new('/path/to/html')) - - # Add any kind of option through meta tags - IMGKit.new(' 50) +kit.stylesheets << '/path/to/css/file' +kit.javascripts << '/path/to/js/file' + +# Get the image BLOB +img = kit.to_img + +# New in 1.3! +img = kit.to_img(:jpg) #default +img = kit.to_img(:jpeg) +img = kit.to_img(:png) + +# Save the image to a file +file = kit.to_file('/path/to/save/file.jpg') +file = kit.to_file('/path/to/save/file.png') + +# IMGKit.new can optionally accept a URL or a File. +# Stylesheets nor Javascripts can not be added when source is provided as a URL of File. +kit = IMGKit.new('http://google.com') +kit = IMGKit.new(File.new('/path/to/html')) + +# Add any kind of option through meta tags +IMGKit.new('` tag options (see **Usage**) : May be changed from its default (`imgkit-`): - config.meta_tag_prefix = 'imgkit-option' +```ruby + config.meta_tag_prefix = 'imgkit-option' +``` ### Additional default options Any flag accepted by `wkhtmltoimage` may be set thus: - config.default_options = { - :quality => 60 - } +```ruby +config.default_options = { + quality: 60 +} +``` For a flag which takes no parameters, use `true` for the value: - 'no-images' => true +```ruby +'no-images' => true +``` For flags with multiple parameters, use an array: - :cookie => ['my_session', '123BADBEEF456'] +``` +cookie: ['my_session', '123BADBEEF456'] +``` ### Overriding options When initializing an `IMGKit` options may be may be set for the life time of the `IMGKit` object: - IMGKit.new('http://example.com/form', :post => ['my_field', 'my_unique_value']) +```ruby +IMGKit.new('http://example.com/form', :post => ['my_field', 'my_unique_value']) +``` ## Heroku @@ -150,9 +166,11 @@ version 0.10.0 has worked best for me assuming its in that location you can just do: - IMGKit.configure do |config| - config.wkhtmltoimage = Rails.root.join('bin', 'wkhtmltoimage-amd64').to_s if ENV['RACK_ENV'] == 'production' - end +```ruby +IMGKit.configure do |config| + config.wkhtmltoimage = Rails.root.join('bin', 'wkhtmltoimage-amd64').to_s if ENV['RACK_ENV'] == 'production' +end +``` If you're not using Rails just replace Rails.root with the root dir of your app. @@ -162,35 +180,41 @@ If you're not using Rails just replace Rails.root with the root dir of your app. ### Mime Types register a .jpg mime type in: - #config/initializers/mime_type.rb - Mime::Type.register "image/jpeg", :jpg +```ruby +#config/initializers/mime_type.rb +Mime::Type.register "image/jpeg", :jpg +``` register a .png mime type in: - #config/initializers/mime_type.rb - Mime::Type.register "image/png", :png +```ruby +#config/initializers/mime_type.rb +Mime::Type.register "image/png", :png +``` ### Controller Actions You can respond in a controller with: - @kit = IMGKit.new(render_to_string) +```ruby +@kit = IMGKit.new(render_to_string) - format.jpg do - send_data(@kit.to_jpg, :type => "image/jpeg", :disposition => 'inline') - end +format.jpg do + send_data(@kit.to_jpg, :type => "image/jpeg", :disposition => 'inline') +end - - or - +- or - - format.png do - send_data(@kit.to_png, :type => "image/png", :disposition => 'inline') - end +format.png do + send_data(@kit.to_png, :type => "image/png", :disposition => 'inline') +end - - or - +- or - - respond_to do |format| - send_data(@kit.to_img(format.to_sym), - :type => "image/#{format}", :disposition => 'inline') - end +respond_to do |format| + send_data(@kit.to_img(format.to_sym), + :type => "image/#{format}", :disposition => 'inline') +end +``` This allows you to take advantage of rails page caching so you only generate the image when you need to. @@ -198,27 +222,29 @@ image when you need to. ## --user-style-sheet workaround To overcome the lack of support for --user-style-sheet option by wkhtmltoimage 0.10.0 rc2 as reported here http://code.google.com/p/wkhtmltopdf/issues/detail?id=387 - require 'imgkit' - require 'restclient' - require 'stringio' - - url = 'http://domain/path/to/stylesheet.css' - css = StringIO.new( RestClient.get(url) ) - - kit = IMGKit.new(< - - - - coolest converter - - -
image kit
- - - EOD - - kit.stylesheets << css +```ruby +require 'imgkit' +require 'restclient' +require 'stringio' + +url = 'http://domain/path/to/stylesheet.css' +css = StringIO.new( RestClient.get(url) ) + +kit = IMGKit.new(< + + + + coolest converter + + +
image kit
+ + +EOD + +kit.stylesheets << css +``` ## Paperclip Example @@ -236,17 +262,17 @@ Controller: ```ruby def upload_image - model = Model.find(params[:id]) - html = render_to_string - kit = IMGKit.new(html) - img = kit.to_img(:png) - file = Tempfile.new(["template_#{model.id}", 'png'], 'tmp', - :encoding => 'ascii-8bit') - file.write(img) - file.flush - model.snapshot = file - model.save - file.unlink + model = Model.find(params[:id]) + html = render_to_string + kit = IMGKit.new(html) + img = kit.to_img(:png) + file = Tempfile.new(["template_#{model.id}", 'png'], 'tmp', + :encoding => 'ascii-8bit') + file.write(img) + file.flush + model.snapshot = file + model.save + file.unlink end ``` @@ -257,22 +283,22 @@ end Contributed by @ticktricktrack ```ruby - class MyClass < ActiveRecord::Base - mount_uploader :snapshot, SnapshotUploader +class MyClass < ActiveRecord::Base + mount_uploader :snapshot, SnapshotUploader - after_create :take_snapshot + after_create :take_snapshot - # private + # private - def take_snapshot - file = Tempfile.new(["template_#{self.id.to_s}", '.jpg'], 'tmp', :encoding => 'ascii-8bit') - file.write(IMGKit.new(self.html_body, quality: 50, width: 600).to_jpg) - file.flush - self.snapshot = file - self.save - file.unlink - end + def take_snapshot + file = Tempfile.new(["template_#{self.id.to_s}", '.jpg'], 'tmp', :encoding => 'ascii-8bit') + file.write(IMGKit.new(self.html_body, quality: 50, width: 600).to_jpg) + file.flush + self.snapshot = file + self.save + file.unlink end +end ```