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 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