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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 22315d98409c9bf1d341ea93f9bd5df1b61b32c1
4
- data.tar.gz: 4731a2ac716c06da0eb5581d5b1a270444faa70a
3
+ metadata.gz: 3e2ffc50ae502ee314327f4c1374d78823e24295
4
+ data.tar.gz: f6e10aec82199686cdda8d7520592399d397d514
5
5
  SHA512:
6
- metadata.gz: 154441b8225aae01f614e149e85563b9881647cd1ee34b2ce5c5f3faf3ddc2ea9c6a3944260f4ec7d8ea32de26967ef3f948c6c4cbf20f736e42b709c3dc97ff
7
- data.tar.gz: 0ded8cccea4e1c24c8eec968ee15922d03891cad7fa81156335002f063d1f1ed3ff8ad9baf717768655caed1cc8dd1328d34d4eeba65dc4d52e41287784ba5a1
6
+ metadata.gz: 58eb4cbd575c2bad0fad91e7a024f5fa25ce8701d4cb025837aa4296a68bacc8298baa8363a73b87809eeaa14ca9fcaff7d0400b2e4dfea183f2425461c59db3
7
+ data.tar.gz: 67927c005ad9f26ebff235a56ae35c8af72517a23481c108538d65067348b96d2ceb734194dd9b1c4b7af48a8d4574afb48a45b8e9d41e5c2666ffccb584c676
data/.gitignore CHANGED
@@ -18,3 +18,4 @@ tmp
18
18
  *.swp
19
19
  test/dummy/log/*.log
20
20
  gemfiles/*.lock
21
+ .DS_Store
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], "", :numeric)
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
 
@@ -1,3 +1,3 @@
1
1
  class WickedPdf
2
- VERSION = '0.9.10'
2
+ VERSION = '0.10.0'
3
3
  end
@@ -58,7 +58,11 @@ module WickedPdfHelper
58
58
  end
59
59
 
60
60
  def wicked_pdf_asset_path(asset)
61
- "file:///#{asset_pathname(asset).to_s}"
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 Rails.configuration.assets.compile == false || source.to_s[0] == '/'
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
- asset_path(source)
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 Rails.configuration.assets.compile == false || source.to_s[0] == '/'
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, :cover, :dpi,
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.9.10
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: 2013-12-12 00:00:00.000000000 Z
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.0.14
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