wicked_pdf 0.9.10 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|