princely 1.4.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 60c51f575db0737a9fc6a0d57d14902048f6c504
4
+ data.tar.gz: 375ee87716da9847bae4c95dd526347196708c9c
5
+ SHA512:
6
+ metadata.gz: 82a6b39938457b082524721e5bc631810917bfd4b0252b35c786699054c79604380fc8f62bc40a83fb284cf5f8c86d54a9eaa1d74fa73a573507aa61d4700105
7
+ data.tar.gz: 8fdd1d1d74c77590e1d23fcd4edb4acde4e720045e9cf92becf18ebff907349e552df2fcc5e72cf4bc7a2aa86f7fcdef029633e3a184775ec39e5099e4f6045c
@@ -0,0 +1,58 @@
1
+ # Princely
2
+
3
+ Princely is a simple wrapper for the [Prince XML PDF generation library](http://www.princexml.com).
4
+ The plugin will also automatically register the PDF MimeType so that you can use
5
+ pdf as a format in Rails controller `respond_to` blocks.
6
+
7
+ ## Example
8
+
9
+ ```ruby
10
+ class Provider::EstimatesController < Provider::BaseController
11
+ # You can render PDF templates simply by
12
+ # using the :pdf option on render templates.
13
+ def show
14
+ respond_to do |format|
15
+ format.html
16
+ format.pdf do
17
+ render :pdf => 'file_name',
18
+ :template => 'controller/action',
19
+ :handlers => %w[erb],
20
+ :formats => %w[pdf],
21
+ :stylesheets => %w[application prince],
22
+ :layout => 'pdf',
23
+ :disposition => 'inline', # PDF will be sent inline, means you can load it inside an iFrame or Embed
24
+ :relative_paths => true # Modify asset paths to make them relative. See [the AssetSupport module](/lib/princely/asset_support.rb)
25
+ end
26
+ end
27
+ end
28
+
29
+ # Alternatively, you can use make_and_send_pdf to render out a PDF for the
30
+ # action without a respond_to block.
31
+ def pdf
32
+ make_and_send_pdf "file_name"
33
+ end
34
+ end
35
+ ```
36
+
37
+ ## Render Defaults
38
+
39
+ The defaults for the render options are as follows:
40
+
41
+ layout: false
42
+ template: the template for the current controller/action
43
+ stylesheets: none
44
+ disposition: attachment (created PDF file will be sent as download)
45
+ relative_paths: true
46
+ server_flag: true
47
+ javascript_flag: false
48
+ timeout: none
49
+
50
+ ## Contributors
51
+
52
+ * Maintainer: Jared Fraser ([modsognir](https://github.com/modsognir))
53
+ * Gemification and more: Nic Williams
54
+ * [Other Contributors](https://github.com/mbleigh/princely/contributors)
55
+
56
+ ## Resources
57
+
58
+ * Copyright (c) 2007-2013 Michael Bleigh and Intridea, Inc., released under the MIT license.
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # USAGE
8
8
  # -----------------------------------------------------------------------------
9
- # princely = Princely.new()
9
+ # princely = Princely.new
10
10
  # html_string = render_to_string(:template => 'some_document')
11
11
  # send_data(
12
12
  # princely.pdf_from_string(html_string),
@@ -15,117 +15,31 @@
15
15
  # )
16
16
  #
17
17
  require 'logger'
18
+ require 'pathname'
18
19
  require 'princely/rails' if defined?(Rails)
19
20
 
20
- class Princely
21
- attr_accessor :exe_path, :style_sheets, :log_file, :logger
21
+ module Princely
22
+ autoload :StdoutLogger, 'princely/stdout_logger'
23
+ autoload :AssetSupport, 'princely/asset_support'
24
+ autoload :Pdf, 'princely/pdf'
25
+ autoload :Logging, 'princely/logging'
26
+ autoload :Executable, 'princely/executable'
22
27
 
23
- # Initialize method
24
- #
25
- def initialize(options={})
26
- # Finds where the application lives, so we can call it.
27
- @exe_path = options[:path] || find_prince_executable
28
- raise "Cannot find prince command-line app in $PATH" if @exe_path.length == 0
29
- raise "Cannot find prince command-line app at #{@exe_path}" if @exe_path && !File.executable?(@exe_path)
30
- @style_sheets = ''
31
- @cmd_args = ''
32
- @log_file = options[:log_file]
33
- @logger = options[:logger]
34
- end
35
-
36
- def logger
37
- @logger ||= defined?(Rails) ? Rails.logger : StdoutLogger
38
- end
39
-
40
- def log_file
41
- @log_file ||= defined?(Rails) ?
42
- Rails.root.join("log/prince.log") :
43
- File.expand_path(File.dirname(__FILE__) + "/log/prince.log")
44
- end
45
-
46
- def ruby_platform
47
- RUBY_PLATFORM
48
- end
49
-
50
- def find_prince_executable
51
- if ruby_platform =~ /mswin32/
52
- "C:/Program Files/Prince/Engine/bin/prince"
53
- else
54
- `which prince`.chomp
28
+ class << self
29
+ def executable
30
+ @custom_executable || Princely::Executable.new
55
31
  end
56
- end
57
32
 
58
- # Sets stylesheets...
59
- # Can pass in multiple paths for css files.
60
- #
61
- def add_style_sheets(*sheets)
62
- for sheet in sheets do
63
- @style_sheets << " -s #{sheet} "
33
+ def executable=(custom_executable)
34
+ @custom_executable = custom_executable
64
35
  end
65
- end
66
-
67
- # Sets arbitrary command line arguments
68
- def add_cmd_args(str)
69
- @cmd_args << " #{str} "
70
- end
71
-
72
- # Returns fully formed executable path with any command line switches
73
- # we've set based on our variables.
74
- #
75
- def exe_path
76
- # Add any standard cmd line arguments we need to pass
77
- @exe_path << " --input=html --server --log=#{log_file} "
78
- @exe_path << @cmd_args
79
- @exe_path << @style_sheets
80
- return @exe_path
81
- end
82
36
 
83
- # Makes a pdf from a passed in string.
84
- #
85
- # Returns PDF as a stream, so we can use send_data to shoot
86
- # it down the pipe using Rails.
87
- #
88
- def pdf_from_string(string, output_file = '-')
89
- path = self.exe_path()
90
- # Don't spew errors to the standard out...and set up to take IO
91
- # as input and output
92
- path << ' --silent - -o -'
93
-
94
- # Show the command used...
95
- logger.info "\n\nPRINCE XML PDF COMMAND"
96
- logger.info path
97
- logger.info ''
98
-
99
- # Actually call the prince command, and pass the entire data stream back.
100
- pdf = IO.popen(path, "w+")
101
- pdf.puts(string)
102
- pdf.close_write
103
- result = pdf.gets(nil)
104
- pdf.close_read
105
- result.force_encoding('BINARY') if RUBY_VERSION >= "1.9"
106
- return result
107
- end
108
-
109
- def pdf_from_string_to_file(string, output_file)
110
- path = self.exe_path()
111
- # Don't spew errors to the standard out...and set up to take IO
112
- # as input and output
113
- path << " --silent - -o '#{output_file}' >> '#{log_file}' 2>> '#{log_file}'"
114
-
115
- # Show the command used...
116
- logger.info "\n\nPRINCE XML PDF COMMAND"
117
- logger.info path
118
- logger.info ''
119
-
120
- # Actually call the prince command, and pass the entire data stream back.
121
- pdf = IO.popen(path, "w+")
122
- pdf.puts(string)
123
- pdf.close
124
- end
37
+ def root
38
+ Pathname.new(File.expand_path('../', __FILE__))
39
+ end
125
40
 
126
- class StdoutLogger
127
- def self.info(msg)
128
- puts msg
41
+ def ruby_platform
42
+ RUBY_PLATFORM
129
43
  end
130
44
  end
131
45
  end
@@ -0,0 +1,22 @@
1
+ module Princely
2
+ module AssetSupport
3
+ def localize_html_string(html_string, asset_path = nil)
4
+ html_string = html_string.to_str
5
+ # Make all paths relative, on disk paths...
6
+ html_string.gsub!(".com:/",".com/") # strip out bad attachment_fu URLs
7
+ html_string.gsub!( /src=["']+([^:]+?)["']/i ) do |m|
8
+ asset_src = asset_path ? "#{asset_path}/#{$1}" : asset_file_path($1)
9
+ %Q{src="#{asset_src}"} # re-route absolute paths
10
+ end
11
+
12
+ # Remove asset ids on images with a regex
13
+ html_string.gsub!( /src=["'](\S+\?\d*)["']/i ) { |m| %Q{src="#{$1.split('?').first}"} }
14
+ html_string
15
+ end
16
+
17
+ def asset_file_path(asset)
18
+ # Remove /assets/ from generated names and try and find a matching asset
19
+ Rails.application.assets.find_asset(asset.gsub(%r{/assets/}, "")).try(:pathname) || asset
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,28 @@
1
+ module Princely
2
+ class Executable
3
+ attr_reader :path
4
+
5
+ def initialize(path=nil)
6
+ @path = path || default_executable_path
7
+
8
+ check_for_executable
9
+ end
10
+
11
+ def check_for_executable
12
+ raise "Cannot find prince command-line app in $PATH" if !@path || @path.length == 0
13
+ raise "Cannot find prince command-line app at #{@exe_path}" unless File.executable?(@path)
14
+ end
15
+
16
+ def default_executable_path
17
+ if Princely.ruby_platform =~ /mswin32|minigw32/
18
+ "C:/Program Files/Prince/Engine/bin/prince"
19
+ else
20
+ `which prince`.chomp
21
+ end
22
+ end
23
+
24
+ def join(options)
25
+ ([path] + Array(options)).join(' ')
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ module Princely
2
+ module Logging
3
+
4
+ class << self
5
+ attr_accessor :logger, :filename
6
+
7
+ def logger
8
+ @logger ||= defined?(Rails) ? Rails.logger : StdoutLogger
9
+ end
10
+
11
+ def filename
12
+ pathname = defined?(Rails) ? Rails.root : Princely.root
13
+ @filename ||= pathname.join 'log', 'prince.log'
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,124 @@
1
+ require 'timeout'
2
+
3
+ module Princely
4
+ class Pdf
5
+ attr_accessor :executable, :style_sheets, :logger, :log_file, :server_flag, :media, :javascript_flag, :timeout, :license_path
6
+
7
+ # Initialize method
8
+ #
9
+ def initialize(options={})
10
+ options = {
11
+ :path => nil,
12
+ :executable => Princely.executable,
13
+ :log_file => nil,
14
+ :logger => nil,
15
+ :server_flag => true,
16
+ :media => nil,
17
+ :javascript_flag => false,
18
+ :license_path => nil
19
+ }.merge(options)
20
+ @executable = options[:path] ? Princely::Executable.new(options[:path]) : options[:executable]
21
+ @style_sheets = ''
22
+ @log_file = options[:log_file]
23
+ @logger = options[:logger]
24
+ @license_path = options[:license_path]
25
+ @server_flag = options[:server_flag]
26
+ @media = options[:media]
27
+ @javascript_flag = options[:javascript_flag]
28
+ @timeout = options[:timeout]
29
+ end
30
+
31
+ # Returns the instance logger or Princely default logger
32
+ def logger
33
+ @logger || Princely::Logging.logger
34
+ end
35
+
36
+ # Returns the instance log file or Princely default log file
37
+ def log_file
38
+ @log_file || Princely::Logging.filename
39
+ end
40
+
41
+ # Sets stylesheets...
42
+ # Can pass in multiple paths for css files.
43
+ #
44
+ def add_style_sheets(*sheets)
45
+ @style_sheets << sheets.map { |sheet| " -s #{sheet} " }.join(' ')
46
+ end
47
+
48
+ # Returns fully formed executable path with any command line switches
49
+ # we've set based on our variables.
50
+ #
51
+ def exe_path
52
+ @executable.join(executable_options)
53
+ end
54
+
55
+ def executable_options
56
+ options = []
57
+ options << "--input=html"
58
+ options << "--server" if @server_flag
59
+ options << "--log=#{log_file}"
60
+ options << "--media=#{media}" if media
61
+ options << "--javascript" if @javascript_flag
62
+ options << @style_sheets
63
+ options
64
+ end
65
+
66
+ # Makes a pdf from a passed in string.
67
+ #
68
+ # Returns PDF as a stream, so we can use send_data to shoot
69
+ # it down the pipe using Rails.
70
+ #
71
+ def pdf_from_string(string, output_file = '-')
72
+ with_timeout do
73
+ pdf = initialize_pdf_from_string(string, output_file, {:output_to_log_file => false})
74
+ pdf.close_write
75
+ result = pdf.gets(nil)
76
+ pdf.close_read
77
+ result.force_encoding('BINARY') if RUBY_VERSION >= "1.9"
78
+
79
+ result
80
+ end
81
+ end
82
+
83
+ def pdf_from_string_to_file(string, output_file)
84
+ with_timeout do
85
+ pdf = initialize_pdf_from_string(string, output_file)
86
+ pdf.close
87
+ end
88
+ end
89
+
90
+ protected
91
+
92
+ def with_timeout(&block)
93
+ if timeout
94
+ Timeout.timeout(timeout, &block)
95
+ else
96
+ block.call
97
+ end
98
+ end
99
+
100
+ def initialize_pdf_from_string(string, output_file, options = {})
101
+ options = {:log_command => true, :output_to_log_file => true}.merge(options)
102
+ path = exe_path
103
+ # Don't spew errors to the standard out...and set up to take IO
104
+ # as input and output
105
+ path << " --media=#{media}" if media
106
+ path << " --silent - -o #{output_file}"
107
+ path << " --license-file=#{}" if license_path
108
+ path << " >> '#{log_file}' 2>> '#{log_file}'" if options[:output_to_log_file]
109
+
110
+ log_command path if options[:log_command]
111
+
112
+ # Actually call the prince command, and pass the entire data stream back.
113
+ pdf = IO.popen(path, "w+")
114
+ pdf.puts string
115
+ pdf
116
+ end
117
+
118
+ def log_command(path)
119
+ logger.info "\n\nPRINCE XML PDF COMMAND"
120
+ logger.info path
121
+ logger.info ''
122
+ end
123
+ end
124
+ end
@@ -1,84 +1,65 @@
1
- module PdfHelper
2
- require 'princely'
3
-
4
- def self.included(base)
5
- base.class_eval do
6
- alias_method_chain :render, :princely
7
- end
8
- end
9
-
10
- def render_with_princely(options = nil, *args, &block)
11
- if options.is_a?(Hash) && options.has_key?(:pdf)
12
- options[:name] ||= options.delete(:pdf)
13
- make_and_send_pdf(options.delete(:name), options)
14
- else
15
- render_without_princely(options, *args, &block)
1
+ require 'princely'
2
+ require 'princely/asset_support'
3
+
4
+ module Princely
5
+ module PdfHelper
6
+
7
+ def self.included(base)
8
+ base.send :alias_method_chain, :render, :princely
16
9
  end
17
- end
18
-
19
- private
20
-
21
- def make_pdf(options = {})
22
- options[:stylesheets] ||= []
23
- options[:layout] ||= false
24
- options[:template] ||= File.join(controller_path,action_name)
25
-
26
- prince = Princely.new()
27
- # Sets style sheets on PDF renderer
28
- prince.add_style_sheets(*options[:stylesheets].collect{|style| asset_file_path(style)})
29
-
30
- html_string = render_to_string(:template => options[:template], :layout => options[:layout])
31
-
32
- html_string = localize_html_string(html_string)
33
-
34
- # Send the generated PDF file from our html string.
35
- if filename = options[:filename] || options[:file]
36
- prince.pdf_from_string_to_file(html_string, filename)
37
- else
38
- prince.pdf_from_string(html_string)
10
+
11
+ def render_with_princely(options = nil, *args, &block)
12
+ if options.is_a?(Hash) && options.has_key?(:pdf)
13
+ options[:name] ||= options.delete(:pdf)
14
+ make_and_send_pdf(options.delete(:name), options)
15
+ else
16
+ render_without_princely(options, *args, &block)
17
+ end
39
18
  end
40
- end
41
19
 
42
- def localize_html_string(html_string)
43
- # Make all paths relative, on disk paths...
44
- html_string.gsub!(".com:/",".com/") # strip out bad attachment_fu URLs
45
- html_string.gsub!( /src=["']+([^:]+?)["']/i ) { |m| "src=\"#{Rails.public_path}/#{$1}\"" } # re-route absolute paths
46
-
47
- # Remove asset ids on images with a regex
48
- html_string.gsub!( /src=["'](\S+\?\d*)["']/i ) { |m| "src=\"#{$1.split('?').first}\"" }
49
- html_string
50
- end
20
+ private
51
21
 
52
- def asset_file_path(asset)
53
- stylesheet = stylesheet.to_s.gsub(".css","")
54
- File.join(config.stylesheets_dir, "#{stylesheet}.css")
55
- end
56
- alias_method :stylesheet_file_path, :asset_file_path
22
+ def make_pdf(options = {})
23
+ options = {
24
+ :stylesheets => [],
25
+ :layout => false,
26
+ :template => File.join(controller_path, action_name),
27
+ :relative_paths => true,
28
+ :server_flag => true,
29
+ :media => nil,
30
+ :javascript_flag => false
31
+ }.merge(options)
57
32
 
58
- def make_and_send_pdf(pdf_name, options = {})
59
- options[:disposition] ||= 'attachment'
60
- send_data(
61
- make_pdf(options),
62
- :filename => pdf_name + ".pdf",
63
- :type => 'application/pdf',
64
- :disposition => options[:disposition]
65
- )
66
- end
33
+ prince = Princely::Pdf.new(options.slice(:server_flag, :javascript_flag, :media))
34
+ # Sets style sheets on PDF renderer
35
+ prince.add_style_sheets(*options[:stylesheets].collect{|style| asset_file_path(style)})
36
+
37
+ html_string = render_to_string(options.slice(:template, :layout, :handlers, :formats))
67
38
 
68
- module AssetSupport
69
- def localize_html_string(html_string)
70
- # Make all paths relative, on disk paths...
71
- html_string.gsub!(".com:/",".com/") # strip out bad attachment_fu URLs
72
- html_string.gsub!( /src=["']+([^:]+?)["']/i ) { |m| "src=\"#{asset_file_path($1)}\"" } # re-route absolute paths
73
-
74
- # Remove asset ids on images with a regex
75
- html_string.gsub!( /src=["'](\S+\?\d*)["']/i ) { |m| 'src="' + $1.split('?').first + '"' }
76
- html_string
39
+ html_string = localize_html_string(html_string, Rails.public_path) if options[:relative_paths]
40
+
41
+ # Send the generated PDF file from our html string.
42
+ if filename = options[:filename] || options[:file]
43
+ prince.pdf_from_string_to_file(html_string, filename)
44
+ else
45
+ prince.pdf_from_string(html_string)
46
+ end
77
47
  end
78
48
 
79
49
  def asset_file_path(asset)
80
- # Remove /assets/ from generated names and try and find a matching asset
81
- Rails.application.assets.find_asset(asset.gsub(/\/assets\//, "")).try(:pathname) || asset
50
+ asset = asset.to_s.gsub('.css', '')
51
+ File.join(config.stylesheets_dir, "#{asset}.css")
52
+ end
53
+ alias_method :stylesheet_file_path, :asset_file_path
54
+
55
+ def make_and_send_pdf(pdf_name, options = {})
56
+ options = {:disposition => 'attachment'}.merge(options)
57
+ send_data(
58
+ make_pdf(options),
59
+ :filename => "#{pdf_name}.pdf",
60
+ :type => 'application/pdf',
61
+ :disposition => options[:disposition]
62
+ )
82
63
  end
83
64
  end
84
65
  end
@@ -1,10 +1,11 @@
1
1
  require 'princely/pdf_helper'
2
+ require 'princely/view_helpers'
2
3
 
3
4
  if Mime::Type.lookup_by_extension(:pdf) != 'application/pdf'
4
5
  Mime::Type.register 'application/pdf', :pdf
5
6
  end
6
7
 
7
- ActionController::Base.send(:include, PdfHelper)
8
- ActionController::Base.send(:include, PdfHelper::AssetSupport) if
8
+ ActionController::Base.send(:include, Princely::PdfHelper)
9
+ ActionController::Base.send(:include, Princely::AssetSupport) if
9
10
  (Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR > 0) ||
10
- (Rails::VERSION::MAJOR >= 4)
11
+ (Rails::VERSION::MAJOR >= 4)
@@ -0,0 +1,7 @@
1
+ module Princely
2
+ class StdoutLogger
3
+ def self.info(msg)
4
+ puts msg
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,13 @@
1
- class Princely
2
- VERSION = "1.4.1"
1
+ module Princely
2
+ class Version
3
+ class << self
4
+ def version
5
+ '2.0.0'
6
+ end
7
+
8
+ def to_s
9
+ version
10
+ end
11
+ end
12
+ end
3
13
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: princely
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Bleigh
@@ -15,33 +14,29 @@ dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rspec
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - ">="
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - ">="
29
26
  - !ruby/object:Gem::Version
30
27
  version: '0'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rake
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - ">="
37
33
  - !ruby/object:Gem::Version
38
34
  version: '0'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - ">="
45
40
  - !ruby/object:Gem::Version
46
41
  version: '0'
47
42
  description: A wrapper for the PrinceXML PDF generation library.
@@ -50,44 +45,42 @@ email:
50
45
  - dev@jsf.io
51
46
  executables: []
52
47
  extensions: []
53
- extra_rdoc_files:
54
- - README.rdoc
48
+ extra_rdoc_files: []
55
49
  files:
56
50
  - MIT-LICENSE
57
- - README.rdoc
51
+ - README.md
58
52
  - Rakefile
59
53
  - lib/princely.rb
54
+ - lib/princely/asset_support.rb
55
+ - lib/princely/executable.rb
56
+ - lib/princely/logging.rb
57
+ - lib/princely/pdf.rb
60
58
  - lib/princely/pdf_helper.rb
61
59
  - lib/princely/rails.rb
60
+ - lib/princely/stdout_logger.rb
62
61
  - lib/princely/version.rb
63
62
  homepage: http://github.com/mbleigh/princely
64
- licenses: []
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
65
66
  post_install_message:
66
67
  rdoc_options: []
67
68
  require_paths:
68
69
  - lib
69
70
  required_ruby_version: !ruby/object:Gem::Requirement
70
- none: false
71
71
  requirements:
72
- - - ! '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
- segments:
76
- - 0
77
- hash: -2291531356337878395
78
75
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
76
  requirements:
81
- - - ! '>='
77
+ - - ">="
82
78
  - !ruby/object:Gem::Version
83
79
  version: '0'
84
- segments:
85
- - 0
86
- hash: -2291531356337878395
87
80
  requirements: []
88
81
  rubyforge_project:
89
- rubygems_version: 1.8.25
82
+ rubygems_version: 2.4.8
90
83
  signing_key:
91
- specification_version: 3
84
+ specification_version: 4
92
85
  summary: A simple Rails wrapper for the PrinceXML PDF generation library.
93
86
  test_files: []
@@ -1,49 +0,0 @@
1
- = Princely
2
-
3
- Princely is a simple wrapper for the Prince XML PDF generation library
4
- (http://www.princexml.com). The plugin will also automatically registers
5
- the PDF MimeType so that you can use pdf as a format in controller
6
- respond_to blocks.
7
-
8
- == Example
9
-
10
- class Provider::EstimatesController < Provider::BaseController
11
- # You can render PDF templates simply by
12
- # using the :pdf option on render templates.
13
- def show
14
- respond_to do |format|
15
- format.html
16
- format.pdf do
17
- render :pdf => "file_name",
18
- :template => "controller/action.pdf.erb",
19
- :stylesheets => ["application","prince"],
20
- :layout => "pdf",
21
- :disposition => "inline" # PDF will be sent inline, means you can load it inside an iFrame or Embed
22
- end
23
- end
24
- end
25
-
26
- # Alternatively, you can use make_and_send_pdf to
27
- # render out a PDF for the action without a
28
- # respond_to block.
29
- def pdf
30
- make_and_send_pdf("file_name")
31
- end
32
- end
33
-
34
- == Render Defaults
35
-
36
- The defaults for the render options are as follows:
37
-
38
- layout: false
39
- template: the template for the current controller/action
40
- stylesheets: none
41
- disposition: attachment (created PDF file will be sent as download)
42
-
43
- == Contributors
44
-
45
- * Gemification and more: Nic Williams
46
-
47
- == Resources
48
-
49
- * Copyright (c) 2007-2009 Michael Bleigh and Intridea, Inc., released under the MIT license.