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 +5 -5
- data/CHANGELOG.md +19 -0
- data/lib/zpdf.rb +4 -12
- data/lib/{z_pdf → zpdf}/base.rb +6 -5
- data/lib/{z_pdf → zpdf}/generators/controller_module/USAGE +0 -0
- data/lib/{z_pdf → zpdf}/generators/controller_module/controller_module.rb +2 -2
- data/lib/zpdf/generators/controller_module/templates/controller_module_template.rb +46 -0
- data/lib/{z_pdf → zpdf}/generators/producers/USAGE +0 -0
- data/lib/{z_pdf → zpdf}/generators/producers/producer.rb +3 -3
- data/lib/{z_pdf → zpdf}/generators/producers/templates/producer_template.rb +0 -0
- data/lib/{z_pdf → zpdf}/generators/producers/templates/view_template.html.erb +0 -0
- data/lib/{z_pdf → zpdf}/generators/producers/templates/view_template_footer.html.erb +1 -0
- data/lib/{z_pdf → zpdf}/generators/producers/templates/view_template_header.html.erb +1 -0
- data/lib/{z_pdf → zpdf}/html_pdf_object.rb +5 -5
- data/lib/{z_pdf → zpdf}/railtie.rb +7 -9
- data/lib/{z_pdf → zpdf}/version.rb +1 -1
- data/lib/{z_pdf/z_pdf_helper.rb → zpdf/zpdf_helper.rb} +0 -0
- metadata +45 -39
- data/lib/z_pdf/generators/controller_module/templates/controller_module_template.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 593e223677d36ea8a7d13d98dd5e00289700d23570d148cacc9942b66849c2ee
|
4
|
+
data.tar.gz: '028e05c0fbdfe4e26155b52f41249bf5a144c15b72ec588c2a32f8b16510183d'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ff22e7971a6cff786f3a51eee8b180796e36db3770a431e9e81fcde17d7885081f41a249a8c59f815c47ac58fa43e77610b00f2634b811157f21d3db47b042c
|
7
|
+
data.tar.gz: f1392921b5118a3c4abd5f4eaf1cf230ff7df999857c2284e5386be58883f3add4e858459450606b146e2a6dce4c319a1b6f033a0fadef8a8ac99464a825b9e8
|
data/CHANGELOG.md
ADDED
@@ -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
|
+
|
data/lib/zpdf.rb
CHANGED
@@ -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 '
|
10
|
-
require '
|
9
|
+
require 'zpdf/version'
|
10
|
+
require 'zpdf/railtie'
|
11
11
|
|
12
12
|
module ZPdf
|
13
13
|
extend ::ActiveSupport::Autoload
|
14
14
|
|
15
|
-
|
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
|
|
data/lib/{z_pdf → zpdf}/base.rb
RENAMED
@@ -1,5 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
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(:
|
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) }
|
File without changes
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'rails/generators/base'
|
2
2
|
|
3
|
-
module
|
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", '
|
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
|
File without changes
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'rails/generators/base'
|
2
2
|
require 'rails/generators/erb'
|
3
3
|
|
4
|
-
module
|
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
|
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
|
File without changes
|
File without changes
|
@@ -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
|
-
#
|
59
|
-
|
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 =
|
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
|
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
|
-
|
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
|
File without changes
|
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
|
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:
|
12
|
+
date: 2020-07-13 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: activesupport
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- -
|
18
|
+
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
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
|
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:
|
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:
|
41
|
+
version: '6.0'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
+
name: actionview
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
|
-
- -
|
46
|
+
- - "~>"
|
46
47
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
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:
|
55
|
-
description:
|
56
|
-
|
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
|
-
-
|
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
|
-
|
77
|
-
|
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:
|
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
|
-
|
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
|