wicked_pdf 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -240,7 +240,7 @@ First of all you must configure the render parameter ":show_as_html => params[:d
240
240
 
241
241
  http://localhost:3001/CONTROLLER/X.pdf?debug=1
242
242
 
243
- However, the wicked_pdf_* helpers will use file:// paths for assets when using :show_as_html, and your browser's cross-domain safety feature will kick in, and not render them. To get around this, you can load your assets like so in your templates:
243
+ However, the wicked_pdf_* helpers will use file:/// paths for assets when using :show_as_html, and your browser's cross-domain safety feature will kick in, and not render them. To get around this, you can load your assets like so in your templates:
244
244
 
245
245
  <%= params[:debug].present? ? image_tag('foo') : wicked_pdf_image_tag('foo') %>
246
246
 
@@ -0,0 +1,5 @@
1
+ WickedPdf.config = {
2
+ #:wkhtmltopdf => '/usr/local/bin/wkhtmltopdf',
3
+ #:layout => "pdf.html",
4
+ :exe_path => '/usr/local/bin/wkhtmltopdf'
5
+ }
@@ -0,0 +1,7 @@
1
+ class WickedPdfGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.file "wicked_pdf.rb", "config/initializers/wicked_pdf.rb"
5
+ end
6
+ end
7
+ end
data/lib/pdf_helper.rb CHANGED
@@ -86,7 +86,7 @@ module PdfHelper
86
86
  tf.write render_to_string(:template => options[hf][:html][:template], :layout => options[hf][:html][:layout], :locals => options[hf][:html][:locals], :formats => options[hf][:html][:formats], :handlers => options[hf][:html][:handlers])
87
87
  tf.flush
88
88
  options[hf][:html].delete(:template)
89
- options[hf][:html][:url] = "file://#{tf.path}"
89
+ options[hf][:html][:url] = "file:///#{tf.path}"
90
90
  end
91
91
  end
92
92
  options
data/lib/wicked_pdf.rb CHANGED
@@ -29,16 +29,19 @@ class WickedPdf
29
29
  end
30
30
 
31
31
  def pdf_from_string(string, options={})
32
- command = "\"#{@exe_path}\" #{'-q ' unless on_windows?}#{parse_options(options)} - - " # -q for no errors on stdout
32
+ string_file = WickedPdfTempfile.new("wicked_pdf.html")
33
+ string_file.write(string)
34
+ string_file.close
35
+
36
+ generated_pdf_file = WickedPdfTempfile.new("wicked_pdf_generated_file.pdf")
37
+ command = "\"#{@exe_path}\" #{'-q ' unless on_windows?}#{parse_options(options)} \"file://#{string_file.path}\" \"#{generated_pdf_file.path}\" " # -q for no errors on stdout
33
38
  print_command(command) if in_development_mode?
34
- pdf, err = Open3.popen3(command) do |stdin, stdout, stderr|
35
- stdin.binmode
36
- stdout.binmode
37
- stderr.binmode
38
- stdin.write(string)
39
- stdin.close
40
- [stdout.read, stderr.read]
39
+ err = Open3.popen3(command) do |stdin, stdout, stderr|
40
+ stderr.read
41
41
  end
42
+ generated_pdf_file.rewind
43
+ generated_pdf_file.binmode
44
+ pdf = generated_pdf_file.read
42
45
  raise "PDF could not be generated!" if pdf and pdf.rstrip.length == 0
43
46
  pdf
44
47
  rescue Exception => e
@@ -118,7 +121,7 @@ class WickedPdf
118
121
  tf.flush
119
122
  options[hf].delete(:content)
120
123
  options[hf][:html] = {}
121
- options[hf][:html][:url] = "file://#{tf.path}"
124
+ options[hf][:html][:url] = "file:///#{tf.path}"
122
125
  end
123
126
  unless opt_hf[:html].blank?
124
127
  r += make_option("#{hf.to_s}-html", opt_hf[:html][:url]) unless opt_hf[:html][:url].blank?
@@ -12,11 +12,11 @@ module WickedPdfHelper
12
12
  end
13
13
 
14
14
  def wicked_pdf_image_tag(img, options={})
15
- image_tag "file://#{WickedPdfHelper.root_path.join('public', 'images', img)}", options
15
+ image_tag "file:///#{WickedPdfHelper.root_path.join('public', 'images', img)}", options
16
16
  end
17
17
 
18
18
  def wicked_pdf_javascript_src_tag(jsfile, options={})
19
- javascript_src_tag "file://#{WickedPdfHelper.root_path.join('public', 'javascripts', jsfile)}", options
19
+ javascript_src_tag "file:///#{WickedPdfHelper.root_path.join('public', 'javascripts', jsfile)}", options
20
20
  end
21
21
 
22
22
  def wicked_pdf_javascript_include_tag(*sources)
@@ -32,11 +32,11 @@ module WickedPdfHelper
32
32
  end
33
33
 
34
34
  def wicked_pdf_image_tag(img, options={})
