wicked_pdf 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGLOG.md +4 -0
- data/README.md +3 -0
- data/lib/wicked_pdf.rb +3 -3
- data/lib/wicked_pdf/middleware.rb +6 -6
- data/lib/wicked_pdf/pdf_helper.rb +20 -3
- data/lib/wicked_pdf/version.rb +1 -1
- data/lib/wicked_pdf/wicked_pdf_helper/assets.rb +1 -3
- data/test/test_helper.rb +1 -1
- data/test/unit/wicked_pdf_test.rb +10 -10
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ecacd0a1f535b9b873927974eb6d03f4faaa1e9
|
4
|
+
data.tar.gz: 637c15c9aff67ac734148b74a27edff75219f6a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7e4d7a62b6134e46dad45c5dee5284030cf9fc69ba115d8200602b591dbf4b69d8d37bde7b79719a973c76e5a5b2c3ddd02eb74fd13fd8a302bb3e8d234871f
|
7
|
+
data.tar.gz: 8fb6793c9939c2d217f4dde048d648d95dfab7f83b2f15ea589e43c94d802ecd98b32da4f57bed1d954183397ff8adc553800a337c7a405c54fd55e68419a3be
|
data/.travis.yml
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
language:
|
2
2
|
- ruby
|
3
3
|
bundler_args: --verbose
|
4
|
+
sudo: required
|
4
5
|
rvm:
|
5
6
|
- 1.9.2
|
6
7
|
- 1.9.3
|
7
8
|
- 2.0
|
8
9
|
- 2.1
|
9
10
|
- 2.2
|
11
|
+
- ruby-head
|
10
12
|
gemfile:
|
11
13
|
- gemfiles/3.0.gemfile
|
12
14
|
- gemfiles/3.1.gemfile
|
@@ -52,3 +54,4 @@ matrix:
|
|
52
54
|
gemfile: gemfiles/rails_edge.gemfile
|
53
55
|
- rvm: 2.2.0
|
54
56
|
gemfile: gemfiles/rails_edge.gemfile
|
57
|
+
- rvm: ruby-head
|
data/CHANGLOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## [master] - Unpublished
|
6
|
+
### Changed
|
7
|
+
- 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 contain `border-radius` dramatically](https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1510)
|
8
|
+
|
5
9
|
## [1.0.0] - 2015-11-03
|
6
10
|
### Changed
|
7
11
|
- Accepted that `WickedPDF` cannot guarantee backwards compatibility with older versions of `wkthmltopdf`, 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](https://rubygems.org/gems/wicked_pdf)).
|
data/README.md
CHANGED
@@ -35,6 +35,8 @@ gem 'wkhtmltopdf-binary'
|
|
35
35
|
|
36
36
|
To your Gemfile and run `bundle install`.
|
37
37
|
|
38
|
+
This wrapper may trail in versions, at the moment it wraps the 0.9 version of `wkhtmltopdf` while there is 0.12 version available. Some of the advanced options listed below is not available with 0.9.
|
39
|
+
|
38
40
|
If your wkhtmltopdf executable is not on your webserver's path, you can configure it in an initializer:
|
39
41
|
|
40
42
|
```ruby
|
@@ -145,6 +147,7 @@ class ThingsController < ApplicationController
|
|
145
147
|
print_media_type: true,
|
146
148
|
disable_smart_shrinking: true,
|
147
149
|
use_xserver: true,
|
150
|
+
background: false, # backround needs to be true to enable background colors to render
|
148
151
|
no_background: true,
|
149
152
|
viewport_size: 'TEXT', # available only with use_xserver or patched QT
|
150
153
|
extra: '', # directly inserted into the command to wkhtmltopdf
|
data/lib/wicked_pdf.rb
CHANGED
@@ -164,11 +164,11 @@ class WickedPdf
|
|
164
164
|
end
|
165
165
|
if type == :name_value
|
166
166
|
parts = value.to_s.split(' ')
|
167
|
-
["--#{name.
|
167
|
+
["--#{name.tr('_', '-')}", *parts]
|
168
168
|
elsif type == :boolean
|
169
|
-
["--#{name.
|
169
|
+
["--#{name.tr('_', '-')}"]
|
170
170
|
else
|
171
|
-
["--#{name.
|
171
|
+
["--#{name.tr('_', '-')}", value.to_s]
|
172
172
|
end
|
173
173
|
end
|
174
174
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class WickedPdf
|
2
2
|
class Middleware
|
3
3
|
def initialize(app, options = {}, conditions = {})
|
4
|
-
@app
|
5
|
-
@options
|
4
|
+
@app = app
|
5
|
+
@options = (WickedPdf.config || {}).merge(options)
|
6
6
|
@conditions = conditions
|
7
7
|
end
|
8
8
|
|
9
9
|
def call(env)
|
10
|
-
@request
|
10
|
+
@request = Rack::Request.new(env)
|
11
11
|
@render_pdf = false
|
12
12
|
|
13
13
|
set_request_to_render_as_pdf(env) if render_as_pdf?
|
@@ -25,10 +25,10 @@ class WickedPdf
|
|
25
25
|
headers.delete('ETag')
|
26
26
|
headers.delete('Cache-Control')
|
27
27
|
|
28
|
-
headers['Content-Length']
|
29
|
-
headers['Content-Type']
|
28
|
+
headers['Content-Length'] = (body.respond_to?(:bytesize) ? body.bytesize : body.size).to_s
|
29
|
+
headers['Content-Type'] = 'application/pdf'
|
30
30
|
if @options.fetch(:disposition, '') == 'attachment'
|
31
|
-
headers['Content-Disposition']
|
31
|
+
headers['Content-Disposition'] = 'attachment'
|
32
32
|
headers['Content-Transfer-Encoding'] = 'binary'
|
33
33
|
end
|
34
34
|
end
|
@@ -53,7 +53,12 @@ module PdfHelper
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def make_pdf(options = {})
|
56
|
-
render_opts = {
|
56
|
+
render_opts = {
|
57
|
+
:template => options[:template],
|
58
|
+
:layout => options[:layout],
|
59
|
+
:formats => options[:formats],
|
60
|
+
:handlers => options[:handlers]
|
61
|
+
}
|
57
62
|
render_opts.merge!(:locals => options[:locals]) if options[:locals]
|
58
63
|
render_opts.merge!(:file => options[:file]) if options[:file]
|
59
64
|
html_string = render_to_string(render_opts)
|
@@ -67,8 +72,15 @@ module PdfHelper
|
|
67
72
|
options[:layout] ||= false
|
68
73
|
options[:template] ||= File.join(controller_path, action_name)
|
69
74
|
options[:disposition] ||= 'inline'
|
75
|
+
options[:dpi] ||= '72'
|
70
76
|
if options[:show_as_html]
|
71
|
-
render_opts = {
|
77
|
+
render_opts = {
|
78
|
+
:template => options[:template],
|
79
|
+
:layout => options[:layout],
|
80
|
+
:formats => options[:formats],
|
81
|
+
:handlers => options[:handlers],
|
82
|
+
:content_type => 'text/html'
|
83
|
+
}
|
72
84
|
render_opts.merge!(:locals => options[:locals]) if options[:locals]
|
73
85
|
render_opts.merge!(:file => options[:file]) if options[:file]
|
74
86
|
render(render_opts)
|
@@ -87,7 +99,12 @@ module PdfHelper
|
|
87
99
|
@hf_tempfiles = [] unless defined?(@hf_tempfiles)
|
88
100
|
@hf_tempfiles.push(tf = WickedPdfTempfile.new("wicked_#{hf}_pdf.html"))
|
89
101
|
options[hf][:html][:layout] ||= options[:layout]
|
90
|
-
render_opts = {
|
102
|
+
render_opts = {
|
103
|
+
:template => options[hf][:html][:template],
|
104
|
+
:layout => options[hf][:html][:layout],
|
105
|
+
:formats => options[hf][:html][:formats],
|
106
|
+
:handlers => options[hf][:html][:handlers]
|
107
|
+
}
|
91
108
|
render_opts.merge!(:locals => options[hf][:html][:locals]) if options[hf][:html][:locals]
|
92
109
|
render_opts.merge!(:file => options[hf][:html][:file]) if options[:file]
|
93
110
|
tf.write render_to_string(render_opts)
|
data/lib/wicked_pdf/version.rb
CHANGED
@@ -22,9 +22,7 @@ module WickedPdfHelper
|
|
22
22
|
"url(#{Regexp.last_match[1]})"
|
23
23
|
else
|
24
24
|
asset = Regexp.last_match[1]
|
25
|
-
if asset_exists?(asset)
|
26
|
-
"url(#{wicked_pdf_asset_path(asset)})"
|
27
|
-
end
|
25
|
+
"url(#{wicked_pdf_asset_path(asset)})" if asset_exists?(asset)
|
28
26
|
end
|
29
27
|
end.html_safe
|
30
28
|
end
|
data/test/test_helper.rb
CHANGED
@@ -95,12 +95,12 @@ class WickedPdfTest < ActiveSupport::TestCase
|
|
95
95
|
|
96
96
|
[:header, :footer].each do |hf|
|
97
97
|
[:center, :font_name, :left, :right].each do |o|
|
98
|
-
assert_equal "--#{hf}-#{o.to_s.
|
98
|
+
assert_equal "--#{hf}-#{o.to_s.tr('_', '-')} header_footer",
|
99
99
|
wp.get_parsed_options(hf => { o => 'header_footer' }).strip
|
100
100
|
end
|
101
101
|
|
102
102
|
[:font_size, :spacing].each do |o|
|
103
|
-
assert_equal "--#{hf}-#{o.to_s.
|
103
|
+
assert_equal "--#{hf}-#{o.to_s.tr('_', '-')} 12",
|
104
104
|
wp.get_parsed_options(hf => { o => '12' }).strip
|
105
105
|
end
|
106
106
|
|
@@ -116,7 +116,7 @@ class WickedPdfTest < ActiveSupport::TestCase
|
|
116
116
|
toc_option = wp.get_valid_option('toc')
|
117
117
|
|
118
118
|
[:font_name, :header_text].each do |o|
|
119
|
-
assert_equal "#{toc_option} --toc-#{o.to_s.
|
119
|
+
assert_equal "#{toc_option} --toc-#{o.to_s.tr('_', '-')} toc",
|
120
120
|
wp.get_parsed_options(:toc => { o => 'toc' }).strip
|
121
121
|
end
|
122
122
|
|
@@ -125,12 +125,12 @@ class WickedPdfTest < ActiveSupport::TestCase
|
|
125
125
|
:l5_font_size, :l6_font_size, :l7_font_size, :l1_indentation, :l2_indentation,
|
126
126
|
:l3_indentation, :l4_indentation, :l5_indentation, :l6_indentation, :l7_indentation
|
127
127
|
].each do |o|
|
128
|
-
assert_equal "#{toc_option} --toc-#{o.to_s.
|
128
|
+
assert_equal "#{toc_option} --toc-#{o.to_s.tr('_', '-')} 5",
|
129
129
|
wp.get_parsed_options(:toc => { o => 5 }).strip
|
130
130
|
end
|
131
131
|
|
132
132
|
[:no_dots, :disable_links, :disable_back_links].each do |o|
|
133
|
-
assert_equal "#{toc_option} --toc-#{o.to_s.
|
133
|
+
assert_equal "#{toc_option} --toc-#{o.to_s.tr('_', '-')}",
|
134
134
|
wp.get_parsed_options(:toc => { o => true }).strip
|
135
135
|
end
|
136
136
|
end
|
@@ -167,18 +167,18 @@ class WickedPdfTest < ActiveSupport::TestCase
|
|
167
167
|
:orientation, :page_size, :proxy, :username, :password, :dpi,
|
168
168
|
:encoding, :user_style_sheet
|
169
169
|
].each do |o|
|
170
|
-
assert_equal "--#{o.to_s.
|
170
|
+
assert_equal "--#{o.to_s.tr('_', '-')} opts", wp.get_parsed_options(o => 'opts').strip
|
171
171
|
end
|
172
172
|
|
173
173
|
[:cookie, :post].each do |o|
|
174
|
-
assert_equal "--#{o.to_s.
|
174
|
+
assert_equal "--#{o.to_s.tr('_', '-')} name value", wp.get_parsed_options(o => 'name value').strip
|
175
175
|
|
176
|
-
nv_formatter = proc { |number| "--#{o.to_s.
|
176
|
+
nv_formatter = proc { |number| "--#{o.to_s.tr('_', '-')} par#{number} val#{number}" }
|
177
177
|
assert_equal "#{nv_formatter.call(1)} #{nv_formatter.call(2)}", wp.get_parsed_options(o => ['par1 val1', 'par2 val2']).strip
|
178
178
|
end
|
179
179
|
|
180
180
|
[:redirect_delay, :zoom, :page_offset].each do |o|
|
181
|
-
assert_equal "--#{o.to_s.
|
181
|
+
assert_equal "--#{o.to_s.tr('_', '-')} 5", wp.get_parsed_options(o => 5).strip
|
182
182
|
end
|
183
183
|
|
184
184
|
[
|
@@ -186,7 +186,7 @@ class WickedPdfTest < ActiveSupport::TestCase
|
|
186
186
|
:enable_plugins, :disable_internal_links, :disable_external_links,
|
187
187
|
:print_media_type, :disable_smart_shrinking, :use_xserver, :no_background
|
188
188
|
].each do |o|
|
189
|
-
assert_equal "--#{o.to_s.
|
189
|
+
assert_equal "--#{o.to_s.tr('_', '-')}", wp.get_parsed_options(o => true).strip
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wicked_pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Z. Sterrett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -186,3 +186,4 @@ test_files:
|
|
186
186
|
- test/functional/wicked_pdf_helper_test.rb
|
187
187
|
- test/test_helper.rb
|
188
188
|
- test/unit/wicked_pdf_test.rb
|
189
|
+
has_rdoc:
|