Guides / Ruby

Convert HTML to PDF in Ruby

Invoices, contracts, reports, certificates: every product eventually needs PDFs, and Ruby PDF libraries make you hand-position every box. RasterKit prints through real Chromium instead — write ordinary HTML and CSS, POST it, get a finished PDF back.

Because it's a print pipeline rather than a drawing API, you keep your existing templates and stylesheets: flexbox, grid, web fonts, page-break CSS, repeating headers and footers with page numbers all just work.

1. Get an API key

Sign up free (magic link, no card) — your key is shown right after sign-in. You get 100 renders/month free across screenshots, PDFs, and images.

2. Make the request

require "net/http"
require "json"

uri = URI("https://rasterkit.com/v1/pdf")
req = Net::HTTP::Post.new(uri)
req["x-api-key"] = ENV.fetch("RASTERKIT_API_KEY")
req["content-type"] = "application/json"
req.body = '{"url": "https://example.com/invoice/42", "format": "A4", "print_background": true}'

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true, read_timeout: 60) { |http| http.request(req) }
raise "Render failed: #{res.code} #{res.body}" unless res.code == "200"
File.binwrite("document.pdf", res.body)
puts "Saved document.pdf"

The response body is the file itself — no JSON envelope to unwrap, no second download request. Errors come back as JSON with a stable error code.

3. Tune the output

The PDF API reference documents every parameter. The ones people reach for first:

Use cases

FAQ

How do I add page numbers?

Pass footer_template with Chromium's built-in classes, e.g. <span class="pageNumber"></span> / <span class="totalPages"></span>.

Why are my background colors missing?

Browsers skip backgrounds when printing by default. RasterKit sets print_background: true by default — if you turned it off, turn it back on.

Can I control page breaks?

Yes — standard CSS (break-inside: avoid, break-after: page) is respected, and prefer_css_page_size lets your @page rules define the paper size.

Related guides

Get your free API key →