pdfkit 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of pdfkit might be problematic. Click here for more details.
- data/{History.md → CHANGELOG.md} +10 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +6 -2
- data/README.md +63 -66
- data/Rakefile +2 -2
- data/lib/pdfkit/pdfkit.rb +10 -6
- data/lib/pdfkit/version.rb +1 -1
- data/pdfkit.gemspec +2 -1
- data/spec/pdfkit_spec.rb +32 -18
- metadata +124 -90
data/{History.md → CHANGELOG.md}
RENAMED
@@ -1,3 +1,13 @@
|
|
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
|
+
|
1
11
|
2011-07-02
|
2
12
|
==================
|
3
13
|
* Bump to 0.5.2
|
data/Gemfile
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gemspec
|
3
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pdfkit (0.5.
|
4
|
+
pdfkit (0.5.4)
|
5
5
|
|
6
6
|
GEM
|
7
|
-
remote:
|
7
|
+
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
activesupport (3.0.9)
|
10
10
|
diff-lcs (1.1.2)
|
11
|
+
json (1.7.7)
|
11
12
|
mocha (0.9.12)
|
12
13
|
rack (1.3.0)
|
13
14
|
rack-test (0.6.0)
|
14
15
|
rack (>= 1.0)
|
15
16
|
rake (0.9.2)
|
17
|
+
rdoc (4.0.1)
|
18
|
+
json (~> 1.4)
|
16
19
|
rspec (2.2.0)
|
17
20
|
rspec-core (~> 2.2)
|
18
21
|
rspec-expectations (~> 2.2)
|
@@ -32,5 +35,6 @@ DEPENDENCIES
|
|
32
35
|
pdfkit!
|
33
36
|
rack-test (>= 0.5.6)
|
34
37
|
rake (~> 0.9.2)
|
38
|
+
rdoc (~> 4.0.1)
|
35
39
|
rspec (~> 2.2.0)
|
36
40
|
wkhtmltopdf-binary (~> 0.9.5)
|
data/README.md
CHANGED
@@ -5,9 +5,9 @@ Create PDFs using plain old HTML+CSS. Uses [wkhtmltopdf](http://github.com/antia
|
|
5
5
|
## Install
|
6
6
|
|
7
7
|
### PDFKit
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
```
|
9
|
+
gem install pdfkit
|
10
|
+
```
|
11
11
|
### wkhtmltopdf
|
12
12
|
|
13
13
|
1. Install by hand (recommended):
|
@@ -15,85 +15,82 @@ Create PDFs using plain old HTML+CSS. Uses [wkhtmltopdf](http://github.com/antia
|
|
15
15
|
<https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF>
|
16
16
|
|
17
17
|
2. Try using the wkhtmltopdf-binary gem (mac + linux i386)
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
```
|
19
|
+
gem install wkhtmltopdf-binary
|
20
|
+
```
|
21
21
|
*Note:* The automated installer has been removed.
|
22
22
|
|
23
23
|
## Usage
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
24
|
+
```ruby
|
25
|
+
# PDFKit.new takes the HTML and any options for wkhtmltopdf
|
26
|
+
# run `wkhtmltopdf --extended-help` for a full list of options
|
27
|
+
kit = PDFKit.new(html, :page_size => 'Letter')
|
28
|
+
kit.stylesheets << '/path/to/css/file'
|
29
|
+
|
30
|
+
# Get an inline PDF
|
31
|
+
pdf = kit.to_pdf
|
32
|
+
|
33
|
+
# Save the PDF to a file
|
34
|
+
file = kit.to_file('/path/to/save/pdf')
|
35
|
+
|
36
|
+
# PDFKit.new can optionally accept a URL or a File.
|
37
|
+
# Stylesheets can not be added when source is provided as a URL of File.
|
38
|
+
kit = PDFKit.new('http://google.com')
|
39
|
+
kit = PDFKit.new(File.new('/path/to/html'))
|
40
|
+
|
41
|
+
# Add any kind of option through meta tags
|
42
|
+
PDFKit.new('<html><head><meta name="pdfkit-page_size" content="Letter"')
|
43
|
+
```
|
44
44
|
## Configuration
|
45
|
-
|
46
45
|
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:
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
46
|
+
```ruby
|
47
|
+
# config/initializers/pdfkit.rb
|
48
|
+
PDFKit.configure do |config|
|
49
|
+
# config.wkhtmltopdf = '/path/to/wkhtmltopdf'
|
50
|
+
# config.default_options = {
|
51
|
+
# :page_size => 'Legal',
|
52
|
+
# :print_media_type => true
|
53
|
+
# }
|
54
|
+
# config.root_url = "http://localhost" # Use only if your external hostname is unavailable on the server.
|
55
|
+
end
|
56
|
+
```
|
58
57
|
## Middleware
|
59
|
-
|
60
58
|
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.
|
61
59
|
|
62
60
|
### Middleware Setup
|
63
|
-
|
64
61
|
**Non-Rails Rack apps**
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
62
|
+
```ruby
|
63
|
+
# in config.ru
|
64
|
+
require 'pdfkit'
|
65
|
+
use PDFKit::Middleware
|
66
|
+
```
|
70
67
|
**Rails apps**
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
68
|
+
```ruby
|
69
|
+
# in application.rb(Rails3) or environment.rb(Rails2)
|
70
|
+
require 'pdfkit'
|
71
|
+
config.middleware.use PDFKit::Middleware
|
72
|
+
```
|
76
73
|
**With PDFKit options**
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
74
|
+
```ruby
|
75
|
+
# options will be passed to PDFKit.new
|
76
|
+
config.middleware.use PDFKit::Middleware, :print_media_type => true
|
77
|
+
```
|
81
78
|
**With conditions to limit routes that can be generated in pdf**
|
79
|
+
```ruby
|
80
|
+
# conditions can be regexps (either one or an array)
|
81
|
+
config.middleware.use PDFKit::Middleware, {}, :only => %r[^/public]
|
82
|
+
config.middleware.use PDFKit::Middleware, {}, :only => [%r[^/invoice], %r[^/public]]
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
# conditions can be strings (either one or an array)
|
88
|
-
config.middleware.use PDFKit::Middleware, {}, :only => '/public'
|
89
|
-
config.middleware.use PDFKit::Middleware, {}, :only => ['/invoice', '/public']
|
90
|
-
|
91
|
-
# conditions can be regexps (either one or an array)
|
92
|
-
config.middleware.use PDFKit::Middleware, {}, :except => [%r[^/prawn], %r[^/secret]]
|
84
|
+
# conditions can be strings (either one or an array)
|
85
|
+
config.middleware.use PDFKit::Middleware, {}, :only => '/public'
|
86
|
+
config.middleware.use PDFKit::Middleware, {}, :only => ['/invoice', '/public']
|
93
87
|
|
94
|
-
|
95
|
-
|
88
|
+
# conditions can be regexps (either one or an array)
|
89
|
+
config.middleware.use PDFKit::Middleware, {}, :except => [%r[^/prawn], %r[^/secret]]
|
96
90
|
|
91
|
+
# conditions can be strings (either one or an array)
|
92
|
+
config.middleware.use PDFKit::Middleware, {}, :except => ['/secret']
|
93
|
+
```
|
97
94
|
## Troubleshooting
|
98
95
|
|
99
96
|
* **Single thread issue:** In development environments it is common to run a
|
data/Rakefile
CHANGED
data/lib/pdfkit/pdfkit.rb
CHANGED
@@ -5,7 +5,7 @@ class PDFKit
|
|
5
5
|
class NoExecutableError < StandardError
|
6
6
|
def initialize
|
7
7
|
msg = "No wkhtmltopdf executable found at #{PDFKit.configuration.wkhtmltopdf}\n"
|
8
|
-
msg << ">> Please install wkhtmltopdf - https://github.com/
|
8
|
+
msg << ">> Please install wkhtmltopdf - https://github.com/pdfkit/PDFKit/wiki/Installing-WKHTMLTOPDF"
|
9
9
|
super(msg)
|
10
10
|
end
|
11
11
|
end
|
@@ -44,7 +44,7 @@ class PDFKit
|
|
44
44
|
|
45
45
|
args << (path || '-') # Write to file or stdout
|
46
46
|
|
47
|
-
args.
|
47
|
+
args.shelljoin
|
48
48
|
end
|
49
49
|
|
50
50
|
def executable
|
@@ -60,8 +60,7 @@ class PDFKit
|
|
60
60
|
def to_pdf(path=nil)
|
61
61
|
append_stylesheets
|
62
62
|
|
63
|
-
|
64
|
-
invoke = args.join(' ')
|
63
|
+
invoke = command(path)
|
65
64
|
|
66
65
|
result = IO.popen(invoke, "wb+") do |pdf|
|
67
66
|
pdf.puts(@source.to_s) if @source.html?
|
@@ -70,7 +69,8 @@ class PDFKit
|
|
70
69
|
end
|
71
70
|
result = File.read(path) if path
|
72
71
|
|
73
|
-
|
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
74
|
return result
|
75
75
|
end
|
76
76
|
|
@@ -129,8 +129,12 @@ class PDFKit
|
|
129
129
|
|
130
130
|
def normalize_value(value)
|
131
131
|
case value
|
132
|
-
when TrueClass
|
132
|
+
when TrueClass #ie, ==true, see http://www.ruby-doc.org/core-1.9.3/TrueClass.html
|
133
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}
|
134
138
|
else
|
135
139
|
value.to_s
|
136
140
|
end
|
data/lib/pdfkit/version.rb
CHANGED
data/pdfkit.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Jared Pace", "Relevance"]
|
10
10
|
s.email = ["jared@codewordstudios.com"]
|
11
|
-
s.homepage = "
|
11
|
+
s.homepage = "https://github.com/pdfkit/pdfkit"
|
12
12
|
s.summary = "HTML+CSS -> PDF"
|
13
13
|
s.description = "Uses wkhtmltopdf to create PDFs using HTML"
|
14
14
|
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
# Developmnet Dependencies
|
23
23
|
s.add_development_dependency(%q<rake>, ["~>0.9.2"])
|
24
|
+
s.add_development_dependency(%q<rdoc>, ["~> 4.0.1"])
|
24
25
|
s.add_development_dependency(%q<rspec>, ["~> 2.2.0"])
|
25
26
|
s.add_development_dependency(%q<mocha>, [">= 0.9.10"])
|
26
27
|
s.add_development_dependency(%q<rack-test>, [">= 0.5.6"])
|
data/spec/pdfkit_spec.rb
CHANGED
@@ -28,6 +28,11 @@ describe PDFKit do
|
|
28
28
|
pdfkit.options.should have_key('--page-size')
|
29
29
|
end
|
30
30
|
|
31
|
+
it "should parse complex options into a cmd line friedly format" do
|
32
|
+
pdfkit = PDFKit.new('html', :replace => {'value' => 'something else'} )
|
33
|
+
pdfkit.options.should have_key('--replace')
|
34
|
+
end
|
35
|
+
|
31
36
|
it "should provide default options" do
|
32
37
|
pdfkit = PDFKit.new('<h1>Oh Hai</h1>')
|
33
38
|
['--margin-top', '--margin-right', '--margin-bottom', '--margin-left'].each do |option|
|
@@ -48,10 +53,12 @@ describe PDFKit do
|
|
48
53
|
|
49
54
|
context "command" do
|
50
55
|
it "should contstruct the correct command" do
|
51
|
-
pdfkit = PDFKit.new('html', :page_size => 'Letter', :toc_l1_font_size => 12)
|
52
|
-
pdfkit.command
|
53
|
-
|
54
|
-
|
56
|
+
pdfkit = PDFKit.new('html', :page_size => 'Letter', :toc_l1_font_size => 12, :replace => {'foo' => 'bar'})
|
57
|
+
command = pdfkit.command
|
58
|
+
command.should include "wkhtmltopdf"
|
59
|
+
command.should include "--page-size Letter"
|
60
|
+
command.should include "--toc-l1-font-size 12"
|
61
|
+
command.should include "--replace foo bar"
|
55
62
|
end
|
56
63
|
|
57
64
|
it "will not include default options it is told to omit" do
|
@@ -60,41 +67,41 @@ describe PDFKit do
|
|
60
67
|
end
|
61
68
|
|
62
69
|
pdfkit = PDFKit.new('html')
|
63
|
-
pdfkit.command.should include('
|
70
|
+
pdfkit.command.should include('--disable-smart-shrinking')
|
64
71
|
pdfkit = PDFKit.new('html', :disable_smart_shrinking => false)
|
65
|
-
pdfkit.command.should_not include('
|
72
|
+
pdfkit.command.should_not include('--disable-smart-shrinking')
|
66
73
|
end
|
67
74
|
|
68
75
|
it "should encapsulate string arguments in quotes" do
|
69
76
|
pdfkit = PDFKit.new('html', :header_center => "foo [page]")
|
70
|
-
pdfkit.command
|
77
|
+
pdfkit.command.should include "--header-center foo\\ \\[page\\]"
|
71
78
|
end
|
72
79
|
|
73
80
|
it "should sanitize string arguments" do
|
74
81
|
pdfkit = PDFKit.new('html', :header_center => "$(ls)")
|
75
|
-
pdfkit.command
|
82
|
+
pdfkit.command.should include "--header-center \\$\\(ls\\)"
|
76
83
|
end
|
77
84
|
|
78
85
|
it "read the source from stdin if it is html" do
|
79
86
|
pdfkit = PDFKit.new('html')
|
80
|
-
pdfkit.command
|
87
|
+
pdfkit.command.should match /- -$/
|
81
88
|
end
|
82
89
|
|
83
90
|
it "specify the URL to the source if it is a url" do
|
84
91
|
pdfkit = PDFKit.new('http://google.com')
|
85
|
-
pdfkit.command
|
92
|
+
pdfkit.command.should match /http:\/\/google.com -$/
|
86
93
|
end
|
87
94
|
|
88
95
|
it "should specify the path to the source if it is a file" do
|
89
96
|
file_path = File.join(SPEC_ROOT,'fixtures','example.html')
|
90
97
|
pdfkit = PDFKit.new(File.new(file_path))
|
91
|
-
pdfkit.command
|
98
|
+
pdfkit.command.should match /#{file_path} -$/
|
92
99
|
end
|
93
100
|
|
94
101
|
it "should specify the path for the ouput if a apth is given" do
|
95
102
|
file_path = "/path/to/output.pdf"
|
96
103
|
pdfkit = PDFKit.new("html")
|
97
|
-
pdfkit.command(file_path).
|
104
|
+
pdfkit.command(file_path).should match /#{file_path}$/
|
98
105
|
end
|
99
106
|
|
100
107
|
it "should detect special pdfkit meta tags" do
|
@@ -107,8 +114,9 @@ describe PDFKit do
|
|
107
114
|
</html>
|
108
115
|
}
|
109
116
|
pdfkit = PDFKit.new(body)
|
110
|
-
|
111
|
-
|
117
|
+
command = pdfkit.command
|
118
|
+
command.should include "--page-size Legal"
|
119
|
+
command.should include "--orientation Landscape"
|
112
120
|
end
|
113
121
|
|
114
122
|
it "should detect special pdfkit meta tags despite bad markup" do
|
@@ -122,8 +130,9 @@ describe PDFKit do
|
|
122
130
|
</html>
|
123
131
|
}
|
124
132
|
pdfkit = PDFKit.new(body)
|
125
|
-
|
126
|
-
|
133
|
+
command = pdfkit.command
|
134
|
+
command.should include "--page-size Legal"
|
135
|
+
command.should include "--orientation Landscape"
|
127
136
|
end
|
128
137
|
|
129
138
|
it "should skip non-pdfkit meta tags" do
|
@@ -137,7 +146,9 @@ describe PDFKit do
|
|
137
146
|
</html>
|
138
147
|
}
|
139
148
|
pdfkit = PDFKit.new(body)
|
140
|
-
|
149
|
+
command = pdfkit.command
|
150
|
+
command.should_not include "--page-size Legal"
|
151
|
+
command.should include "--orientation Landscape"
|
141
152
|
end
|
142
153
|
|
143
154
|
end
|
@@ -192,6 +203,10 @@ describe PDFKit do
|
|
192
203
|
pdfkit.source.to_s.should include("<style>#{File.read(css)}</style></head>")
|
193
204
|
end
|
194
205
|
|
206
|
+
it "should throw an error if it is unable to connect" do
|
207
|
+
pdfkit = PDFKit.new("http://google.com/this-should-not-be-found/404.html")
|
208
|
+
lambda { pdfkit.to_pdf }.should raise_error
|
209
|
+
end
|
195
210
|
end
|
196
211
|
|
197
212
|
context "#to_file" do
|
@@ -237,5 +252,4 @@ describe PDFKit do
|
|
237
252
|
File.exist?(@test_path).should be_false
|
238
253
|
end
|
239
254
|
end
|
240
|
-
|
241
255
|
end
|
metadata
CHANGED
@@ -1,127 +1,152 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdfkit
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
- 4
|
10
|
+
version: 0.5.4
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Jared Pace
|
9
14
|
- Relevance
|
10
15
|
autorequire:
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
18
|
+
|
19
|
+
date: 2013-06-12 00:00:00 Z
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
16
22
|
name: rake
|
17
|
-
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
18
24
|
none: false
|
19
|
-
requirements:
|
25
|
+
requirements:
|
20
26
|
- - ~>
|
21
|
-
- !ruby/object:Gem::Version
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 63
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 9
|
32
|
+
- 2
|
22
33
|
version: 0.9.2
|
23
|
-
type: :development
|
24
34
|
prerelease: false
|
25
|
-
|
35
|
+
type: :development
|
36
|
+
requirement: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rdoc
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
26
40
|
none: false
|
27
|
-
requirements:
|
41
|
+
requirements:
|
28
42
|
- - ~>
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 61
|
45
|
+
segments:
|
46
|
+
- 4
|
47
|
+
- 0
|
48
|
+
- 1
|
49
|
+
version: 4.0.1
|
50
|
+
prerelease: false
|
51
|
+
type: :development
|
52
|
+
requirement: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
32
54
|
name: rspec
|
33
|
-
|
55
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
34
56
|
none: false
|
35
|
-
requirements:
|
57
|
+
requirements:
|
36
58
|
- - ~>
|
37
|
-
- !ruby/object:Gem::Version
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 7
|
61
|
+
segments:
|
62
|
+
- 2
|
63
|
+
- 2
|
64
|
+
- 0
|
38
65
|
version: 2.2.0
|
39
|
-
type: :development
|
40
66
|
prerelease: false
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 2.2.0
|
47
|
-
- !ruby/object:Gem::Dependency
|
67
|
+
type: :development
|
68
|
+
requirement: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
48
70
|
name: mocha
|
49
|
-
|
71
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
50
72
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 47
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
- 9
|
80
|
+
- 10
|
54
81
|
version: 0.9.10
|
55
|
-
type: :development
|
56
82
|
prerelease: false
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
- - ! '>='
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 0.9.10
|
63
|
-
- !ruby/object:Gem::Dependency
|
83
|
+
type: :development
|
84
|
+
requirement: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
64
86
|
name: rack-test
|
65
|
-
|
87
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
66
88
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 7
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
- 5
|
96
|
+
- 6
|
70
97
|
version: 0.5.6
|
71
|
-
type: :development
|
72
98
|
prerelease: false
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
- - ! '>='
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 0.5.6
|
79
|
-
- !ruby/object:Gem::Dependency
|
99
|
+
type: :development
|
100
|
+
requirement: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
80
102
|
name: activesupport
|
81
|
-
|
103
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
82
104
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
hash: 23
|
109
|
+
segments:
|
110
|
+
- 3
|
111
|
+
- 0
|
112
|
+
- 8
|
86
113
|
version: 3.0.8
|
87
|
-
type: :development
|
88
114
|
prerelease: false
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
- - ! '>='
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 3.0.8
|
95
|
-
- !ruby/object:Gem::Dependency
|
115
|
+
type: :development
|
116
|
+
requirement: *id006
|
117
|
+
- !ruby/object:Gem::Dependency
|
96
118
|
name: wkhtmltopdf-binary
|
97
|
-
|
119
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
98
120
|
none: false
|
99
|
-
requirements:
|
121
|
+
requirements:
|
100
122
|
- - ~>
|
101
|
-
- !ruby/object:Gem::Version
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
hash: 49
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
- 9
|
128
|
+
- 5
|
102
129
|
version: 0.9.5
|
103
|
-
type: :development
|
104
130
|
prerelease: false
|
105
|
-
|
106
|
-
|
107
|
-
requirements:
|
108
|
-
- - ~>
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.9.5
|
131
|
+
type: :development
|
132
|
+
requirement: *id007
|
111
133
|
description: Uses wkhtmltopdf to create PDFs using HTML
|
112
|
-
email:
|
134
|
+
email:
|
113
135
|
- jared@codewordstudios.com
|
114
136
|
executables: []
|
137
|
+
|
115
138
|
extensions: []
|
139
|
+
|
116
140
|
extra_rdoc_files: []
|
117
|
-
|
141
|
+
|
142
|
+
files:
|
118
143
|
- .document
|
119
144
|
- .gitignore
|
120
145
|
- .rspec
|
121
146
|
- .travis.yml
|
147
|
+
- CHANGELOG.md
|
122
148
|
- Gemfile
|
123
149
|
- Gemfile.lock
|
124
|
-
- History.md
|
125
150
|
- LICENSE
|
126
151
|
- POST_INSTALL
|
127
152
|
- README.md
|
@@ -139,31 +164,40 @@ files:
|
|
139
164
|
- spec/pdfkit_spec.rb
|
140
165
|
- spec/source_spec.rb
|
141
166
|
- spec/spec_helper.rb
|
142
|
-
homepage:
|
167
|
+
homepage: https://github.com/pdfkit/pdfkit
|
143
168
|
licenses: []
|
169
|
+
|
144
170
|
post_install_message:
|
145
171
|
rdoc_options: []
|
146
|
-
|
172
|
+
|
173
|
+
require_paths:
|
147
174
|
- lib
|
148
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
176
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
|
154
|
-
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
hash: 3
|
181
|
+
segments:
|
182
|
+
- 0
|
183
|
+
version: "0"
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
185
|
none: false
|
156
|
-
requirements:
|
157
|
-
- -
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
|
186
|
+
requirements:
|
187
|
+
- - ">="
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
hash: 3
|
190
|
+
segments:
|
191
|
+
- 0
|
192
|
+
version: "0"
|
160
193
|
requirements: []
|
194
|
+
|
161
195
|
rubyforge_project: pdfkit
|
162
|
-
rubygems_version: 1.8.
|
196
|
+
rubygems_version: 1.8.25
|
163
197
|
signing_key:
|
164
198
|
specification_version: 3
|
165
199
|
summary: HTML+CSS -> PDF
|
166
|
-
test_files:
|
200
|
+
test_files:
|
167
201
|
- spec/fixtures/example.css
|
168
202
|
- spec/fixtures/example.html
|
169
203
|
- spec/middleware_spec.rb
|