zpdf 0.0.2 → 6.0.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
- SHA1:
3
- metadata.gz: fee29fbf4f292dfd6cb941b4e43828f3d3b51c2b
4
- data.tar.gz: 808775939cf8169b55e3f6bdb07e142013cf2d07
2
+ SHA256:
3
+ metadata.gz: 593e223677d36ea8a7d13d98dd5e00289700d23570d148cacc9942b66849c2ee
4
+ data.tar.gz: '028e05c0fbdfe4e26155b52f41249bf5a144c15b72ec588c2a32f8b16510183d'
5
5
  SHA512:
6
- metadata.gz: db3a7d94cb6aaab4245e79ae722fad5f3dcfb0cfad67549ee77755fbe828934a99acff277770ec4794539b63c096f9664d1df8b56c6311b0a2e991475b49b925
7
- data.tar.gz: d94ee994533ad5c914ca920d6f0bf5c56fed947fbb6358d9fe78f570baac9f45677905c39bba648b2348dbdc5185adefd33aadb5974475dca63e33aa4b217d12
6
+ metadata.gz: 8ff22e7971a6cff786f3a51eee8b180796e36db3770a431e9e81fcde17d7885081f41a249a8c59f815c47ac58fa43e77610b00f2634b811157f21d3db47b042c
7
+ data.tar.gz: f1392921b5118a3c4abd5f4eaf1cf230ff7df999857c2284e5386be58883f3add4e858459450606b146e2a6dce4c319a1b6f033a0fadef8a8ac99464a825b9e8
@@ -0,0 +1,19 @@
1
+
2
+ # 4.1.7 (June 20, 2017)
3
+
4
+ * Removed a trace `puts` causing unnecessary logging
5
+
6
+ # 4.1.6 (June 20, 2017)
7
+
8
+ * Updated to work with Rails 5.0 and 5.1
9
+ * Normalized autoload'ing to use 'zpdf/' path instead of 'z_pdf'
10
+ * Updated documentation
11
+
12
+ # 4.1.5 (September 15, 2016)
13
+
14
+ * Updated to work with Rails 4.0, 4.1 and 4.2
15
+
16
+ # 0.0.3 (March 31, 2015)
17
+
18
+ * Initial release. Compatible with Rails 3 and Ruby 1.9.2
19
+
@@ -1,25 +1,17 @@
1
1
  zpdf_path = File.expand_path(File.dirname(__FILE__))
2
2
  $:.unshift(zpdf_path) if File.directory?(zpdf_path) && !$:.include?(zpdf_path)
3
3
 
4
- require 'rails'
4
+ require 'active_support/rails'
5
5
  require 'active_support/core_ext/module/attr_internal'
6
6
  require 'active_support/lazy_load_hooks'
7
7
  require 'abstract_controller'
8
8
  require 'action_view'
9
- require 'z_pdf/version'
10
- require 'z_pdf/railtie'
9
+ require 'zpdf/version'
10
+ require 'zpdf/railtie'
11
11
 
12
12
  module ZPdf
13
13
  extend ::ActiveSupport::Autoload
14
14
 
15
- # autoload :AdvAttrAccessor
16
- # autoload :Collector
17
- autoload :Base
18
- # autoload :DeliveryMethods
19
- # autoload :DeprecatedApi
20
- # autoload :MailHelper
21
- # autoload :OldApi
22
- # autoload :TestCase
23
- # autoload :TestHelper
15
+ autoload :Base, 'zpdf/base'
24
16
  end
25
17
 
@@ -1,5 +1,5 @@
1
- require 'z_pdf/html_pdf_object'
2
- require 'z_pdf/z_pdf_helper'
1
+ require 'zpdf/html_pdf_object'
2
+ require 'zpdf/zpdf_helper'
3
3
 
4
4
  module ZPdf #:nodoc:
5
5
  #
@@ -27,12 +27,13 @@ module ZPdf #:nodoc:
27
27
  abstract!
28
28
 
