wisepdf 1.1.1 → 1.1.2

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