pdf-inspector 1.2.1 → 1.3.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +88 -0
- data/README.md +25 -22
- data/lib/pdf/inspector.rb +21 -19
- data/lib/pdf/inspector/extgstate.rb +6 -6
- data/lib/pdf/inspector/graphics.rb +35 -38
- data/lib/pdf/inspector/page.rb +6 -7
- data/lib/pdf/inspector/text.rb +18 -12
- metadata +110 -10
- metadata.gz.sig +1 -0
- data/CHANGELOG +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64c36abd9906b5c51cf4892f220692e16e8f75fe
|
4
|
+
data.tar.gz: 5f44e8a3812da690020bbe78c7462b2963071bee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b56e1d6354b6ceb43abb1fd120e0254783cd8c23752b497d796cae2649e0dbe2684275e1680b78c2eb42ad5e962330b7105f412b4a6e46376d97e7f7af7fdc39
|
7
|
+
data.tar.gz: faaf4c7aeb4ff2d7d82d2943c44d770a65cca0e733972fb87fa27e77bc5acbd4ce88153155fba9bc87df6632e80216e13cbf258299ac5f279dbf264b8c14bd71
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/).
|
6
|
+
|
7
|
+
|
8
|
+
## [Unreleased]()
|
9
|
+
|
10
|
+
## [1.3.0]()
|
11
|
+
|
12
|
+
### Added
|
13
|
+
|
14
|
+
* Support for horizontal text scaling. [#22]()
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
|
18
|
+
* Relaxed dependency on pdf-reader to include 2.x versions
|
19
|
+
|
20
|
+
|
21
|
+
## [1.2.1]() -- 2015-10-22
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
* Blend mode support
|
26
|
+
|
27
|
+
|
28
|
+
## [1.2.0]() -- 2014-10-30
|
29
|
+
|
30
|
+
### Added
|
31
|
+
|
32
|
+
* PDF::Inspector::Text#positions to capture `Td` operations
|
33
|
+
|
34
|
+
|
35
|
+
## [1.1.0]() -- 2013-04-08
|
36
|
+
|
37
|
+
### Changed
|
38
|
+
|
39
|
+
* Update to use the pdf-reader 1.0 APIs. No changes to the pdf-inspector API
|
40
|
+
|
41
|
+
|
42
|
+
## [1.0.2]() -- 2012-10-27
|
43
|
+
|
44
|
+
### Added
|
45
|
+
|
46
|
+
* Soft mask support
|
47
|
+
|
48
|
+
|
49
|
+
## [1.0.1]() -- 2011-10-11
|
50
|
+
|
51
|
+
### Fixed
|
52
|
+
|
53
|
+
* Fixed gemspec
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
## [1.0.0] -- 2011-08-13
|
58
|
+
|
59
|
+
Initial release as a standalone gem
|
60
|
+
|
61
|
+
### Added
|
62
|
+
|
63
|
+
* Per-page strings
|
64
|
+
* Dash
|
65
|
+
* Cap style
|
66
|
+
* Line style
|
67
|
+
* Matrix inspector
|
68
|
+
* Character and Word spacing
|
69
|
+
* Kerning
|
70
|
+
* Color space
|
71
|
+
* Graphic state
|
72
|
+
* XObject streams
|
73
|
+
* Tracking
|
74
|
+
* Text rendering mode
|
75
|
+
* Patterns
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
[Unreleased]: https://github.com/prawnpdf/pdf-inspector/compare/1.3.0...HEAD
|
80
|
+
[1.3.0]: https://github.com/prawnpdf/pdf-inspector/compare/1.2.1...1.3.0
|
81
|
+
[1.2.1]: https://github.com/prawnpdf/pdf-inspector/compare/1.2.0...1.2.1
|
82
|
+
[1.2.0]: https://github.com/prawnpdf/pdf-inspector/compare/1.1.0...1.2.0
|
83
|
+
[1.1.0]: https://github.com/prawnpdf/pdf-inspector/compare/1.0.2...1.1.0
|
84
|
+
[1.0.2]: https://github.com/prawnpdf/pdf-inspector/compare/1.0.1...1.0.2
|
85
|
+
[1.0.1]: https://github.com/prawnpdf/pdf-inspector/compare/1.0.0...1.0.1
|
86
|
+
[1.0.0]: https://github.com/prawnpdf/pdf-inspector/commits/1.0.0
|
87
|
+
|
88
|
+
[#22]: https://github.com/prawnpdf/pdf-inspector/pull/22
|
data/README.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
-
# PDF::Inspector
|
1
|
+
# PDF::Inspector: A tool for analyzing PDF output
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+

|
4
|
+

|
5
|
+
|
6
|
+
This library provides a number of [PDF::Reader][0] based tools for use in
|
7
|
+
testing PDF output. Presently, the primary purpose of this tool is to support
|
8
|
+
the tests found in [Prawn][1], a pure Ruby PDF generation library.
|
6
9
|
|
7
10
|
However, it may be useful to others, so we have made it available as a gem in
|
8
11
|
its own right.
|
@@ -11,7 +14,7 @@ its own right.
|
|
11
14
|
|
12
15
|
The recommended installation method is via Rubygems.
|
13
16
|
|
14
|
-
```
|
17
|
+
```console
|
15
18
|
gem install pdf-inspector
|
16
19
|
```
|
17
20
|
|
@@ -19,7 +22,7 @@ Or put this in your Gemfile, if you use [Bundler][2]:
|
|
19
22
|
|
20
23
|
```ruby
|
21
24
|
group :test do
|
22
|
-
gem 'pdf-inspector', :
|
25
|
+
gem 'pdf-inspector', require: "pdf/inspector"
|
23
26
|
end
|
24
27
|
```
|
25
28
|
|
@@ -30,17 +33,21 @@ Check for text in the generated PDF:
|
|
30
33
|
```ruby
|
31
34
|
rendered_pdf = your_pdf_document.render
|
32
35
|
text_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
33
|
-
text_analysis.strings
|
36
|
+
text_analysis.strings # => ["foo"]
|
34
37
|
```
|
35
38
|
|
36
|
-
Note that
|
39
|
+
Note that `strings` returns an array containing one string for each text drawing
|
40
|
+
operation in the PDF. As a result, sentences and paragraphs will often be
|
41
|
+
returned in fragments. To test for the presence of a complete sentence or a
|
42
|
+
longer string, join the array together with an operation like `full_text =
|
43
|
+
text_analysis.strings.join(" ")`.
|
37
44
|
|
38
45
|
Check number of pages
|
39
46
|
|
40
|
-
```
|
47
|
+
```ruby
|
41
48
|
rendered_pdf = your_pdf_document.render
|
42
49
|
page_analysis = PDF::Inspector::Page.analyze(rendered_pdf)
|
43
|
-
page_analysis.pages.size
|
50
|
+
page_analysis.pages.size # => 2
|
44
51
|
```
|
45
52
|
|
46
53
|
## Licensing
|
@@ -49,12 +56,10 @@ Matz’s terms for Ruby, GPLv2, or GPLv3. See LICENSE for details.
|
|
49
56
|
|
50
57
|
## Mailing List
|
51
58
|
|
52
|
-
pdf-inspector is maintained as a dependency of
|
59
|
+
pdf-inspector is maintained as a dependency of Prawn, the ruby PDF generation
|
53
60
|
library.
|
54
61
|
|
55
|
-
Any questions or feedback should be sent to the Prawn google group.
|
56
|
-
|
57
|
-
[http://groups.google.com/group/prawn-ruby][3]
|
62
|
+
Any questions or feedback should be sent to the [Prawn google group][3].
|
58
63
|
|
59
64
|
## Authorship
|
60
65
|
|
@@ -64,14 +69,12 @@ team. Currently active maintainers include Brad Ediger, Daniel Nelson, James
|
|
64
69
|
Healy, and Jonathan Greenberg.
|
65
70
|
|
66
71
|
You can find the full list of Github users who have at least one patch accepted
|
67
|
-
to pdf-inspector
|
72
|
+
to pdf-inspector on [GitHub Contributors page][4].
|
68
73
|
|
69
|
-
[https://github.com/sandal/pdf-inspector/contributors][4]
|
70
74
|
|
71
|
-
## References
|
72
75
|
|
73
|
-
[0]:
|
74
|
-
[1]:
|
75
|
-
[2]:
|
76
|
-
[3]:
|
77
|
-
[4]: https://github.com/
|
76
|
+
[0]: https://github.com/yob/pdf-reader
|
77
|
+
[1]: https://github.com/prawnpdf/prawn
|
78
|
+
[2]: https://bundler.io/
|
79
|
+
[3]: https://groups.google.com/group/prawn-ruby
|
80
|
+
[4]: https://github.com/prawnpdf/pdf-inspector/contributors
|
data/lib/pdf/inspector.rb
CHANGED
@@ -1,36 +1,38 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
1
|
+
require 'rubygems'
|
2
|
+
require 'pdf/reader'
|
3
|
+
require 'pdf/inspector/text'
|
4
|
+
require 'pdf/inspector/xobject'
|
5
|
+
require 'pdf/inspector/extgstate'
|
6
|
+
require 'pdf/inspector/graphics'
|
7
|
+
require 'pdf/inspector/page'
|
8
|
+
require 'stringio'
|
9
9
|
|
10
10
|
module PDF
|
11
11
|
class Inspector
|
12
|
-
def self.analyze(output
|
12
|
+
def self.analyze(output, *args, &block)
|
13
13
|
if output.is_a?(String)
|
14
14
|
output = StringIO.new(output)
|
15
15
|
end
|
16
|
-
obs =
|
16
|
+
obs = new(*args, &block)
|
17
17
|
PDF::Reader.open(output) do |reader|
|
18
18
|
reader.pages.each do |page|
|
19
19
|
page.walk(obs)
|
20
20
|
end
|
21
21
|
end
|
22
|
-
obs
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.analyze_file(filename
|
26
|
-
File.open(filename,
|
27
|
-
analyze(io, *args
|
22
|
+
obs
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.analyze_file(filename, *args, &block)
|
26
|
+
File.open(filename, 'rb') do |io|
|
27
|
+
analyze(io, *args, &block)
|
28
28
|
end
|
29
|
-
end
|
30
|
-
|
29
|
+
end
|
30
|
+
|
31
31
|
def self.parse(obj)
|
32
32
|
PDF::Reader::Parser.new(
|
33
|
-
PDF::Reader::Buffer.new(StringIO.new(obj)),
|
33
|
+
PDF::Reader::Buffer.new(StringIO.new(obj)),
|
34
|
+
nil
|
35
|
+
).parse_token
|
34
36
|
end
|
35
37
|
end
|
36
38
|
end
|
@@ -8,13 +8,13 @@ module PDF
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def page=(page)
|
11
|
-
page.graphic_states.each do |
|
11
|
+
page.graphic_states.each do |_label, stream|
|
12
12
|
@extgstates << {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
opacity: stream[:ca],
|
14
|
+
stroke_opacity: stream[:CA],
|
15
|
+
soft_mask: stream[:SMask],
|
16
|
+
blend_mode: stream[:BM]
|
17
|
+
}
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -1,68 +1,67 @@
|
|
1
1
|
module PDF
|
2
|
-
class Inspector
|
3
|
-
module Graphics
|
2
|
+
class Inspector
|
3
|
+
module Graphics
|
4
4
|
class Line < Inspector
|
5
5
|
attr_accessor :points, :widths
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@points = []
|
9
|
-
@widths = []
|
10
|
-
end
|
9
|
+
@widths = []
|
10
|
+
end
|
11
11
|
|
12
12
|
def append_line(*params)
|
13
13
|
@points << params
|
14
|
-
end
|
14
|
+
end
|
15
15
|
|
16
16
|
def begin_new_subpath(*params)
|
17
17
|
@points << params
|
18
|
-
end
|
19
|
-
|
18
|
+
end
|
19
|
+
|
20
20
|
def set_line_width(params)
|
21
21
|
@widths << params
|
22
22
|
end
|
23
|
+
end
|
23
24
|
|
24
|
-
end
|
25
|
-
|
26
25
|
class Rectangle < Inspector
|
27
26
|
attr_reader :rectangles
|
28
27
|
|
29
28
|
def initialize
|
30
|
-
@rectangles = []
|
29
|
+
@rectangles = []
|
31
30
|
end
|
32
31
|
|
33
|
-
def append_rectangle(*params)
|
34
|
-
@rectangles << {
|
35
|
-
|
36
|
-
|
32
|
+
def append_rectangle(*params)
|
33
|
+
@rectangles << {
|
34
|
+
point: params[0..1],
|
35
|
+
width: params[2],
|
36
|
+
height: params[3]
|
37
|
+
}
|
37
38
|
end
|
38
39
|
end
|
39
|
-
|
40
|
-
class Curve < Inspector
|
41
40
|
|
41
|
+
class Curve < Inspector
|
42
42
|
attr_reader :coords
|
43
43
|
|
44
44
|
def initialize
|
45
|
-
@coords = []
|
46
|
-
end
|
45
|
+
@coords = []
|
46
|
+
end
|
47
47
|
|
48
|
-
def begin_new_subpath(*params)
|
48
|
+
def begin_new_subpath(*params)
|
49
49
|
@coords += params
|
50
50
|
end
|
51
51
|
|
52
52
|
def append_curved_segment(*params)
|
53
53
|
@coords += params
|
54
|
-
end
|
54
|
+
end
|
55
|
+
end
|
55
56
|
|
56
|
-
end
|
57
|
-
|
58
57
|
class Color < Inspector
|
59
|
-
attr_reader :stroke_color, :fill_color, :stroke_color_count,
|
58
|
+
attr_reader :stroke_color, :fill_color, :stroke_color_count,
|
60
59
|
:fill_color_count, :stroke_color_space_count, :color_space
|
61
|
-
|
60
|
+
|
62
61
|
def initialize
|
63
62
|
@stroke_color_count = 0
|
64
|
-
@fill_color_count
|
65
|
-
@stroke_color_space_count
|
63
|
+
@fill_color_count = 0
|
64
|
+
@stroke_color_space_count = { DeviceCMYK: 0, DeviceRGB: 0 }
|
66
65
|
end
|
67
66
|
|
68
67
|
def set_color_for_stroking_and_special(*params)
|
@@ -74,14 +73,13 @@ module PDF
|
|
74
73
|
@fill_color_count += 1
|
75
74
|
@fill_color = params
|
76
75
|
end
|
77
|
-
|
76
|
+
|
78
77
|
def set_stroke_color_space(*params)
|
79
78
|
@stroke_color_space_count[params[0]] += 1
|
80
79
|
@color_space = params[0]
|
81
80
|
end
|
81
|
+
end
|
82
82
|
|
83
|
-
end
|
84
|
-
|
85
83
|
class Dash < Inspector
|
86
84
|
attr_reader :stroke_dash, :stroke_dash_count
|
87
85
|
|
@@ -94,7 +92,7 @@ module PDF
|
|
94
92
|
@stroke_dash = params
|
95
93
|
end
|
96
94
|
end
|
97
|
-
|
95
|
+
|
98
96
|
class CapStyle < Inspector
|
99
97
|
attr_reader :cap_style, :cap_style_count
|
100
98
|
|
@@ -107,7 +105,7 @@ module PDF
|
|
107
105
|
@cap_style = params[0]
|
108
106
|
end
|
109
107
|
end
|
110
|
-
|
108
|
+
|
111
109
|
class JoinStyle < Inspector
|
112
110
|
attr_reader :join_style, :join_style_count
|
113
111
|
|
@@ -120,7 +118,7 @@ module PDF
|
|
120
118
|
@join_style = params[0]
|
121
119
|
end
|
122
120
|
end
|
123
|
-
|
121
|
+
|
124
122
|
class Matrix < Inspector
|
125
123
|
attr_reader :matrices
|
126
124
|
|
@@ -132,20 +130,20 @@ module PDF
|
|
132
130
|
@matrices << values
|
133
131
|
end
|
134
132
|
end
|
135
|
-
|
133
|
+
|
136
134
|
class State < Inspector
|
137
135
|
attr_reader :save_graphics_state_count, :restore_graphics_state_count
|
138
136
|
|
139
137
|
def initialize
|
140
138
|
@save_graphics_state_count = 0
|
141
|
-
@restore_graphics_state_count = 0
|
139
|
+
@restore_graphics_state_count = 0
|
142
140
|
end
|
143
|
-
|
144
|
-
def save_graphics_state(*
|
141
|
+
|
142
|
+
def save_graphics_state(*)
|
145
143
|
@save_graphics_state_count += 1
|
146
144
|
end
|
147
145
|
|
148
|
-
def restore_graphics_state(*
|
146
|
+
def restore_graphics_state(*)
|
149
147
|
@restore_graphics_state_count += 1
|
150
148
|
end
|
151
149
|
end
|
@@ -164,7 +162,6 @@ module PDF
|
|
164
162
|
end
|
165
163
|
end
|
166
164
|
end
|
167
|
-
|
168
165
|
end
|
169
166
|
end
|
170
167
|
end
|
data/lib/pdf/inspector/page.rb
CHANGED
@@ -8,15 +8,15 @@ module PDF
|
|
8
8
|
attr_reader :pages
|
9
9
|
|
10
10
|
def_delegators :@state, :set_text_font_and_size
|
11
|
-
|
11
|
+
|
12
12
|
def initialize
|
13
13
|
@pages = []
|
14
14
|
end
|
15
15
|
|
16
16
|
def page=(page)
|
17
|
-
@pages << {:
|
17
|
+
@pages << { size: page.attributes[:MediaBox][-2..-1], strings: [] }
|
18
18
|
@state = PDF::Reader::PageState.new(page)
|
19
|
-
end
|
19
|
+
end
|
20
20
|
|
21
21
|
def show_text(*params)
|
22
22
|
params.each do |param|
|
@@ -24,13 +24,12 @@ module PDF
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def show_text_with_positioning(*params)
|
27
|
+
def show_text_with_positioning(*params)
|
28
28
|
# ignore kerning information
|
29
29
|
show_text params[0].reject { |e|
|
30
|
-
Numeric
|
30
|
+
e.is_a? Numeric
|
31
31
|
}.join
|
32
32
|
end
|
33
|
-
|
34
|
-
end
|
33
|
+
end
|
35
34
|
end
|
36
35
|
end
|
data/lib/pdf/inspector/text.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
module PDF
|
2
2
|
class Inspector
|
3
|
-
class Text < Inspector
|
3
|
+
class Text < Inspector
|
4
4
|
attr_accessor :font_settings, :size, :strings
|
5
5
|
attr_accessor :character_spacing, :word_spacing
|
6
6
|
attr_accessor :kerned, :text_rendering_mode, :positions
|
7
|
+
attr_accessor :horizontal_text_scaling
|
7
8
|
|
8
|
-
def initialize
|
9
|
+
def initialize
|
9
10
|
@font_settings = []
|
10
11
|
@fonts = {}
|
11
12
|
@font_objects = {}
|
@@ -15,6 +16,7 @@ module PDF
|
|
15
16
|
@kerned = []
|
16
17
|
@text_rendering_mode = []
|
17
18
|
@positions = []
|
19
|
+
@horizontal_text_scaling = []
|
18
20
|
end
|
19
21
|
|
20
22
|
def page=(page)
|
@@ -25,10 +27,10 @@ module PDF
|
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
|
-
def set_text_font_and_size(*params)
|
30
|
+
def set_text_font_and_size(*params)
|
29
31
|
@state.set_text_font_and_size(*params)
|
30
|
-
@font_settings << { :
|
31
|
-
end
|
32
|
+
@font_settings << { name: @fonts[params[0]], size: params[1] }
|
33
|
+
end
|
32
34
|
|
33
35
|
def move_text_position(tx, ty)
|
34
36
|
@positions << [tx, ty]
|
@@ -39,11 +41,11 @@ module PDF
|
|
39
41
|
@strings << @state.current_font.to_utf8(params[0])
|
40
42
|
end
|
41
43
|
|
42
|
-
def show_text_with_positioning(*params)
|
44
|
+
def show_text_with_positioning(*params)
|
43
45
|
@kerned << true
|
44
46
|
# ignore kerning information
|
45
47
|
show_text params[0].reject { |e|
|
46
|
-
Numeric
|
48
|
+
e.is_a? Numeric
|
47
49
|
}.join
|
48
50
|
end
|
49
51
|
|
@@ -52,16 +54,20 @@ module PDF
|
|
52
54
|
@text_rendering_mode << params[0]
|
53
55
|
end
|
54
56
|
|
55
|
-
def set_character_spacing(
|
56
|
-
@state.set_character_spacing(
|
57
|
-
@character_spacing <<
|
57
|
+
def set_character_spacing(spacing)
|
58
|
+
@state.set_character_spacing(spacing)
|
59
|
+
@character_spacing << spacing
|
58
60
|
end
|
59
61
|
|
60
62
|
def set_word_spacing(*params)
|
61
63
|
@state.set_word_spacing(*params)
|
62
64
|
@word_spacing << params[0]
|
63
65
|
end
|
64
|
-
|
65
|
-
|
66
|
+
|
67
|
+
def set_horizontal_text_scaling(scaling)
|
68
|
+
@state.set_horizontal_text_scaling(scaling)
|
69
|
+
@horizontal_text_scaling << scaling
|
70
|
+
end
|
71
|
+
end
|
66
72
|
end
|
67
73
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf-inspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregory Brown
|
@@ -11,23 +11,121 @@ authors:
|
|
11
11
|
- James Healy
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
|
-
cert_chain:
|
15
|
-
|
14
|
+
cert_chain:
|
15
|
+
- |
|
16
|
+
-----BEGIN CERTIFICATE-----
|
17
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQ0wCwYDVQQDDARhbGV4
|
18
|
+
MRkwFwYKCZImiZPyLGQBGRYJcG9pbnRsZXNzMRMwEQYKCZImiZPyLGQBGRYDb25l
|
19
|
+
MB4XDTE3MDEwNDExNDAzM1oXDTE4MDEwNDExNDAzM1owPzENMAsGA1UEAwwEYWxl
|
20
|
+
eDEZMBcGCgmSJomT8ixkARkWCXBvaW50bGVzczETMBEGCgmSJomT8ixkARkWA29u
|
21
|
+
ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM85Us8YQr55o/rMl+J+
|
22
|
+
ula89ODiqjdc0kk+ibzRLCpfaFUJWxEMrhFiApRCopFDMeGXHXjBkfBYsRMFVs0M
|
23
|
+
Zfe6rIKdNZQlQqHfJ2JlKFek0ehX81buGERi82wNwECNhOZu9c6G5gKjRPP/Q3Y6
|
24
|
+
K6f/TAggK0+/K1j1NjT+WSVaMBuyomM067ejwhiQkEA3+tT3oT/paEXCOfEtxOdX
|
25
|
+
1F8VFd2MbmMK6CGgHbFLApfyDBtDx+ydplGZ3IMZg2nPqwYXTPJx+IuRO21ssDad
|
26
|
+
gBMIAvL3wIeezJk2xONvhYg0K5jbIQOPB6zD1/9E6Q0LrwSBDkz5oyOn4PRZxgZ/
|
27
|
+
OiMCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFE+A
|
28
|
+
jBJVt6ie5r83L/znvqjF1RuuMB0GA1UdEQQWMBSBEmFsZXhAcG9pbnRsZXNzLm9u
|
29
|
+
ZTAdBgNVHRIEFjAUgRJhbGV4QHBvaW50bGVzcy5vbmUwDQYJKoZIhvcNAQEFBQAD
|
30
|
+
ggEBAEmhsdVfgxHfXtOG6AP3qe7/PBjJPdUzNOkE/elj6TgpdvvJkOZ6QNyyqvpl
|
31
|
+
CsoDWL0EXPM5pIETaj5z9iBRK9fAi8YNS3zckhBJwhR78cb4+MiCPIBC+iiGx5bw
|
32
|
+
BFER2ASPeeY4uC0AHWHnURDLdxyZr+xp6pb/TitTAaCm18Kvkk1u60lOa4Jtdb+9
|
33
|
+
2U1KICEBoX6UAzdT3N0nZ3VKq/vHVrvV2oePYCMIlNkghWp+VUE91OTBDMjnjjj8
|
34
|
+
wxx1aB3kGoI0T6JXywKpPnzUt/qji/qpzCNiVJ0RZxzDHyZuL8NEoA9ORZnAIGiW
|
35
|
+
5u3JK+T0toNEYkMuV6W8NU+gVyo=
|
36
|
+
-----END CERTIFICATE-----
|
37
|
+
date: 2017-03-17 00:00:00.000000000 Z
|
16
38
|
dependencies:
|
17
39
|
- !ruby/object:Gem::Dependency
|
18
40
|
name: pdf-reader
|
19
41
|
requirement: !ruby/object:Gem::Requirement
|
20
42
|
requirements:
|
21
|
-
- - "
|
43
|
+
- - ">="
|
22
44
|
- !ruby/object:Gem::Version
|
23
45
|
version: '1.0'
|
46
|
+
- - "<"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 3.0.a
|
24
49
|
type: :runtime
|
25
50
|
prerelease: false
|
26
51
|
version_requirements: !ruby/object:Gem::Requirement
|
27
52
|
requirements:
|
28
|
-
- - "
|
53
|
+
- - ">="
|
29
54
|
- !ruby/object:Gem::Version
|
30
55
|
version: '1.0'
|
56
|
+
- - "<"
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 3.0.a
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: bundler
|
61
|
+
requirement: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: rake
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
type: :development
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: rspec
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
type: :development
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: rubocop
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0.46'
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0.46'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: yard
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
31
129
|
description: |
|
32
130
|
This library provides a number of PDF::Reader[0] based tools for use in testing
|
33
131
|
PDF output. Presently, the primary purpose of this tool is to support the
|
@@ -47,10 +145,10 @@ email:
|
|
47
145
|
executables: []
|
48
146
|
extensions: []
|
49
147
|
extra_rdoc_files:
|
50
|
-
- CHANGELOG
|
148
|
+
- CHANGELOG.md
|
51
149
|
- README.md
|
52
150
|
files:
|
53
|
-
- CHANGELOG
|
151
|
+
- CHANGELOG.md
|
54
152
|
- COPYING
|
55
153
|
- GPLv2
|
56
154
|
- GPLv3
|
@@ -63,7 +161,10 @@ files:
|
|
63
161
|
- lib/pdf/inspector/text.rb
|
64
162
|
- lib/pdf/inspector/xobject.rb
|
65
163
|
homepage: https://github.com/prawnpdf/pdf-inspector
|
66
|
-
licenses:
|
164
|
+
licenses:
|
165
|
+
- PRAWN
|
166
|
+
- GPL-2.0
|
167
|
+
- GPL-3.0
|
67
168
|
metadata: {}
|
68
169
|
post_install_message:
|
69
170
|
rdoc_options:
|
@@ -86,9 +187,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
187
|
version: '0'
|
87
188
|
requirements: []
|
88
189
|
rubyforge_project:
|
89
|
-
rubygems_version: 2.
|
190
|
+
rubygems_version: 2.6.10
|
90
191
|
signing_key:
|
91
192
|
specification_version: 4
|
92
193
|
summary: A tool for analyzing PDF output
|
93
194
|
test_files: []
|
94
|
-
has_rdoc:
|
metadata.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
R��O�ד�0E@=�����=$��vD�ݟ��qT�ި.��ZB�,�.��r��ŇX�۲���~8�Ǝ���8�4B��J�f��L��=�~S���:�?��J(!O"qW!
|
data/CHANGELOG
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
v1.2.1 (22 November 2015)
|
2
|
-
* Add blend mode support
|
3
|
-
|
4
|
-
v1.2.0 (30 October 2014)
|
5
|
-
|
6
|
-
* Added PDF::Inspector::Text#positions to capture `Td` operations.
|
7
|
-
|
8
|
-
v1.1.0 (8th April 2013)
|
9
|
-
* Update to use the pdf-reader 1.0 APIs. No changes to the pdf-inspector
|
10
|
-
API
|
11
|
-
|
12
|
-
v1.0.2 (27 October 2012)
|
13
|
-
* Add soft mask support
|
14
|
-
|
15
|
-
v1.0.1
|
16
|
-
|
17
|
-
v1.0.0 (13 August 2011)
|
18
|
-
* initial release as a standalone gem
|