29
29
  include AbstractController::Rendering
30
- include AbstractController::Layouts
31
30
  include AbstractController::Helpers
32
31
  include AbstractController::Translation
33
32
  include AbstractController::AssetPaths
34
33
  include AbstractController::Logger
35
34
 
35
+ include ActionView::Layouts
36
+
36
37
  helper ZPdf::PdfHelper
37
38
 
38
39
  private_class_method :new #:nodoc:
@@ -90,7 +91,7 @@ module ZPdf #:nodoc:
90
91
  end
91
92
 
92
93
  def process(*args) #:nodoc:
93
- lookup_context.skip_default_locale!
94
+ lookup_context.skip_default_locale! if lookup_context.respond_to?(:skip_default_locale!)
94
95
  super
95
96
  end
96
97
 
@@ -111,7 +112,7 @@ module ZPdf #:nodoc:
111
112
  parts = {}
112
113
 
113
114
  # TODO : support inline content
114
- templates_path = params.delete(:template_path) || self.class.generator_name
115
+ templates_path = params.delete(:templates_path) || self.class.generator_name
115
116
  template_names = { :content => params.delete(:template_name) || action_name,
116
117
  :header => params.delete(:header_template),
117
118
  :footer => params.delete(:footer_template) }
@@ -1,12 +1,12 @@
1
1
  require 'rails/generators/base'
2
2
 
3
- module ZPdf
3
+ module Zpdf
4
4
  module Generators
5
5
  class ControllerModuleGenerator < Rails::Generators::Base
6
6
  source_root File.join(File.dirname(__FILE__),'templates')
7
7
 
8
8
  def create_controller_module
