def pdf_from_url(url, options = {})
options.merge!(WickedPdf.config) { |_key, option, _config| option }
generated_pdf_file = WickedPdfTempfile.new('wicked_pdf_generated_file.pdf', options[:temp_path])
command = [@exe_path]
command += parse_options(options)
command << url
command << generated_pdf_file.path.to_s
print_command(command.inspect) if in_development_mode?
if track_progress?(options)
invoke_with_progress(command, options)
else
err = Open3.popen3(*command) do |_stdin, _stdout, stderr|
stderr.read
end
end
if options[:return_file]
return_file = options.delete(:return_file)
return generated_pdf_file
end
generated_pdf_file.rewind
generated_pdf_file.binmode
pdf = generated_pdf_file.read
raise "Error generating PDF\n Command Error: #{err}" if options[:raise_on_all_errors] && !err.empty?
raise "PDF could not be generated!\n Command Error: #{err}" if pdf && pdf.rstrip.empty?
pdf
rescue StandardError => e
raise "Failed to execute:\n#{command}\nError: #{e}"
ensure
generated_pdf_file.close! if generated_pdf_file && !return_file
end