wisepdf 1.1.1 → 1.1.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.1.2
@@ -11,8 +11,6 @@ module Wisepdf
11
11
  def render(options = nil, *args, &block)
12
12
  if options.is_a?(Hash) && options.has_key?(:pdf)
13
13
  log_pdf_creation
14
- options[:basic_auth] = set_basic_auth(options)
15
-
16
14
  make_and_send_pdf(options.delete(:pdf), Wisepdf::Configuration.options.merge(options))
17
15
  else
18
16
  super
@@ -22,71 +20,63 @@ module Wisepdf
22
20
  def render_to_string(options = nil, *args, &block)
23
21
  if options.is_a?(Hash) && options.has_key?(:pdf)
24
22
  log_pdf_creation
25
- options[:basic_auth] = set_basic_auth(options)
26
- options.delete :pdf
23
+ options.delete(:pdf)
27
24
  make_pdf(Wisepdf::Configuration.options.merge(options))
28
25
  else
29
26
  super
30
27
  end
31
28
  end
32
29
 
33
- private
34
-
35
- def log_pdf_creation
36
- logger.info '*'*15 + 'PDF' + '*'*15
37
- end
38
-
39
- def set_basic_auth(options={})
40
- options[:basic_auth] ||= Wisepdf::Configuration.options.fetch(:basic_auth){ false }
41
- if options[:basic_auth] && request.env["HTTP_AUTHORIZATION"]
42
- request.env["HTTP_AUTHORIZATION"].split(" ").last
43
- end
44
- end
30
+ protected
31
+ def log_pdf_creation
32
+ logger.info '*'*15 + 'PDF' + '*'*15
33
+ end
45
34
 
46
- def clean_temp_files
47
- if defined?(@hf_tempfiles)
48
- @hf_tempfiles.each { |tf| tf.close! }
49
- end
35
+ def clean_temp_files
36
+ if defined?(@hf_tempfiles)
37
+ @hf_tempfiles.each { |tf| tf.close! }
50
38
  end
39
+ end
51
40
 
52
- def make_pdf(options = {})
53
- html_string = render_to_string(:template => options[:template], :layout => options[:layout])
54
- options = prerender_header_and_footer(options)
55
- w = Wisepdf::Writer.new(options[:wkhtmltopdf])
56
- w.to_pdf(html_string, options)
57
- end
41
+ def make_pdf(options = {})
42
+ html_string = render_to_string(:template => options.delete(:template), :layout => options.delete(:layout))
43
+ options = prerender_header_and_footer(options)
44
+ w = Wisepdf::Writer.new(options[:wkhtmltopdf])
45
+ w.to_pdf(html_string, options)
46
+ end
58
47
 
59
- def make_and_send_pdf(pdf_name, options={})
60
- options[:wkhtmltopdf] ||= nil
61
- options[:layout] ||= false
62
- options[:template] ||= File.join(controller_path, action_name)
63
- options[:disposition] ||= "inline"
64
- if options[:show_as_html]
65
- render :template => options[:template], :layout => options[:layout], :content_type => "text/html"
66
- else
67
- pdf_content = make_pdf(options)
68
- File.open(options[:save_to_file], 'wb') {|file| file << pdf_content } if options[:save_to_file]
69
-
70
- pdf_name += '.pdf' unless pdf_name =~ /.pdf\z|.PDF\Z/
71
- send_data(pdf_content, :filename => pdf_name, :type => 'application/pdf', :disposition => options[:disposition]) unless options[:save_only]
72
- end
48
+ def make_and_send_pdf(pdf_name, options={})
49
+ options[:wkhtmltopdf] ||= nil
50
+ options[:layout] ||= false
51
+ options[:template] ||= File.join(controller_path, action_name)
52
+ options[:disposition] ||= "inline"
53
+ if options[:show_as_html]
54
+ render :template => options[:template], :layout => options[:layout], :content_type => "text/html"
55
+ else
56
+ pdf_content = make_pdf(options)
57
+ File.open(options[:save_to_file], 'wb') {|file| file << pdf_content } if options.delete(:save_to_file)
58
+
59
+ pdf_name += '.pdf' unless pdf_name =~ /.pdf\z|.PDF\Z/
60
+ send_data(pdf_content, :filename => pdf_name, :type => 'application/pdf', :disposition => options[:disposition]) unless options[:save_only]
73
61
  end
62
+ end
74
63
 
