Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HtmlToPdf

This gem will generate pdf of the action's html requested as pdf.

Supports Rails 7.x and Rails 8.x (latest).

Installation

Install and setup wkhtmltopdf. Please refer https://wkhtmltopdf.org for more details.

Add this line to your application's Gemfile:

gem 'htmlToPdf'

And then execute:

$ bundle

Or install it yourself as:

$ gem install htmlToPdf

Usage

write following code inside Application Controller

before_action :html_to_pdf

in views:

<%= link_to 'download', your_action_path(:format => 'pdf') %>

customizing pdf downloads:

you can customize pdf like you can give the name and layout for the pdf.to customize pdf use this following example:

<%= link_to 'download', your_action_path(:format => 'pdf',:pdf_options => {title: 'pdf_name', layout: 'layout_name'}) %>

this will generate the pdf of your_action named pdf_name.pdf with layout layout_name.

one can call any action as pdf and he get the pdf file of that action's html.

customizing page padding and wkhtmltopdf options:

<%= link_to 'download', your_action_path(:format => 'pdf', :pdf_options => {
  title: 'pdf_name',
  layout: 'layout_name',
  padding: '10mm',
  wkhtmltopdf_options: {
    orientation: 'Landscape',
    page_size: 'A4',
    margin_top: '15mm',
    grayscale: true
  }
}) %>

padding is a shorthand that sets all four margins at once. wkhtmltopdf_options accepts any option the wkhtmltopdf CLI supports (underscores or dashes both work, e.g. margin_top, page_size, orientation, dpi, zoom, encoding, javascript_delay, disable_smart_shrinking, ...) — see https://wkhtmltopdf.org for the full list. Boolean-style flags (e.g. grayscale: true) are passed as bare flags; anything else is passed as --flag value.

Security note: pdf_options is read from the request's query params and forwarded verbatim as CLI flags to wkhtmltopdf. If your_action_path is publicly reachable, anyone can pass arbitrary wkhtmltopdf flags to it. Only expose the pdf format on actions where that's acceptable, or filter pdf_options yourself before it reaches html_to_pdf (e.g. in a before_action that runs earlier).

Configuration

Set gem-wide defaults in an initializer (e.g. config/initializers/html_to_pdf.rb):

HtmlToPdf.configure do |config|
  # Path to the wkhtmltopdf binary. Defaults to "wkhtmltopdf" (resolved via $PATH).
  # Useful when it's installed via the wkhtmltopdf-binary gem or a custom location.
  config.wkhtmltopdf_path = Wkhtmltopdf.path # or an absolute path string

  # Layout used when pdf_options[:layout] isn't given. Defaults to "application".
  config.default_layout = "pdf"

  # wkhtmltopdf options applied to every PDF, merged under any per-request
  # padding/wkhtmltopdf_options. Defaults to {}.
  config.default_options = { dpi: 300, margin_top: "10mm" }

  # Directory temporary .html/.pdf files are written to. Defaults to Rails.root/tmp.
  config.tmp_dir = Rails.root.join("tmp", "pdfs")
end
Make sure you have configured your asset_host in application's Rails environment, otherwise assets might not be loaded properly.

config.action_controller.asset_host = "YOUR_ASSETS_HOST"

About

This gem will generate pdf of given html using wkhtmltopdf

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages