zpdf 0.0.2 → 6.0.0

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