All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Add support for --keep-relative-links flag
- Do not unlink HTML temp files immediately (to enable HTML tempfile inspection)
- Read HTML string and generated PDF file in chunks (to reduce memory overhead of generating large PDFs)
- Add
wicked_pdf_url_base64
helper
- Improved support for Webpacker assets with
wicked_pdf_asset_pack_path
- Support enabling/disabling local file access compatible with wkhtmltopdf 0.12.6
- Add option
use_xvfb
to emulate an X server
- Remove support for older Ruby and Rails versions - This project no longer supports Ruby < 2.2 and Rails < 4. It may work for you, but we are no longer worrying about breaking backwards compatibility for versions older than these. If you are on an affected version, you can continue to use the 1.x releases. Patches to fix broken behavior on old versions may not be accepted unless they are highly decoupled from the rest of the code base.
- Add
raise_on_all_errors: true
option to raise on any error that prints to STDOUT during PDF generation - Add ability to use the
assigns
option torender
to assign instance variables to a PDF template - Add ability to track console progress with
progress: -> (output) { puts output }
. This is useful to add reporting hooks to show your frontend what page number is being generated.
- Fix conflict with other gems that hook into
render
and avoid usingalias_method_chain
where possible - Fix issue using the shell to locate
wkhtmltopdf
in a Bundler environment - Fix
wkhtmltopdf
path detection when HOME environment variable is unset - Fix error when the
Rails
constant is defined but not actually using Rails - Fix compatibility issue with Sprockets 4
- Fix compatibility issue with
Mime::JS
in Rails 5.1+ - Fix deprecation warning by using
after_action
instead ofafter_filter
when available - Provide Rails
base_path
tofind_asset
calls for Sprockets file lookup - Logger changes:
- Documentation changes:
- Update link to wkhtmltopdf homepage
- Update link to
wkhtmltopdf_binary_gem
- Update documentation for usage with the Asset Pipeline
- Document
default_protocol
option - Document
image
andno_image
options - Document issue with DPI/scaling on various platforms
- Document creating and attaching a PDF in a mailer
- Document dependency on
wkhtmltopdf
with RubyGems - Add example using WickedPDF with Rails in an API-only configuration
- Add example for rending a template as a header/footer
- Add GitHub issue template
- Add CodeClimate Badge
- RuboCop cleanup
- Updates to Travis CI pipeline to support newer versions of Ruby & Rails
- Support Rails 5.x and Sprockets 3.x
- Support
window_status: 'somestring'
option, to instruct wkhtmltopdf to wait until the browserwindow.status
is equal to the supplied string. This can be useful to force rendering to wait as explained quite well here - Support
no_stop_slow_scripts: true
to let slow running scripts delay rendering - Changes to asset finding to support Rails 5
- Revert shell escaping of options. The fix was causing more issues than it solved (like "[page] of [topage]" being escaped, and thus not parsed by
wkhtmltopdf
). See #514 for details.
- Numerous RuboCop style violation fixes, spelling errors, and test-setup issues from indyrb.org hack night. Thank you all for your contributions!
- Shellescape options. A stray quote in
header
orfooter
would cause PDF to fail to generate, and this should close down many potential attack vectors if you allow user-supplied values to be passed intowicked_pdf
render options.
- Check that logger responds to info before calling it. It was possible to have a
logger
method defined as a controller helper that would overrideRails.logger
. - Issue with Sprockets 3.0 where an asset referenced in a stylesheet not existing would raise an exception
read_asset
on nil.
- Revert default DPI. Some installs of
wkhtmltopdf
would experience major slowdowns or crashes with it set to 72. It is suggested that a DPI of 75 may be better, but I'm holding off on making it a default without more information.
- The default dpi is now 72. Previously the default would be whatever your
wkhtmltopdf
version specified as the default. This change speeds up generation of documents that containborder-radius
dramatically
- Made minor RuboCop style tweaks.
- Added default RuboCop config and run after test suite.
- Issue with
nil.basename
from asset helpers.
- Accepted that
WickedPDF
cannot guarantee backwards compatibility with older versions ofwkthmltopdf
, and decided to publish a new version with the MAJOR number incremented, signaling that this may have breaking changes for some people, but providing a path forward for progress. This release number also signals that this is a mature (and relatively stable) project, and should be deemed ready for production (since it has been used in production since ~2009, and downloaded over a million times on RubyGems.org). - Stopped attempting to track with version number of
wkhtmltopdf
binary releases (wkhtmltopdf
v9.x ==WickedPDF
v9.x) - Adopted Semantic Versioning for release numbering
- Added a CHANGELOG (based on keepachangelog.com)
- Misc code tweaks as suggested by RuboCop
- Check version of
wkhtmltopdf
before deciding to pass arguments with or without dashes - New arguments and options for the table of contents supported in newer versions of wkhtmltopdf:
text_size_shrink
,level_indentation
,disable_dotted_lines
,disable_toc_links
,xsl_style_sheet
- Merge in global options to
pdf_from_html_file
andpdf_from_string
- Add ability to generate pdf from a web resource:
pdf_from_url(url)
- Removed explicit dependency on Rails, since parts of this library may be used without it.
- Comment out the
:exe_path
option in the generated initializer by default (since many systems won't havewkthmltopdf
installed in that specific location) - Issues with
file://
paths on Windows-based systems - Issues with parsed options/argument ordering on versions of
wkthmltopdf
> 0.9 - Issues with middleware headers when running Rails app mounted in a subdirectory
- Issues with options that have a
key: 'value'
syntax when passed towkthmltopdf
- Issue with
:temp_path
option being deleted from original options hash - Issue with header/footer
:content
being deleted after the first page - Issues with options being modified during processing (including global config options)
- Issues with asset helpers recognizing assets specified without a protocol
- Issues with
url()
references and embeddeddata:base64
assets in stylesheets rendered withwicked_pdf_stylesheet_link_tag
- Asset helpers no longer add a file extension if it already is specified with one