9
- template "controller_module_template.rb", 'lib/pdf_controller_methods.rb'
9
+ template "controller_module_template.rb", 'app/controllers/concerns/pdf_controller_methods.rb'
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,46 @@
1
+
2
+ # USAGE:
3
+ # This module provides basic methods to send PDF content. Simply include this module
4
+ # in your controller(s):
5
+ #
6
+ # class InvoiceController < ApplicationController
7
+ # include PdfControllerMethods
8
+ # ....
9
+
10
+ # def show
11
+ # ...
12
+ # respond_to do |format|
13
+ # ....
14
+ # format.pdf {
15
+ # send_pdf_content(InvoiceGenerator.invoice(@invoice).pdf_content,
16
+ # :file_name => 'invoice.pdf', :force_download => true)
17
+ # }
18
+ # ....
19
+ # end
20
+ # end
21
+ # end
22
+ #
23
+
24
+
25
+ module PdfControllerMethods
26
+
27
+ protected
28
+
29
+ # convert a file name to ISO-8859-1, that most browsers parse correctly.
30
+ def sanitize_file_name(name)
31
+ # NOTE: We could use ActiveSupport::Inflector#transliterate also, but that would remove diacritics also...
32
+ name.gsub! /^.*(\\|\/)/, ''
33
+ name.gsub! /[\:\*\?\"\<\>\|]/, '_'
34
+ name.gsub! "—", "-"
35
+ return name.encode('ISO-8859-1', :invalid => :replace, :undef => :replace, :replace => '_')
36
+ end
37
+
38
+ def send_pdf_content(pdf_content,options = {})
39
+ force_download = options[:force_download] || false
40
+ file_name = options[:file_name] || self.class.name.underscore
41
+ headers["Content-Type"] ||= 'application/pdf; charset=iso-8859-1'
42
+ headers["Content-Disposition"] = "#{force_download ? 'attachment' : 'inline'}; filename=\"#{sanitize_file_name(file_name)}\""
43
+ render :text => pdf_content, :layout => false
44
+ end
45
+
46
+ end
@@ -1,12 +1,12 @@
1
1
  require 'rails/generators/base'
2
2
  require 'rails/generators/erb'
3
3
 
4
- module ZPdf
4
+ module Zpdf
5
5
  module Generators
6
6
  class ProducerGenerator < Erb::Generators::Base
7
7
  source_root File.join(File.dirname(__FILE__),'templates')
8
8
 
9
- argument :actions, :type => :array, :default => [], :banner => "method method"
9
+ argument :actions, :type => :array, :default => ['my_document'], :banner => "method method"
10
10
 
11
11
  def create_renderer_file
12
12
  template "producer_template.rb", File.join('app/pdf_producers', class_path, "#{file_name}.rb")
@@ -16,7 +16,7 @@ module ZPdf
16
16
  rails_root = Rails.root.to_s + "/"
17
17
  config = Rails.application.config
18
18
  paths = Rails.application.paths
19
- pdf_views_path = ( (config.zpdf ? config.zpdf.pdf_views_path : nil) || paths.app.views.to_a.first).gsub(rails_root,'')
19
+ pdf_views_path = ( (config.zpdf ? config.zpdf.pdf_views_path : nil) || paths['app/views'].first).gsub(rails_root,'')
20
20
 
21
21
  base_path = File.join(pdf_views_path,class_path,file_name)
22
22
  empty_directory base_path
@@ -1,3 +1,4 @@
1
+ <!doctype html>
1
2
  <html>
2
3
  <body>
3
4
  <p>Footer for <%= class_name %>#<%= @action %> (Find me in <%= @path %>)</p>
@@ -1,3 +1,4 @@
1
+ <!doctype html>
1
2
  <html>
2
3
  <body>
3
4
  <p>Header for <%= class_name %>#<%= @action %> (Find me in <%= @path %>)</p>
@@ -1,5 +1,4 @@
1
1
  require 'thread'
2
- require 'iconv'
3
2
 
4
3
  module ZPdf
5
4
 
@@ -45,7 +44,7 @@ module ZPdf
45
44
  outfile_path = html_files[:content].path + '.pdf' # append correct extension to temp file name
46
45
  wk_params['header-html'] = html_files[:header].nil? ? nil : "file:///#{html_files[:header].path}"
47
46
  wk_params['footer-html'] = html_files[:footer].nil? ? nil : "file:///#{html_files[:footer].path}"
48
- wk_params['quiet'] = true
47
+ wk_params['quiet'] = true unless wk_params['quiet'] == false
49
48
 
50
49
  cmd = "#{self.class.wkhtmltopdf_path}"
51
50
  wk_params.each_pair do |k,v|
@@ -55,8 +54,9 @@ module ZPdf
55
54
 
56
55
  cmd << " file:///#{html_files[:content].path} #{outfile_path}"
57
56
  puts "\n\nexecuting #{cmd}\n\n" if @verbose
58
- # avoid errors on systems where command processor is not UTF-8
59
- `#{Iconv.new('ISO-8859-1//TRANSLIT','UTF-8').iconv(cmd)}`
57
+ # TODO: check if errors can occur with systems where command processor is not UTF-8
58
+ # if so, we could force encoding to something else
59
+ `#{cmd}`
60
60
  if File.exists?(outfile_path)
61
61
  output = File.open(outfile_path,'rb') { |f| f.read }
62
62
  File.unlink(outfile_path)
@@ -103,7 +103,7 @@ module ZPdf
103
103
  end
104
104
 
105
105
  def self.find_wkhtmltopdf_executable
106
- rbCfg = defined?(RbConfig) ? RbConfig : Config
106
+ rbCfg = RbConfig
107
107
  if rbCfg::CONFIG['host_os'] =~ /mswin|mingw/ # windows?
108
108
  ENV['PATH'].split(';').each do |p|
109
109
  exec_path = File.join(p,'wkhtmltopdf.exe')
@@ -4,29 +4,27 @@ require "rails"
4
4
  module ZPdf
5
5
  class Railtie < Rails::Railtie
6
6
  config.zpdf = ActiveSupport::OrderedOptions.new
7
-
7
+ config.eager_load_namespaces << ZPdf
8
+
8
9
  initializer "zpdf.set_configs" do |app|
9
10
  paths = app.config.paths
10
11
  options = app.config.zpdf
11
-
12
- options.assets_dir ||= paths.public.to_a.first
13
- options.javascripts_dir ||= paths.public.javascripts.to_a.first
14
- options.stylesheets_dir ||= paths.public.stylesheets.to_a.first
15
12
 
16
13
  # by default, the views path for ZPdf::Base is the same as other views
17
- pdf_views_path = options.pdf_views_path || paths.app.views.to_a.first
14
+ pdf_views_path = options.pdf_views_path || paths['app/views'].first
18
15
 
19
16
  ActiveSupport.on_load(:zpdf) do
20
17
  include app.routes.url_helpers
21
- prepend_view_path pdf_views_path
18
+ append_view_path pdf_views_path
19
+ # Send options to corresponding ZPdf::Base methods
22
20
  options.each { |k,v| send("#{k}=", v) }
23
21
  end
24
22
  end
25
-
23
+
26
24
  generators do
27
25
  load File.expand_path('./generators/producers/producer.rb',File.dirname(__FILE__))
28
26
  load File.expand_path('./generators/controller_module/controller_module.rb',File.dirname(__FILE__))
29
27
  end
30
-
28
+
31
29
  end
32
30
  end
@@ -2,7 +2,7 @@ module ZPdf
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 2
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,80 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zpdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Bedard
8
+ - Stephane Volet
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-03-31 00:00:00.000000000 Z
12
+ date: 2020-07-13 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: rake
15
+ name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - '>='
18
+ - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 0.8.7
20
+ version: '6.0'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - '>='
25
+ - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: 0.8.7
27
+ version: '6.0'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: actionpack
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - '>='
32
+ - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: 3.0.3
34
+ version: '6.0'
34
35
  type: :runtime
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - '>='
39
+ - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: 3.0.3
41
+ version: '6.0'
41
42
  - !ruby/object:Gem::Dependency
42
- name: expectations
43
+ name: actionview
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
- - - '>='
46
+ - - "~>"
46
47
  - !ruby/object:Gem::Version
47
- version: 2.0.0
48
+ version: '6.0'
48
49
  type: :runtime
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
- - - '>='
53
+ - - "~>"
53
54
  - !ruby/object:Gem::Version
54
- version: 2.0.0
55
- description:
56
- email: charles@cbedard.net
55
+ version: '6.0'
56
+ description: ZPdf allows to produce PDF content based on ERB templates. It easily
57
+ integrates into a Rails application and operates on a paradigm very similar to Rails
58
+ ActionMailer.
59
+ email:
60
+ - zzeligg@gmail.com
61
+ - steph@zboing.ca
57
62
  executables: []
58
63
  extensions: []
59
64
  extra_rdoc_files: []
60
65
  files:
61
- - lib/z_pdf/base.rb
62
- - lib/z_pdf/generators/controller_module/controller_module.rb
63
- - lib/z_pdf/generators/controller_module/templates/controller_module_template.rb
64
- - lib/z_pdf/generators/controller_module/USAGE
65
- - lib/z_pdf/generators/producers/producer.rb
66
- - lib/z_pdf/generators/producers/templates/producer_template.rb
67
- - lib/z_pdf/generators/producers/templates/view_template.html.erb
68
- - lib/z_pdf/generators/producers/templates/view_template_footer.html.erb
69
- - lib/z_pdf/generators/producers/templates/view_template_header.html.erb
70
- - lib/z_pdf/generators/producers/USAGE
71
- - lib/z_pdf/html_pdf_object.rb
72
- - lib/z_pdf/railtie.rb
73
- - lib/z_pdf/version.rb
74
- - lib/z_pdf/z_pdf_helper.rb
66
+ - CHANGELOG.md
75
67
  - lib/zpdf.rb
76
- homepage: http://github.com/schmlblk/zpdf
77
- licenses: []
68
+ - lib/zpdf/base.rb
69
+ - lib/zpdf/generators/controller_module/USAGE
70
+ - lib/zpdf/generators/controller_module/controller_module.rb
71
+ - lib/zpdf/generators/controller_module/templates/controller_module_template.rb
72
+ - lib/zpdf/generators/producers/USAGE
73
+ - lib/zpdf/generators/producers/producer.rb
74
+ - lib/zpdf/generators/producers/templates/producer_template.rb
75
+ - lib/zpdf/generators/producers/templates/view_template.html.erb
76
+ - lib/zpdf/generators/producers/templates/view_template_footer.html.erb
77
+ - lib/zpdf/generators/producers/templates/view_template_header.html.erb
78
+ - lib/zpdf/html_pdf_object.rb
79
+ - lib/zpdf/railtie.rb
80
+ - lib/zpdf/version.rb
81
+ - lib/zpdf/zpdf_helper.rb
82
+ homepage: https://github.com/schmlblk/zpdf
83
+ licenses:
84
+ - MIT
78
85
  metadata: {}
79
86
  post_install_message:
80
87
  rdoc_options: []
@@ -82,17 +89,16 @@ require_paths:
82
89
  - lib
83
90
  required_ruby_version: !ruby/object:Gem::Requirement
84
91
  requirements:
85
- - - '>='
92
+ - - ">="
86
93
  - !ruby/object:Gem::Version
87
- version: 1.9.2
94
+ version: 2.5.0
88
95
  required_rubygems_version: !ruby/object:Gem::Requirement
89
96
  requirements:
90
- - - '>='
97
+ - - ">="
91
98
  - !ruby/object:Gem::Version
92
99
  version: '0'
93
100
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.0.14
101
+ rubygems_version: 3.1.2
96
102
  signing_key:
97
103
  specification_version: 4
98
104
  summary: HTML-based PDF rendering engine (using wkhtmltopdf)
@@ -1,57 +0,0 @@
1
- require 'iconv'
2
-
3
- # USAGE:
4
- # This module provides basic methods to send PDF content. Simply include this module
5
- # in your controller(s):
6
- #
7
- # class InvoiceController < ApplicationController
8
- # include PdfControllerMethods
9
- # ....
10
-
11
- # def show
12
- # ...
13
- # respond_to do |format|
14
- # ....
15
- # format.pdf {
16
- # send_pdf_content(InvoiceGenerator.invoice(@invoice).pdf_content,
17
- # :file_name => 'invoice.pdf', :force_download => true)
18
- # }
19
- # ....
20
- # end
21
- # end
22
- # end
23
- #
24
-
25
- module PdfControllerMethods
26
-
27
- # uncomment and implement if you want to add custom functionality when this module is
28
- # included.
29
- # def self.included(base)
30
- # base.class_eval <<-EOV
31
- # def do_something_when_pdf_controller_methods_are_included
32
- # end
33
- # EOV
34
- # end
35
-
36
- protected
37
- # convert a file name to ISO-8859-1, so that all browsers correctly parse it.
38
- def sanitize_file_name(name)
39
- c = Iconv.new('ISO-8859-15','UTF-8')
40
- s = c.iconv(name.gsub(/[—–]/,'-'))
41
- s.gsub!(/^.*(\\|\/)/, '')
42
- s.gsub(/[\:\*\?\"\<\>\|]/, '_')
43
- end
44
-
45
- def send_pdf_content(pdf_content,options = {})
46
- force_download = options[:force_download] || false
47
- file_name = options[:file_name] || self.class.name.underscore
48
- # content type is 'iso-8859-1' because we want the header values (namely the filename) to
49
- # be interpreted as such.
50
- headers["Content-Type"] ||= 'application/pdf; charset=iso-8859-1'
51
- if force_download
52
- headers["Content-Disposition"] = "attachment; filename=\"#{sanitize_file_name(file_name)}\""
53
- end
54
- render :text => pdf_content, :layout => false
55
- end
56
-
57
- end