35
- image_tag "file://#{asset_pathname(img).to_s}", options
35
+ image_tag "file:///#{asset_pathname(img).to_s}", options
36
36
  end
37
37
 
38
38
  def wicked_pdf_javascript_src_tag(jsfile, options={})
39
- javascript_include_tag "file://#{asset_pathname(jsfile).to_s}", options
39
+ javascript_include_tag "file:///#{asset_pathname(jsfile).to_s}", options
40
40
  end
41
41
 
42
42
  def wicked_pdf_javascript_include_tag(*sources)
@@ -64,7 +64,7 @@ module WickedPdfHelper
64
64
  if Rails.configuration.assets.compile == false
65
65
  if ActionController::Base.asset_host
66
66
  require 'open-uri'
67
- open(asset_pathname(source)) {|f| f.read }
67
+ open(asset_pathname(source), 'r:UTF-8') {|f| f.read }
68
68
  else
69
69
  IO.read(asset_pathname(source))
70
70
  end
@@ -17,7 +17,7 @@ if defined?(Rails)
17
17
  class WickedRailtie < Rails::Railtie
18
18
  initializer "wicked_pdf.register" do |app|
19
19
  ActionController::Base.send :include, PdfHelper
20
- if Rails::VERSION::MINOR > 0
20
+ if Rails::VERSION::MINOR > 0 && Rails.configuration.assets.enabled
21
21
  ActionView::Base.send :include, WickedPdfHelper::Assets
22
22
  else
23
23
  ActionView::Base.send :include, WickedPdfHelper
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <body>
5
+ <div>
6
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
7
+ </div>
8
+ </body>
9
+ </html>
10
+
11
+
12
+
13
+
14
+
15
+
16
+
@@ -22,7 +22,7 @@ class PdfHelperTest < ActionController::TestCase
22
22
  options = @ac.send( :prerender_header_and_footer,
23
23
  :header => {:html => { :template => 'hf.html.erb'}});
24
24
  assert !options[:header][:html].has_key?(:template)
25
- assert_match /^file:\/\/.*wicked_header_pdf.*\.html/, options[:header][:html][:url]
25
+ assert_match /^file:\/\/\/.*wicked_header_pdf.*\.html/, options[:header][:html][:url]
26
26
  end
27
27
  end
28
28
  end
@@ -9,12 +9,12 @@ class WickedPdfHelperTest < ActionView::TestCase
9
9
  end
10
10
 
11
11
  test 'wicked_pdf_image_tag should return the same as image_tag when passed a full path' do
12
- assert_equal image_tag("file://#{Rails.root.join('public','images','pdf')}"),
12
+ assert_equal image_tag("file:///#{Rails.root.join('public','images','pdf')}"),
13
13
  wicked_pdf_image_tag('pdf')
14
14
  end
15
15
 
16
16
  test 'wicked_pdf_javascript_src_tag should return the same as javascript_src_tag when passed a full path' do
17
- assert_equal javascript_src_tag("file://#{Rails.root.join('public','javascripts','pdf')}", {}),
17
+ assert_equal javascript_src_tag("file:///#{Rails.root.join('public','javascripts','pdf')}", {}),
18
18
  wicked_pdf_javascript_src_tag('pdf')
19
19
  end
20
20
 
@@ -19,6 +19,15 @@ class WickedPdfTest < ActiveSupport::TestCase
19
19
  assert pdf.rstrip.end_with?("%%EOF")
20
20
  assert pdf.length > 100
21
21
  end
22
+
23
+ test "should generate PDF from html document with long lines" do
24
+ wp = WickedPdf.new
25
+ document_with_long_line_file = File.new("test/fixtures/document_with_long_line.html", "r")
26
+ pdf = wp.pdf_from_string(document_with_long_line_file.read)
27
+ assert pdf.start_with?("%PDF-1.4")
28
+ assert pdf.rstrip.end_with?("%%EOF")
29
+ assert pdf.length > 100
30
+ end
22
31
 
23
32
  test "should raise exception when no path to wkhtmltopdf" do
24
33
  assert_raise RuntimeError do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wicked_pdf
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 59
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 8
8
+ - 9
9
9
  - 0
10
- version: 0.8.0
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Miles Z. Sterret
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-14 00:00:00 Z
18
+ date: 2012-12-20 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rails
@@ -67,11 +67,14 @@ files:
67
67
  - lib/wicked_pdf_helper.rb
68
68
  - lib/wicked_pdf_railtie.rb
69
69
  - lib/wicked_pdf_tempfile.rb
70
+ - test/fixtures/document_with_long_line.html
70
71
  - test/fixtures/wicked.css
71
72
  - test/pdf_helper_test.rb
72
73
  - test/test_helper.rb
73
74
  - test/wicked_pdf_helper_test.rb
74
75
  - test/wicked_pdf_test.rb
76
+ - generators/wicked_pdf/templates/wicked_pdf.rb
77
+ - generators/wicked_pdf/wicked_pdf_generator.rb
75
78
  homepage: https://github.com/mileszs/wicked_pdf
76
79
  licenses: []
77
80