Class: WickedPdf
- Inherits:
-
Object
- Object
- WickedPdf
- Defined in:
- lib/wicked_pdf.rb,
lib/wicked_pdf/railtie.rb,
lib/wicked_pdf/version.rb,
lib/wicked_pdf/tempfile.rb,
lib/wicked_pdf/middleware.rb,
lib/wicked_pdf/pdf_helper.rb,
lib/wicked_pdf/wicked_pdf_helper.rb,
lib/wicked_pdf/wicked_pdf_helper/assets.rb
Defined Under Namespace
Modules: PdfHelper, WickedPdfHelper Classes: Middleware, WickedPdfTempfile, WickedRailtie
Constant Summary collapse
- DEFAULT_BINARY_VERSION =
Gem::Version.new('0.9.9')
- BINARY_VERSION_WITHOUT_DASHES =
Gem::Version.new('0.12.0')
- EXE_NAME =
'wkhtmltopdf'.freeze
- VERSION =
'1.1.0'.freeze
- @@config =
{}
Instance Attribute Summary collapse
-
#binary_version ⇒ Object
Returns the value of attribute binary_version.
Instance Method Summary collapse
-
#initialize(wkhtmltopdf_binary_path = nil) ⇒ WickedPdf
constructor
A new instance of WickedPdf.
- #pdf_from_html_file(filepath, options = {}) ⇒ Object
- #pdf_from_string(string, options = {}) ⇒ Object
- #pdf_from_url(url, options = {}) ⇒ Object
Constructor Details
#initialize(wkhtmltopdf_binary_path = nil) ⇒ WickedPdf
Returns a new instance of WickedPdf.
39 40 41 42 43 44 45 46 |
# File 'lib/wicked_pdf.rb', line 39 def initialize(wkhtmltopdf_binary_path = nil) @exe_path = wkhtmltopdf_binary_path || find_wkhtmltopdf_binary_path raise "Location of #{EXE_NAME} unknown" if @exe_path.empty? raise "Bad #{EXE_NAME}'s path: #{@exe_path}" unless File.exist?(@exe_path) raise "#{EXE_NAME} is not executable" unless File.executable?(@exe_path) retrieve_binary_version end |
Instance Attribute Details
#binary_version ⇒ Object
Returns the value of attribute binary_version.
37 38 39 |
# File 'lib/wicked_pdf.rb', line 37 def binary_version @binary_version end |
Instance Method Details
#pdf_from_html_file(filepath, options = {}) ⇒ Object
48 49 50 |
# File 'lib/wicked_pdf.rb', line 48 def pdf_from_html_file(filepath, = {}) pdf_from_url("file:///#{filepath}", ) end |
#pdf_from_string(string, options = {}) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/wicked_pdf.rb', line 52 def pdf_from_string(string, = {}) = .dup .merge!(WickedPdf.config) { |_key, option, _config| option } string_file = WickedPdfTempfile.new('wicked_pdf.html', [:temp_path]) string_file.binmode string_file.write(string) string_file.close pdf = pdf_from_html_file(string_file.path, ) pdf ensure string_file.close! if string_file end |
#pdf_from_url(url, options = {}) ⇒ Object
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 |
# File 'lib/wicked_pdf.rb', line 66 def pdf_from_url(url, = {}) # merge in global config options .merge!(WickedPdf.config) { |_key, option, _config| option } generated_pdf_file = WickedPdfTempfile.new('wicked_pdf_generated_file.pdf', [:temp_path]) command = [@exe_path] command << '-q' unless on_windows? # suppress errors on stdout command += () command << url command << generated_pdf_file.path.to_s print_command(command.inspect) if in_development_mode? err = Open3.popen3(*command) do |_stdin, _stdout, stderr| stderr.read end if [:return_file] return_file = .delete(:return_file) return generated_pdf_file end generated_pdf_file.rewind generated_pdf_file.binmode pdf = generated_pdf_file.read raise "PDF could not be generated!\n Command Error: #{err}" if pdf && pdf.rstrip.empty? pdf rescue => e raise "Failed to execute:\n#{command}\nError: #{e}" ensure generated_pdf_file.close! if generated_pdf_file && !return_file end |