H2P: HTML in, PDF out¶ ↑
H2P
takes an HTML blob, uses wkhtmltopdf to convert it to PDF, and returns a PDF blob.
Installation¶ ↑
gem install 'h2p' # you'll also need to have wkhtmltopdf installed: gem install 'wkhtmltopdf-binary'
Or just use the source™️.
Usage¶ ↑
... my_html = '<html><body><h1>Hello, world!</h1></body></html>' my_pdf = H2P.convert(my_html) ...
Use the source¶ ↑
If you don't want to add another dependency to your project, here's the source of the present gem (with the modulation dependency removed.) Feel free to use and manipulate however you please:
# This is free and unencumbered software released into the public domain # Full license here: https://unlicense.org/ require 'tmpdir' require 'fileutils' module H2P def self.tmp_path(ext) stamp = Time.now.to_f @counter ||= 0 File.join(Dir.tmpdir, "h2p-#{stamp}-#{@counter += 1}.#{ext}") end def self.convert(html) html_path = tmp_path(:html) pdf_path = tmp_path(:pdf) File.open(html_path, 'w+') { |f| f << html } system('wkhtmltopdf', '-q', html_path, pdf_path) IO.read(pdf_path) ensure FileUtils.rm(html_path) rescue nil FileUtils.rm(pdf_path) rescue nil end end