wicked_pdf 0.9.10 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +3 -1
- data/lib/wicked_pdf.rb +20 -2
- data/lib/wicked_pdf/version.rb +1 -1
- data/lib/wicked_pdf/wicked_pdf_helper.rb +21 -6
- data/test/functional/wicked_pdf_helper_assets_test.rb +29 -0
- data/test/unit/wicked_pdf_test.rb +9 -1
- data/wicked_pdf.gemspec +1 -0
- metadata +31 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e2ffc50ae502ee314327f4c1374d78823e24295
|
4
|
+
data.tar.gz: f6e10aec82199686cdda8d7520592399d397d514
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58eb4cbd575c2bad0fad91e7a024f5fa25ce8701d4cb025837aa4296a68bacc8298baa8363a73b87809eeaa14ca9fcaff7d0400b2e4dfea183f2425461c59db3
|
7
|
+
data.tar.gz: 67927c005ad9f26ebff235a56ae35c8af72517a23481c108538d65067348b96d2ceb734194dd9b1c4b7af48a8d4574afb48a45b8e9d41e5c2666ffccb584c676
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -125,7 +125,7 @@ class ThingsController < ApplicationController
|
|
125
125
|
:basic_auth => false # when true username & password are automatically sent from session
|
126
126
|
:username => 'TEXT',
|
127
127
|
:password => 'TEXT',
|
128
|
-
:cover => 'URL',
|
128
|
+
:cover => 'URL, Pathname, or raw HTML string',
|
129
129
|
:dpi => 'dpi',
|
130
130
|
:encoding => 'TEXT',
|
131
131
|
:user_style_sheet => 'URL',
|
@@ -133,8 +133,10 @@ class ThingsController < ApplicationController
|
|
133
133
|
:post => ['query QUERY_PARAM'], # could be an array or a single string in a 'name value' format
|
134
134
|
:redirect_delay => NUMBER,
|
135
135
|
:javascript_delay => NUMBER,
|
136
|
+
:image_quality => NUMBER,
|
136
137
|
:zoom => FLOAT,
|
137
138
|
:page_offset => NUMBER,
|
139
|
+
:javascript_delay => NUMBER,
|
138
140
|
:book => true,
|
139
141
|
:default_header => true,
|
140
142
|
:disable_javascript => false,
|
data/lib/wicked_pdf.rb
CHANGED
@@ -116,6 +116,7 @@ class WickedPdf
|
|
116
116
|
parse_header_footer(:header => options.delete(:header),
|
117
117
|
:footer => options.delete(:footer),
|
118
118
|
:layout => options[:layout]),
|
119
|
+
parse_cover(options.delete(:cover)),
|
119
120
|
parse_toc(options.delete(:toc)),
|
120
121
|
parse_outline(options.delete(:outline)),
|
121
122
|
parse_margins(options.delete(:margin)),
|
@@ -178,6 +179,22 @@ class WickedPdf
|
|
178
179
|
r
|
179
180
|
end
|
180
181
|
|
182
|
+
def parse_cover(argument)
|
183
|
+
arg = argument.to_s
|
184
|
+
return '' if arg.blank?
|
185
|
+
r = '--cover '
|
186
|
+
# Filesystem path or URL - hand off to wkhtmltopdf
|
187
|
+
if arg.include?(Rails.root.to_s) || (arg[0,4] == 'http')
|
188
|
+
r + arg
|
189
|
+
else # HTML content
|
190
|
+
@hf_tempfiles ||= []
|
191
|
+
@hf_tempfiles << tf=WickedPdfTempfile.new("wicked_cover_pdf.html")
|
192
|
+
tf.write arg
|
193
|
+
tf.flush
|
194
|
+
r + tf.path
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
181
198
|
def parse_toc(options)
|
182
199
|
r = '--toc ' unless options.nil?
|
183
200
|
unless options.blank?
|
@@ -225,7 +242,6 @@ class WickedPdf
|
|
225
242
|
:proxy,
|
226
243
|
:username,
|
227
244
|
:password,
|
228
|
-
:cover,
|
229
245
|
:dpi,
|
230
246
|
:encoding,
|
231
247
|
:user_style_sheet])
|
@@ -234,7 +250,8 @@ class WickedPdf
|
|
234
250
|
r +=make_options(options, [ :redirect_delay,
|
235
251
|
:zoom,
|
236
252
|
:page_offset,
|
237
|
-
:javascript_delay
|
253
|
+
:javascript_delay,
|
254
|
+
:image_quality], "", :numeric)
|
238
255
|
r +=make_options(options, [ :book,
|
239
256
|
:default_header,
|
240
257
|
:disable_javascript,
|
@@ -247,6 +264,7 @@ class WickedPdf
|
|
247
264
|
:disable_smart_shrinking,
|
248
265
|
:use_xserver,
|
249
266
|
:no_background], "", :boolean)
|
267
|
+
r +=make_options(options, [ :no_stop_slow_scripts ], "", nil)
|
250
268
|
end
|
251
269
|
end
|
252
270
|
|
data/lib/wicked_pdf/version.rb
CHANGED
@@ -58,7 +58,11 @@ module WickedPdfHelper
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def wicked_pdf_asset_path(asset)
|
61
|
-
|
61
|
+
if (pathname = asset_pathname(asset).to_s) =~ URI_REGEXP
|
62
|
+
pathname
|
63
|
+
else
|
64
|
+
"file:///#{pathname}"
|
65
|
+
end
|
62
66
|
end
|
63
67
|
|
64
68
|
private
|
@@ -67,10 +71,10 @@ module WickedPdfHelper
|
|
67
71
|
URI_REGEXP = %r{^[-a-z]+://|^(?:cid|data):|^//}
|
68
72
|
|
69
73
|
def asset_pathname(source)
|
70
|
-
if
|
71
|
-
if asset_path(source) =~ URI_REGEXP
|
74
|
+
if precompiled_asset?(source)
|
75
|
+
if (pathname = set_protocol(asset_path(source))) =~ URI_REGEXP
|
72
76
|
# asset_path returns an absolute URL using asset_host if asset_host is set
|
73
|
-
|
77
|
+
pathname
|
74
78
|
else
|
75
79
|
File.join(Rails.public_path, asset_path(source).sub(/\A#{Rails.application.config.action_controller.relative_url_root}/, ''))
|
76
80
|
end
|
@@ -79,9 +83,20 @@ module WickedPdfHelper
|
|
79
83
|
end
|
80
84
|
end
|
81
85
|
|
86
|
+
#will prepend a http or default_protocol to a protocol realtive URL
|
87
|
+
def set_protocol(source)
|
88
|
+
protocol = WickedPdf.config[:default_protocol] || "http"
|
89
|
+
source = [protocol, ":", source].join if source[0,2] == "//"
|
90
|
+
return source
|
91
|
+
end
|
92
|
+
|
93
|
+
def precompiled_asset?(source)
|
94
|
+
Rails.configuration.assets.compile == false || source.to_s[0] == '/'
|
95
|
+
end
|
96
|
+
|
82
97
|
def read_asset(source)
|
83
|
-
if
|
84
|
-
if asset_path(source) =~ URI_REGEXP
|
98
|
+
if precompiled_asset?(source)
|
99
|
+
if set_protocol(asset_path(source)) =~ URI_REGEXP
|
85
100
|
read_from_uri(source)
|
86
101
|
else
|
87
102
|
IO.read(asset_pathname(source))
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'action_view/test_case'
|
3
|
+
|
4
|
+
class WickedPdfHelperAssetsTest < ActionView::TestCase
|
5
|
+
|
6
|
+
include WickedPdfHelper::Assets
|
7
|
+
|
8
|
+
if Rails::VERSION::MAJOR == 4
|
9
|
+
test 'wicked_pdf_asset_path should return an url when assets are served by an asset server' do
|
10
|
+
expects(:asset_pathname => 'http://assets.domain.com/dummy.png')
|
11
|
+
assert_equal 'http://assets.domain.com/dummy.png', wicked_pdf_asset_path('dummy.png')
|
12
|
+
end
|
13
|
+
|
14
|
+
test 'wicked_pdf_asset_path should return an url with a protocol when assets are served by an asset server with relative urls' do
|
15
|
+
expects(:asset_path => '//assets.domain.com/dummy.png')
|
16
|
+
expects("precompiled_asset?" => true)
|
17
|
+
assert_equal 'http://assets.domain.com/dummy.png', wicked_pdf_asset_path('dummy.png')
|
18
|
+
end
|
19
|
+
|
20
|
+
test 'wicked_pdf_asset_path should return a path when assets are precompiled' do
|
21
|
+
expects("precompiled_asset?" => false)
|
22
|
+
path = wicked_pdf_asset_path('application.css')
|
23
|
+
|
24
|
+
assert path.include?("/assets/stylesheets/application.css")
|
25
|
+
assert path.include?("file://")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -129,10 +129,18 @@ class WickedPdfTest < ActiveSupport::TestCase
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
test "should parse cover" do
|
133
|
+
wp = WickedPdf.new
|
134
|
+
pathname = Rails.root.join('app','views','pdf','file.html')
|
135
|
+
assert_equal '--cover http://example.org', wp.get_parsed_options(:cover => 'http://example.org').strip, 'URL'
|
136
|
+
assert_equal "--cover #{pathname.to_s}", wp.get_parsed_options(:cover => pathname).strip, 'Pathname in Rails.root'
|
137
|
+
assert_match /--cover .+wicked_cover_pdf.+\.html/, wp.get_parsed_options(:cover => '<html><body>HELLO</body></html>').strip, 'HTML'
|
138
|
+
end
|
139
|
+
|
132
140
|
test "should parse other options" do
|
133
141
|
wp = WickedPdf.new
|
134
142
|
|
135
|
-
[ :orientation, :page_size, :proxy, :username, :password, :
|
143
|
+
[ :orientation, :page_size, :proxy, :username, :password, :dpi,
|
136
144
|
:encoding, :user_style_sheet
|
137
145
|
].each do |o|
|
138
146
|
assert_equal "--#{o.to_s.gsub('_', '-')} \"opts\"", wp.get_parsed_options(o => "opts").strip
|
data/wicked_pdf.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
23
|
spec.add_development_dependency 'rake'
|
24
24
|
spec.add_development_dependency 'sqlite3'
|
25
|
+
spec.add_development_dependency 'mocha'
|
25
26
|
|
26
27
|
spec.description = <<desc
|
27
28
|
Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
|
metadata
CHANGED
@@ -1,69 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wicked_pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
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:
|
11
|
+
date: 2014-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mocha
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
description: |
|
@@ -75,8 +89,8 @@ executables: []
|
|
75
89
|
extensions: []
|
76
90
|
extra_rdoc_files: []
|
77
91
|
files:
|
78
|
-
- .gitignore
|
79
|
-
- .travis.yml
|
92
|
+
- ".gitignore"
|
93
|
+
- ".travis.yml"
|
80
94
|
- Gemfile
|
81
95
|
- LICENSE.txt
|
82
96
|
- README.md
|
@@ -135,6 +149,7 @@ files:
|
|
135
149
|
- test/fixtures/document_with_long_line.html
|
136
150
|
- test/fixtures/wicked.css
|
137
151
|
- test/functional/pdf_helper_test.rb
|
152
|
+
- test/functional/wicked_pdf_helper_assets_test.rb
|
138
153
|
- test/functional/wicked_pdf_helper_test.rb
|
139
154
|
- test/test_helper.rb
|
140
155
|
- test/unit/wicked_pdf_test.rb
|
@@ -149,17 +164,17 @@ require_paths:
|
|
149
164
|
- lib
|
150
165
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
166
|
requirements:
|
152
|
-
- -
|
167
|
+
- - ">="
|
153
168
|
- !ruby/object:Gem::Version
|
154
169
|
version: '0'
|
155
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
171
|
requirements:
|
157
|
-
- -
|
172
|
+
- - ">="
|
158
173
|
- !ruby/object:Gem::Version
|
159
174
|
version: '0'
|
160
175
|
requirements: []
|
161
176
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.
|
177
|
+
rubygems_version: 2.2.2
|
163
178
|
signing_key:
|
164
179
|
specification_version: 4
|
165
180
|
summary: PDF generator (from HTML) gem for Ruby on Rails
|
@@ -201,6 +216,7 @@ test_files:
|
|
201
216
|
- test/fixtures/document_with_long_line.html
|
202
217
|
- test/fixtures/wicked.css
|
203
218
|
- test/functional/pdf_helper_test.rb
|
219
|
+
- test/functional/wicked_pdf_helper_assets_test.rb
|
204
220
|
- test/functional/wicked_pdf_helper_test.rb
|
205
221
|
- test/test_helper.rb
|
206
222
|
- test/unit/wicked_pdf_test.rb
|