Skip to content

Instantly share code, notes, and snippets.

@rlivsey
Created June 28, 2012 10:22
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rlivsey/3010512 to your computer and use it in GitHub Desktop.
Save rlivsey/3010512 to your computer and use it in GitHub Desktop.
HTML -> PDF with JRuby and Flying Saucer
require 'java'
require 'flying_saucer'
java_import org.xhtmlrenderer.pdf.ITextRenderer
class PDFGenerator
def self.generate(html)
new(html).generate
end
def initialize(html)
@html = html
@renderer = ITextRenderer.new
setup_fonts
end
def setup_fonts
fonts_path = File.expand_path(File.join(File.dirname(__FILE__), '../fonts/*.ttf'))
font_resolver = @renderer.getFontResolver()
Dir[fonts_path].each do |file|
font_resolver.add_font(file, true)
end
end
def generate
StringIO.new.tap do |io|
@renderer.set_document_from_string(@html)
@renderer.layout
@renderer.create_pdf(io.to_outputstream)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment