hssc_pdfkit 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,23 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
22
+ .bundle
23
+ spec/custom_wkhtmltopdf_path.rb
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
data/CHANGELOG.md ADDED
@@ -0,0 +1,36 @@
1
+ 2013-06-12
2
+ ==================
3
+ * Bump to 0.5.4
4
+ * Fix broken page numbers (https://github.com/pdfkit/pdfkit/pull/181)
5
+
6
+ 2013-02-21
7
+ ==================
8
+ * Bump to 0.5.3
9
+ * Fix security vulnerability due to unsanitized strings being passed to `wkhtmltopdf` (https://github.com/pdfkit/pdfkit/issues/164)
10
+
11
+ 2011-07-02
12
+ ==================
13
+ * Bump to 0.5.2
14
+ * Fix of dealing with ActiveSupport::SafeBuffer >= 3.0.8.
15
+ * Fix for meta tag options getting dropped in REE 1.8.7.
16
+ * Fix on bundler environment detection.
17
+
18
+ 2011-06-17
19
+ ==================
20
+ * Bump to 0.5.1
21
+ * Fix for response body coming through as an array.
22
+ * Added root_url configuration for setup where a host my not know its own name.
23
+ * Awareness of Bundler when looking for the wkhtmltopdf executable.
24
+ * Fix for file data getting truncated in Ruby 1.8.6
25
+ * Fix for 0.5.0 release getting stuck rendering all requests as PDFs.
26
+ * More robust meta tag detection.
27
+
28
+ 2010-12-27
29
+ ==================
30
+ * Bump to 0.5.0
31
+ * Switched to popen - adds support for JRuby and Windows
32
+ * Pulled in support for pdf rendering conditions in middleware via Rémy Coutable
33
+ * Use `which` to try and determine path to wkhtmltopdf
34
+ * Removed wkhtmltopdf auto installer
35
+ * Changed :disable\_smart\_shrinking to false for default options.
36
+ * Added History.md
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,40 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ pdfkit (0.5.4)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activesupport (3.0.9)
10
+ diff-lcs (1.1.2)
11
+ json (1.7.7)
12
+ mocha (0.9.12)
13
+ rack (1.3.0)
14
+ rack-test (0.6.0)
15
+ rack (>= 1.0)
16
+ rake (0.9.2)
17
+ rdoc (4.0.1)
18
+ json (~> 1.4)
19
+ rspec (2.2.0)
20
+ rspec-core (~> 2.2)
21
+ rspec-expectations (~> 2.2)
22
+ rspec-mocks (~> 2.2)
23
+ rspec-core (2.6.4)
24
+ rspec-expectations (2.6.0)
25
+ diff-lcs (~> 1.1.2)
26
+ rspec-mocks (2.6.0)
27
+ wkhtmltopdf-binary (0.9.5.3)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ activesupport (>= 3.0.8)
34
+ mocha (>= 0.9.10)
35
+ pdfkit!
36
+ rack-test (>= 0.5.6)
37
+ rake (~> 0.9.2)
38
+ rdoc (~> 4.0.1)
39
+ rspec (~> 2.2.0)
40
+ wkhtmltopdf-binary (~> 0.9.5)
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 jdpace
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/POST_INSTALL ADDED
@@ -0,0 +1,14 @@
1
+ ******************************************************************
2
+
3
+ Install wkhtmltopdf:
4
+
5
+ 1. Install by hand (recomended):
6
+
7
+ https://github.com/pdfkit/PDFKit/wiki/Installing-WKHTMLTOPDF
8
+
9
+ 2. Try using the wkhtmltopdf-binary gem (mac + linux i386)
10
+
11
+ gem install wkhtmltopdf-binary
12
+
13
+
14
+ ******************************************************************
data/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # What makes this version different
2
+
3
+ Works with Mac OSX 10.8.4
4
+
5
+ # PDFKit
6
+
7
+ Create PDFs using plain old HTML+CSS. Uses [wkhtmltopdf](http://github.com/antialize/wkhtmltopdf) on the back-end which renders HTML using Webkit.
8
+
9
+ ## Install
10
+
11
+ ### PDFKit
12
+ ```
13
+ gem install pdfkit
14
+ ```
15
+ ### wkhtmltopdf
16
+
17
+ 1. Install by hand (recommended):
18
+
19
+ <https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF>
20
+
21
+ 2. Try using the wkhtmltopdf-binary gem (mac + linux i386)
22
+ ```
23
+ gem install wkhtmltopdf-binary
24
+ ```
25
+ *Note:* The automated installer has been removed.
26
+
27
+ ## Usage
28
+ ```ruby
29
+ # PDFKit.new takes the HTML and any options for wkhtmltopdf
30
+ # run `wkhtmltopdf --extended-help` for a full list of options
31
+ kit = PDFKit.new(html, :page_size => 'Letter')
32
+ kit.stylesheets << '/path/to/css/file'
33
+
34
+ # Get an inline PDF
35
+ pdf = kit.to_pdf
36
+
37
+ # Save the PDF to a file
38
+ file = kit.to_file('/path/to/save/pdf')
39
+
40
+ # PDFKit.new can optionally accept a URL or a File.
41
+ # Stylesheets can not be added when source is provided as a URL of File.
42
+ kit = PDFKit.new('http://google.com')
43
+ kit = PDFKit.new(File.new('/path/to/html'))
44
+
45
+ # Add any kind of option through meta tags
46
+ PDFKit.new('<html><head><meta name="pdfkit-page_size" content="Letter"')
47
+ ```
48
+ ## Configuration
49
+ If you're on Windows or you installed wkhtmltopdf by hand to a location other than /usr/local/bin you will need to tell PDFKit where the binary is. You can configure PDFKit like so:
50
+ ```ruby
51
+ # config/initializers/pdfkit.rb
52
+ PDFKit.configure do |config|
53
+ # config.wkhtmltopdf = '/path/to/wkhtmltopdf'
54
+ # config.default_options = {
55
+ # :page_size => 'Legal',
56
+ # :print_media_type => true
57
+ # }
58
+ # config.root_url = "http://localhost" # Use only if your external hostname is unavailable on the server.
59
+ end
60
+ ```
61
+ ## Middleware
62
+ PDFKit comes with a middleware that allows users to get a PDF view of any page on your site by appending .pdf to the URL.
63
+
64
+ ### Middleware Setup
65
+ **Non-Rails Rack apps**
66
+ ```ruby
67
+ # in config.ru
68
+ require 'pdfkit'
69
+ use PDFKit::Middleware
70
+ ```
71
+ **Rails apps**
72
+ ```ruby
73
+ # in application.rb(Rails3) or environment.rb(Rails2)
74
+ require 'pdfkit'
75
+ config.middleware.use PDFKit::Middleware
76
+ ```
77
+ **With PDFKit options**
78
+ ```ruby
79
+ # options will be passed to PDFKit.new
80
+ config.middleware.use PDFKit::Middleware, :print_media_type => true
81
+ ```
82
+ **With conditions to limit routes that can be generated in pdf**
83
+ ```ruby
84
+ # conditions can be regexps (either one or an array)
85
+ config.middleware.use PDFKit::Middleware, {}, :only => %r[^/public]
86
+ config.middleware.use PDFKit::Middleware, {}, :only => [%r[^/invoice], %r[^/public]]
87
+
88
+ # conditions can be strings (either one or an array)
89
+ config.middleware.use PDFKit::Middleware, {}, :only => '/public'
90
+ config.middleware.use PDFKit::Middleware, {}, :only => ['/invoice', '/public']
91
+
92
+ # conditions can be regexps (either one or an array)
93
+ config.middleware.use PDFKit::Middleware, {}, :except => [%r[^/prawn], %r[^/secret]]
94
+
95
+ # conditions can be strings (either one or an array)
96
+ config.middleware.use PDFKit::Middleware, {}, :except => ['/secret']
97
+ ```
98
+ ## Troubleshooting
99
+
100
+ * **Single thread issue:** In development environments it is common to run a
101
+ single server process. This can cause issues when rendering your pdf
102
+ requires wkhtmltopdf to hit your server again (for images, js, css).
103
+ This is because the resource requests will get blocked by the initial
104
+ request and the initial request will be waiting on the resource
105
+ requests causing a deadlock.
106
+
107
+ This is usually not an issue in a production environment. To get
108
+ around this issue you may want to run a server with multiple workers
109
+ like Passenger or try to embed your resources within your HTML to
110
+ avoid extra HTTP requests.
111
+
112
+ Example solution (rails / bundler), add unicorn to the development
113
+ group in your Gemfile `gem 'unicorn'` then run `bundle`. Next, add a
114
+ file `config/unicorn.conf` with
115
+
116
+ worker_processes 3
117
+
118
+ Then to run the app `unicorn_rails -c config/unicorn.conf` (from rails_root)
119
+
120
+ * **Resources aren't included in the PDF:** Images, CSS, or JavaScript
121
+ does not seem to be downloading correctly in the PDF. This is due
122
+ to the fact that wkhtmltopdf does not know where to find those files.
123
+ Make sure you are using absolute paths (start with forward slash) to
124
+ your resources. If you are using PDFKit to generate PDFs from a raw
125
+ HTML source make sure you use complete paths (either file paths or
126
+ urls including the domain). In restrictive server environments the
127
+ root_url configuration may be what you are looking for change your
128
+ asset host.
129
+
130
+ * **Mangled output in the browser:** Be sure that your HTTP response
131
+ headers specify "Content-Type: application/pdf"
132
+
133
+ ## Note on Patches/Pull Requests
134
+
135
+ * Fork the project.
136
+ * Setup your development environment with: gem install bundler; bundle install
137
+ * Make your feature addition or bug fix.
138
+ * Add tests for it. This is important so I don't break it in a
139
+ future version unintentionally.
140
+ * Commit, do not mess with rakefile, version, or history.
141
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
142
+ * Send me a pull request. Bonus points for topic branches.
143
+
144
+ ## Copyright
145
+
146
+ Copyright (c) 2010 Jared Pace. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'bundler'
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new(:spec) do |spec|
8
+ end
9
+
10
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
11
+ spec.rcov = true
12
+ end
13
+
14
+ task :default => :spec
15
+
16
+ require 'rdoc/task'
17
+ RDoc::Task.new do |rdoc|
18
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
19
+
20
+ rdoc.rdoc_dir = 'rdoc'
21
+ rdoc.title = "PDFKit #{version}"
22
+ rdoc.rdoc_files.include('README*')
23
+ rdoc.rdoc_files.include('lib/**/*.rb')
24
+ end
@@ -0,0 +1,43 @@
1
+ class PDFKit
2
+ class Configuration
3
+ attr_accessor :meta_tag_prefix, :default_options, :root_url
4
+ attr_writer :wkhtmltopdf
5
+
6
+ def initialize
7
+ @meta_tag_prefix = 'pdfkit-'
8
+ @default_options = {
9
+ :disable_smart_shrinking => false,
10
+ :page_size => 'Letter',
11
+ :margin_top => '0.75in',
12
+ :margin_right => '0.75in',
13
+ :margin_bottom => '0.75in',
14
+ :margin_left => '0.75in',
15
+ :encoding => "UTF-8"
16
+ }
17
+ end
18
+
19
+ def wkhtmltopdf
20
+ @wkhtmltopdf ||= (defined?(Bundler::GemfileError) ? `bundle exec which wkhtmltopdf` : `which wkhtmltopdf`).chomp
21
+ end
22
+ end
23
+
24
+ class << self
25
+ attr_accessor :configuration
26
+ end
27
+
28
+ # Configure PDFKit someplace sensible,
29
+ # like config/initializers/pdfkit.rb
30
+ #
31
+ # @example
32
+ # PDFKit.configure do |config|
33
+ # config.wkhtmltopdf = '/usr/bin/wkhtmltopdf'
34
+ # end
35
+
36
+ def self.configuration
37
+ @configuration ||= Configuration.new
38
+ end
39
+
40
+ def self.configure
41
+ yield(configuration)
42
+ end
43
+ end
@@ -0,0 +1,94 @@
1
+ class PDFKit
2
+
3
+ class Middleware
4
+
5
+ def initialize(app, options = {}, conditions = {})
6
+ @app = app
7
+ @options = options
8
+ @conditions = conditions
9
+ end
10
+
11
+ def call(env)
12
+ @request = Rack::Request.new(env)
13
+ @render_pdf = false
14
+
15
+ set_request_to_render_as_pdf(env) if render_as_pdf?
16
+ status, headers, response = @app.call(env)
17
+
18
+ if rendering_pdf? && headers['Content-Type'] =~ /text\/html|application\/xhtml\+xml/
19
+ body = response.respond_to?(:body) ? response.body : response.join
20
+ body = body.join if body.is_a?(Array)
21
+ body = PDFKit.new(translate_paths(body, env), @options).to_pdf
22
+ response = [body]
23
+
24
+ # Do not cache PDFs
25
+ headers.delete('ETag')
26
+ headers.delete('Cache-Control')
27
+
28
+ headers["Content-Length"] = (body.respond_to?(:bytesize) ? body.bytesize : body.size).to_s
29
+ headers["Content-Type"] = "application/pdf"
30
+ end
31
+
32
+ [status, headers, response]
33
+ end
34
+
35
+ private
36
+
37
+ # Change relative paths to absolute
38
+ def translate_paths(body, env)
39
+ # Host with protocol
40
+ root = PDFKit.configuration.root_url || "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}/"
41
+
42
+ body.gsub(/(href|src)=(['"])\/([^\"']*|[^"']*)['"]/, '\1=\2' + root + '\3\2')
43
+ end
44
+
45
+ def rendering_pdf?
46
+ @render_pdf
47
+ end
48
+
49
+ def render_as_pdf?
50
+ request_path_is_pdf = @request.path.match(%r{\.pdf$})
51
+
52
+ if request_path_is_pdf && @conditions[:only]
53
+ rules = [@conditions[:only]].flatten
54
+ rules.any? do |pattern|
55
+ if pattern.is_a?(Regexp)
56
+ @request.path =~ pattern
57
+ else
58
+ @request.path[0, pattern.length] == pattern
59
+ end
60
+ end
61
+ elsif request_path_is_pdf && @conditions[:except]
62
+ rules = [@conditions[:except]].flatten
63
+ rules.map do |pattern|
64
+ if pattern.is_a?(Regexp)
65
+ return false if @request.path =~ pattern
66
+ else
67
+ return false if @request.path[0, pattern.length] == pattern
68
+ end
69
+ end
70
+
71
+ return true
72
+ else
73
+ request_path_is_pdf
74
+ end
75
+ end
76
+
77
+ def set_request_to_render_as_pdf(env)
78
+ @render_pdf = true
79
+
80
+ path = @request.path.sub(%r{\.pdf$}, '')
81
+ path = path.sub(@request.script_name, '')
82
+
83
+ %w[PATH_INFO REQUEST_URI].each { |e| env[e] = path }
84
+
85
+ env['HTTP_ACCEPT'] = concat(env['HTTP_ACCEPT'], Rack::Mime.mime_type('.html'))
86
+ env["Rack-Middleware-PDFKit"] = "true"
87
+ end
88
+
89
+ def concat(accepts, type)
90
+ (accepts || '').split(',').unshift(type).compact.join(',')
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,143 @@
1
+ require 'shellwords'
2
+
3
+ class PDFKit
4
+
5
+ class NoExecutableError < StandardError
6
+ def initialize
7
+ msg = "No wkhtmltopdf executable found at #{PDFKit.configuration.wkhtmltopdf}\n"
8
+ msg << ">> Please install wkhtmltopdf - https://github.com/pdfkit/PDFKit/wiki/Installing-WKHTMLTOPDF"
9
+ super(msg)
10
+ end
11
+ end
12
+
13
+ class ImproperSourceError < StandardError
14
+ def initialize(msg)
15
+ super("Improper Source: #{msg}")
16
+ end
17
+ end
18
+
19
+ attr_accessor :source, :stylesheets
20
+ attr_reader :options
21
+
22
+ def initialize(url_file_or_html, options = {})
23
+ @source = Source.new(url_file_or_html)
24
+
25
+ @stylesheets = []
26
+
27
+ @options = PDFKit.configuration.default_options.merge(options)
28
+ @options.merge! find_options_in_meta(url_file_or_html) unless source.url?
29
+ @options = normalize_options(@options)
30
+
31
+ raise NoExecutableError.new unless File.exists?(PDFKit.configuration.wkhtmltopdf)
32
+ end
33
+
34
+ def command(path = nil)
35
+ args = [executable]
36
+ args += @options.to_a.flatten.compact
37
+ #args << '--quiet'
38
+
39
+ if @source.html?
40
+ args << '-' # Get HTML from stdin
41
+ else
42
+ args << @source.to_s
43
+ end
44
+
45
+ args << (path || '-') # Write to file or stdout
46
+
47
+ args.shelljoin
48
+ end
49
+
50
+ def executable
51
+ default = PDFKit.configuration.wkhtmltopdf
52
+ return default if default !~ /^\// # its not a path, so nothing we can do
53
+ if File.exist?(default)
54
+ default
55
+ else
56
+ default.split('/').last
57
+ end
58
+ end
59
+
60
+ def to_pdf(path=nil)
61
+ append_stylesheets
62
+
63
+ invoke = command(path)
64
+
65
+ result = IO.popen(invoke, "wb+") do |pdf|
66
+ pdf.puts(@source.to_s) if @source.html?
67
+ pdf.close_write
68
+ pdf.gets(nil)
69
+ end
70
+ result = File.read(path) if path
71
+
72
+ # $? is thread safe per http://stackoverflow.com/questions/2164887/thread-safe-external-process-in-ruby-plus-checking-exitstatus
73
+ raise "command failed: #{invoke}" if result.to_s.strip.empty? or !$?.success?
74
+ return result
75
+ end
76
+
77
+ def to_file(path)
78
+ self.to_pdf(path)
79
+ File.new(path)
80
+ end
81
+
82
+ protected
83
+
84
+ def find_options_in_meta(content)
85
+ # Read file if content is a File
86
+ content = content.read if content.is_a?(File)
87
+
88
+ found = {}
89
+ content.scan(/<meta [^>]*>/) do |meta|
90
+ if meta.match(/name=["']#{PDFKit.configuration.meta_tag_prefix}/)
91
+ name = meta.scan(/name=["']#{PDFKit.configuration.meta_tag_prefix}([^"']*)/)[0][0]
92
+ found[name.to_sym] = meta.scan(/content=["']([^"']*)/)[0][0]
93
+ end
94
+ end
95
+
96
+ found
97
+ end
98
+
99
+ def style_tag_for(stylesheet)
100
+ "<style>#{File.read(stylesheet)}</style>"
101
+ end
102
+
103
+ def append_stylesheets
104
+ raise ImproperSourceError.new('Stylesheets may only be added to an HTML source') if stylesheets.any? && !@source.html?
105
+
106
+ stylesheets.each do |stylesheet|
107
+ if @source.to_s.match(/<\/head>/)
108
+ @source = Source.new(@source.to_s.gsub(/(<\/head>)/, style_tag_for(stylesheet)+'\1'))
109
+ else
110
+ @source.to_s.insert(0, style_tag_for(stylesheet))
111
+ end
112
+ end
113
+ end
114
+
115
+ def normalize_options(options)
116
+ normalized_options = {}
117
+
118
+ options.each do |key, value|
119
+ next if !value
120
+ normalized_key = "--#{normalize_arg key}"
121
+ normalized_options[normalized_key] = normalize_value(value)
122
+ end
123
+ normalized_options
124
+ end
125
+
126
+ def normalize_arg(arg)
127
+ arg.to_s.downcase.gsub(/[^a-z0-9]/,'-')
128
+ end
129
+
130
+ def normalize_value(value)
131
+ case value
132
+ when TrueClass #ie, ==true, see http://www.ruby-doc.org/core-1.9.3/TrueClass.html
133
+ nil
134
+ when Hash
135
+ value.to_a.flatten.collect{|x| x.to_s}
136
+ when Array
137
+ value.flatten.collect{|x| x.to_s}
138
+ else
139
+ value.to_s
140
+ end
141
+ end
142
+
143
+ end
@@ -0,0 +1,23 @@
1
+ class PDFKit
2
+ class Source
3
+ def initialize(url_file_or_html)
4
+ @source = url_file_or_html
5
+ end
6
+
7
+ def url?
8
+ @source.is_a?(String) && @source.match(/\Ahttp/)
9
+ end
10
+
11
+ def file?
12
+ @source.kind_of?(File)
13
+ end
14
+
15
+ def html?
16
+ !(url? || file?)
17
+ end
18
+
19
+ def to_s
20
+ file? ? @source.path : @source
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ class PDFKit
2
+ VERSION = "0.5.4"
3
+ end
data/lib/pdfkit.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'pdfkit/source'
2
+ require 'pdfkit/pdfkit'
3
+ require 'pdfkit/middleware'
4
+ require 'pdfkit/configuration'
data/pdfkit.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "pdfkit/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "hssc_pdfkit"
7
+ s.version = PDFKit::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Andrew Cates", "Jared Pace", "Relevance"]
10
+ s.email = ["catesa@musc.edu"]
11
+ s.homepage = "https://github.com/HSSC/pdfkit"
12
+ s.summary = "HTML+CSS -> PDF"
13
+ s.description = "Uses wkhtmltopdf to create PDFs using HTML"
14
+
15
+ s.rubyforge_project = "pdfkit"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ # Developmnet Dependencies
23
+ s.add_development_dependency(%q<rake>, ["~>0.9.2"])
24
+ s.add_development_dependency(%q<rdoc>, ["~> 4.0.1"])
25
+ s.add_development_dependency(%q<rspec>, ["~> 2.2.0"])
26
+ s.add_development_dependency(%q<mocha>, [">= 0.9.10"])
27
+ s.add_development_dependency(%q<rack-test>, [">= 0.5.6"])
28
+ s.add_development_dependency(%q<activesupport>, [">= 3.0.8"])
29
+ s.add_development_dependency(%q<wkhtmltopdf-binary>, ["~> 0.9.5"])
30
+ end
@@ -0,0 +1 @@
1
+ body { font-size: 20px; }
@@ -0,0 +1,5 @@
1
+ <html>
2
+ <body>
3
+ <h1>Oh Hai!</h1>
4
+ </body>
5
+ </html>