75
- # Given an options hash, prerenders content for the header and footer sections
76
- # to temp files and return a new options hash including the URLs to these files.
77
- def prerender_header_and_footer(options)
78
- [:header, :footer].each do |hf|
79
- if options[hf] && options[hf][:html] && options[hf][:html][:template]
80
- @hf_tempfiles = [] if ! defined?(@hf_tempfiles)
81
- @hf_tempfiles.push( tf = Wisepdf::Tempfile.new("wicked_#{hf}_pdf.html") )
82
- options[hf][:html][:layout] ||= options[:layout]
83
- tf.write render_to_string(:template => options[hf][:html][:template], :layout => options[hf][:html][:layout], :locals => options[hf][:html][:locals])
84
- tf.flush
85
- options[hf][:html].delete(:template)
86
- options[hf][:html][:url] = "file://#{tf.path}"
87
- end
64
+ def prerender_header_and_footer(arguments)
65
+ [:header, :footer].each do |hf|
66
+ if arguments[hf] && arguments[hf][:html] && arguments[hf][:html].is_a?(Hash)
67
+ opts = arguments[hf].delete(:html)
68
+
69
+ @hf_tempfiles = [] if ! defined?(@hf_tempfiles)
70
+ @hf_tempfiles.push( tf = Wisepdf::Tempfile.new("wisepdf_#{hf}_pdf.html") )
71
+ opts[:layout] ||= arguments[:layout]
72
+
73
+ tf.write render_to_string(:template => opts[:template], :layout => opts[:layout], :locals => opts[:locals])
74
+ tf.flush
75
+
76
+ options[hf][:html] = "file://#{tf.path}"
88
77
  end
89
- options
90
78
  end
79
+ arguments
80
+ end
91
81
  end
92
82
  end
@@ -1,3 +1,5 @@
1
+ require 'open3'
2
+
1
3
  module Wisepdf
2
4
  class Writer
3
5
  def initialize(path=nil)
@@ -11,12 +13,31 @@ module Wisepdf
11
13
  invoke = self.command.join(' ')
12
14
  log(invoke) if Wisepdf::Configuration.development? || Wisepdf::Configuration.test?
13
15
 
14
- result = IO.popen(invoke, "wb+") do |pdf|
15
- pdf.sync = true
16
- pdf.puts(string)
17
- pdf.close_write
18
- pdf.gets(nil)
16
+ # result = IO.popen(invoke, "wb+") do |f|
17
+ # # f.sync = true
18
+ # f.puts(string)
19
+ # f.close_write
20
+ # f.gets(nil)
21
+ #
22
+ # # pdf = f.gets(nil)
23
+ # # f.close
24
+ # # pdf
25
+ # end
26
+ result, err = Open3.popen3(invoke) do |stdin, stdout, stderr|
27
+ stdin.write(string)
28
+ stdin.close
29
+ [stdout.read, stderr.read]
19
30
  end
31
+ # result, err = Open3.popen3(invoke) do |stdin, stdout, stderr|
32
+ # stdin.binmode
33
+ # stdout.binmode
34
+ # stderr.binmode
35
+ # stdin.write(string)
36
+ # stdin.close_write
37
+ #
38
+ # [stdout.read, stderr.read]
39
+ # end
40
+
20
41
 
21
42
  raise Wisepdf::WriteError if result.to_s.strip.empty?
22
43
 
data/wisepdf.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "wisepdf"
8
- s.version = "1.1.1"
8
+ s.version = "1.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Igor Alexandrov"]
12
- s.date = "2012-04-26"
12
+ s.date = "2012-04-27"
13
13
  s.description = "wisepdf uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML. In other words, rather than dealing with a PDF generation DSL of some sort, you simply write an HTML view as you would normally, and let pdf take care of the hard stuff."
14
14
  s.email = "igor.alexandrov@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wisepdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-26 00:00:00.000000000 Z
12
+ date: 2012-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70283634711100 !ruby/object:Gem::Requirement
16
+ requirement: &70342391986920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70283634711100
24
+ version_requirements: *70342391986920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &70283634710280 !ruby/object:Gem::Requirement
27
+ requirement: &70342391985400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70283634710280
35
+ version_requirements: *70342391985400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: wkhtmltopdf-binary
38
- requirement: &70283634709500 !ruby/object:Gem::Requirement
38
+ requirement: &70342391984480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70283634709500
46
+ version_requirements: *70342391984480
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: shoulda
49
- requirement: &70283634708780 !ruby/object:Gem::Requirement
49
+ requirement: &70342391983740 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70283634708780
57
+ version_requirements: *70342391983740
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &70283634707900 !ruby/object:Gem::Requirement
60
+ requirement: &70342391982400 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70283634707900
68
+ version_requirements: *70342391982400
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70283634706880 !ruby/object:Gem::Requirement
71
+ requirement: &70342391981320 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 1.6.4
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70283634706880
79
+ version_requirements: *70342391981320
80
80
  description: wisepdf uses the shell utility wkhtmltopdf to serve a PDF file to a user
81
81
  from HTML. In other words, rather than dealing with a PDF generation DSL of some
82
82
  sort, you simply write an HTML view as you would normally, and let pdf take care
@@ -172,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
172
  version: '0'
173
173
  segments:
174
174
  - 0
175
- hash: -892500023114510086
175
+ hash: 3612362875393278572
176
176
  required_rubygems_version: !ruby/object:Gem::Requirement
177
177
  none: false
178
178
  requirements: