pdf-core 0.5.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Gemfile +3 -1
- data/Rakefile +24 -6
- data/lib/pdf/core.rb +22 -19
- data/lib/pdf/core/annotations.rb +17 -18
- data/lib/pdf/core/byte_string.rb +3 -2
- data/lib/pdf/core/destinations.rb +18 -15
- data/lib/pdf/core/document_state.rb +30 -22
- data/lib/pdf/core/filter_list.rb +18 -6
- data/lib/pdf/core/filters.rb +5 -5
- data/lib/pdf/core/graphics_state.rb +17 -20
- data/lib/pdf/core/literal_string.rb +2 -1
- data/lib/pdf/core/name_tree.rb +46 -43
- data/lib/pdf/core/object_store.rb +17 -22
- data/lib/pdf/core/outline_item.rb +11 -5
- data/lib/pdf/core/outline_root.rb +3 -1
- data/lib/pdf/core/page.rb +96 -66
- data/lib/pdf/core/page_geometry.rb +53 -55
- data/lib/pdf/core/pdf_object.rb +55 -46
- data/lib/pdf/core/reference.rb +21 -17
- data/lib/pdf/core/renderer.rb +46 -37
- data/lib/pdf/core/stream.rb +14 -8
- data/lib/pdf/core/text.rb +100 -47
- data/lib/pdf/core/utils.rb +13 -0
- data/pdf-core.gemspec +37 -22
- metadata +83 -29
- metadata.gz.sig +2 -0
- data/spec/decimal_rounding_spec.rb +0 -12
- data/spec/filters_spec.rb +0 -34
- data/spec/name_tree_spec.rb +0 -122
- data/spec/object_store_spec.rb +0 -49
- data/spec/pdf_object_spec.rb +0 -172
- data/spec/reference_spec.rb +0 -62
- data/spec/spec_helper.rb +0 -32
- data/spec/stream_spec.rb +0 -59
data/lib/pdf/core/stream.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# prawn/core/stream.rb : Implements Stream objects
|
4
4
|
#
|
@@ -18,7 +18,7 @@ module PDF
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def <<(io)
|
21
|
-
(@stream ||= '') << io
|
21
|
+
(@stream ||= +'') << io
|
22
22
|
@filtered_stream = nil
|
23
23
|
self
|
24
24
|
end
|
@@ -44,7 +44,8 @@ module PDF
|
|
44
44
|
@filtered_stream = @stream.dup
|
45
45
|
|
46
46
|
@filters.each do |(filter_name, params)|
|
47
|
-
|
47
|
+
filter = PDF::Core::Filters.const_get(filter_name)
|
48
|
+
if filter
|
48
49
|
@filtered_stream = filter.encode @filtered_stream, params
|
49
50
|
end
|
50
51
|
end
|
@@ -52,8 +53,6 @@ module PDF
|
|
52
53
|
|
53
54
|
@filtered_stream
|
54
55
|
# XXX Fillter stream
|
55
|
-
else
|
56
|
-
nil
|
57
56
|
end
|
58
57
|
end
|
59
58
|
|
@@ -75,12 +74,12 @@ module PDF
|
|
75
74
|
filter_params = @filters.decode_params
|
76
75
|
|
77
76
|
d = {
|
78
|
-
:
|
77
|
+
Length: filtered_stream.length
|
79
78
|
}
|
80
79
|
if filter_names.any?
|
81
80
|
d[:Filter] = filter_names
|
82
81
|
end
|
83
|
-
if filter_params.any? {|f| !f.nil? }
|
82
|
+
if filter_params.any? { |f| !f.nil? }
|
84
83
|
d[:DecodeParms] = filter_params
|
85
84
|
end
|
86
85
|
|
@@ -91,7 +90,14 @@ module PDF
|
|
91
90
|
end
|
92
91
|
|
93
92
|
def inspect
|
94
|
-
|
93
|
+
format(
|
94
|
+
'#<%<class>s:0x%<object_id>014x '\
|
95
|
+
'@stream=%<stream>s, @filters=%<filters>s>',
|
96
|
+
class: self.class.name,
|
97
|
+
object_id: object_id,
|
98
|
+
stream: @stream.inspect,
|
99
|
+
filters: @filters.inspect
|
100
|
+
)
|
95
101
|
end
|
96
102
|
end
|
97
103
|
end
|
data/lib/pdf/core/text.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# prawn/core/text.rb : Implements low level text helpers for Prawn
|
4
4
|
#
|
@@ -11,20 +11,34 @@ module PDF
|
|
11
11
|
module Text #:nodoc:
|
12
12
|
# These should be used as a base. Extensions may build on this list
|
13
13
|
#
|
14
|
-
VALID_OPTIONS = [
|
15
|
-
MODES = {
|
16
|
-
|
17
|
-
|
14
|
+
VALID_OPTIONS = %i[kerning size style].freeze
|
15
|
+
MODES = {
|
16
|
+
fill: 0,
|
17
|
+
stroke: 1,
|
18
|
+
fill_stroke: 2,
|
19
|
+
invisible: 3,
|
20
|
+
fill_clip: 4,
|
21
|
+
stroke_clip: 5,
|
22
|
+
fill_stroke_clip: 6,
|
23
|
+
clip: 7
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
class BadFontFamily < StandardError
|
27
|
+
def initialize(message = 'Bad font family')
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
18
31
|
|
19
32
|
attr_reader :skip_encoding
|
20
33
|
|
21
|
-
# Low level call to set the current font style and extract text options
|
22
|
-
# an options hash. Should be called from within a save_font block
|
34
|
+
# Low level call to set the current font style and extract text options
|
35
|
+
# from an options hash. Should be called from within a save_font block
|
23
36
|
#
|
24
37
|
def process_text_options(options)
|
25
38
|
if options[:style]
|
26
|
-
raise
|
27
|
-
|
39
|
+
raise BadFontFamily unless font.family
|
40
|
+
|
41
|
+
font(font.family, style: options[:style])
|
28
42
|
end
|
29
43
|
|
30
44
|
# must compare against false to keep kerning on as default
|
@@ -40,23 +54,24 @@ module PDF
|
|
40
54
|
# Defaults to true
|
41
55
|
#
|
42
56
|
def default_kerning?
|
43
|
-
return true
|
57
|
+
return true unless defined?(@default_kerning)
|
58
|
+
|
44
59
|
@default_kerning
|
45
60
|
end
|
46
61
|
|
47
|
-
# Call with a boolean to set the document-wide kerning setting. This can
|
48
|
-
# overridden using the :kerning text option when drawing text or a text
|
62
|
+
# Call with a boolean to set the document-wide kerning setting. This can
|
63
|
+
# be overridden using the :kerning text option when drawing text or a text
|
49
64
|
# box.
|
50
65
|
#
|
51
66
|
# pdf.default_kerning = false
|
52
|
-
# pdf.text(
|
53
|
-
# pdf.text(
|
67
|
+
# pdf.text('hello world') # text is not kerned
|
68
|
+
# pdf.text('hello world', :kerning => true) # text is kerned
|
54
69
|
#
|
55
70
|
def default_kerning(boolean)
|
56
71
|
@default_kerning = boolean
|
57
72
|
end
|
58
73
|
|
59
|
-
|
74
|
+
alias default_kerning= default_kerning
|
60
75
|
|
61
76
|
# Call with no argument to retrieve the current default leading.
|
62
77
|
#
|
@@ -65,12 +80,12 @@ module PDF
|
|
65
80
|
# box.
|
66
81
|
#
|
67
82
|
# pdf.default_leading = 7
|
68
|
-
# pdf.text(
|
69
|
-
# pdf.text(
|
83
|
+
# pdf.text('hello world') # a leading of 7 is used
|
84
|
+
# pdf.text('hello world', :leading => 0) # a leading of 0 is used
|
70
85
|
#
|
71
86
|
# Defaults to 0
|
72
87
|
#
|
73
|
-
def default_leading(number=nil)
|
88
|
+
def default_leading(number = nil)
|
74
89
|
if number.nil?
|
75
90
|
defined?(@default_leading) && @default_leading || 0
|
76
91
|
else
|
@@ -78,7 +93,7 @@ module PDF
|
|
78
93
|
end
|
79
94
|
end
|
80
95
|
|
81
|
-
|
96
|
+
alias default_leading= default_leading
|
82
97
|
|
83
98
|
# Call with no argument to retrieve the current text direction.
|
84
99
|
#
|
@@ -87,8 +102,8 @@ module PDF
|
|
87
102
|
# box.
|
88
103
|
#
|
89
104
|
# pdf.text_direction = :rtl
|
90
|
-
# pdf.text(
|
91
|
-
# pdf.text(
|
105
|
+
# pdf.text('hello world') # prints 'dlrow olleh'
|
106
|
+
# pdf.text('hello world', :direction => :ltr) # prints 'hello world'
|
92
107
|
#
|
93
108
|
# Valid directions are:
|
94
109
|
#
|
@@ -100,7 +115,7 @@ module PDF
|
|
100
115
|
# * When printing left-to-right, the default text alignment is :left
|
101
116
|
# * When printing right-to-left, the default text alignment is :right
|
102
117
|
#
|
103
|
-
def text_direction(direction=nil)
|
118
|
+
def text_direction(direction = nil)
|
104
119
|
if direction.nil?
|
105
120
|
defined?(@text_direction) && @text_direction || :ltr
|
106
121
|
else
|
@@ -108,7 +123,7 @@ module PDF
|
|
108
123
|
end
|
109
124
|
end
|
110
125
|
|
111
|
-
|
126
|
+
alias text_direction= text_direction
|
112
127
|
|
113
128
|
# Call with no argument to retrieve the current fallback fonts.
|
114
129
|
#
|
@@ -121,16 +136,16 @@ module PDF
|
|
121
136
|
# Call with an empty array to turn off fallback fonts
|
122
137
|
#
|
123
138
|
# file = "#{Prawn::DATADIR}/fonts/gkai00mp.ttf"
|
124
|
-
# font_families[
|
125
|
-
# :normal => { :file => file, :font =>
|
139
|
+
# font_families['Kai'] = {
|
140
|
+
# :normal => { :file => file, :font => 'Kai' }
|
126
141
|
# }
|
127
142
|
# file = "#{Prawn::DATADIR}/fonts/Action Man.dfont"
|
128
|
-
# font_families[
|
129
|
-
# :normal => { :file => file, :font =>
|
143
|
+
# font_families['Action Man'] = {
|
144
|
+
# :normal => { :file => file, :font => 'ActionMan' },
|
130
145
|
# }
|
131
|
-
# fallback_fonts [
|
132
|
-
# font
|
133
|
-
# text
|
146
|
+
# fallback_fonts ['Times-Roman', 'Kai']
|
147
|
+
# font 'Action Man'
|
148
|
+
# text 'hello ƒ 你好'
|
134
149
|
# > hello prints in Action Man
|
135
150
|
# > ƒ prints in Times-Roman
|
136
151
|
# > 你好 prints in Kai
|
@@ -142,7 +157,7 @@ module PDF
|
|
142
157
|
# * Increased overhead when fallback fonts are declared as each glyph is
|
143
158
|
# checked to see whether it exists in the current font
|
144
159
|
#
|
145
|
-
def fallback_fonts(fallback_fonts=nil)
|
160
|
+
def fallback_fonts(fallback_fonts = nil)
|
146
161
|
if fallback_fonts.nil?
|
147
162
|
defined?(@fallback_fonts) && @fallback_fonts || []
|
148
163
|
else
|
@@ -150,7 +165,7 @@ module PDF
|
|
150
165
|
end
|
151
166
|
end
|
152
167
|
|
153
|
-
|
168
|
+
alias fallback_fonts= fallback_fonts
|
154
169
|
|
155
170
|
# Call with no argument to retrieve the current text rendering mode.
|
156
171
|
#
|
@@ -158,7 +173,7 @@ module PDF
|
|
158
173
|
# text rendering mode.
|
159
174
|
#
|
160
175
|
# pdf.text_rendering_mode(:stroke) do
|
161
|
-
# pdf.text(
|
176
|
+
# pdf.text('Outlined Text')
|
162
177
|
# end
|
163
178
|
#
|
164
179
|
# Valid modes are:
|
@@ -169,14 +184,19 @@ module PDF
|
|
169
184
|
# * :invisible - invisible text
|
170
185
|
# * :fill_clip - fill text then add to path for clipping
|
171
186
|
# * :stroke_clip - stroke text then add to path for clipping
|
172
|
-
# * :fill_stroke_clip - fill then stroke text, then add to path for
|
187
|
+
# * :fill_stroke_clip - fill then stroke text, then add to path for
|
188
|
+
# clipping
|
173
189
|
# * :clip - add text to path for clipping
|
174
|
-
def text_rendering_mode(mode=nil)
|
175
|
-
|
190
|
+
def text_rendering_mode(mode = nil)
|
191
|
+
if mode.nil?
|
192
|
+
return defined?(@text_rendering_mode) && @text_rendering_mode || :fill
|
193
|
+
end
|
194
|
+
|
176
195
|
unless MODES.key?(mode)
|
177
|
-
raise ArgumentError,
|
196
|
+
raise ArgumentError,
|
197
|
+
"mode must be between one of #{MODES.keys.join(', ')} (#{mode})"
|
178
198
|
end
|
179
|
-
original_mode =
|
199
|
+
original_mode = text_rendering_mode
|
180
200
|
|
181
201
|
if original_mode == mode
|
182
202
|
yield
|
@@ -197,8 +217,11 @@ module PDF
|
|
197
217
|
# For horizontal text, a positive value will increase the space.
|
198
218
|
# For veritical text, a positive value will decrease the space.
|
199
219
|
#
|
200
|
-
def character_spacing(amount=nil)
|
201
|
-
|
220
|
+
def character_spacing(amount = nil)
|
221
|
+
if amount.nil?
|
222
|
+
return defined?(@character_spacing) && @character_spacing || 0
|
223
|
+
end
|
224
|
+
|
202
225
|
original_character_spacing = character_spacing
|
203
226
|
if original_character_spacing == amount
|
204
227
|
yield
|
@@ -215,8 +238,9 @@ module PDF
|
|
215
238
|
# For horizontal text, a positive value will increase the space.
|
216
239
|
# For veritical text, a positive value will decrease the space.
|
217
240
|
#
|
218
|
-
def word_spacing(amount=nil)
|
241
|
+
def word_spacing(amount = nil)
|
219
242
|
return defined?(@word_spacing) && @word_spacing || 0 if amount.nil?
|
243
|
+
|
220
244
|
original_word_spacing = word_spacing
|
221
245
|
if original_word_spacing == amount
|
222
246
|
yield
|
@@ -230,25 +254,54 @@ module PDF
|
|
230
254
|
end
|
231
255
|
end
|
232
256
|
|
257
|
+
# Set the horizontal scaling. amount is a number specifying the
|
258
|
+
# percentage of the normal width.
|
259
|
+
def horizontal_text_scaling(amount = nil)
|
260
|
+
if amount.nil?
|
261
|
+
return defined?(@horizontal_text_scaling) && @horizontal_text_scaling || 100
|
262
|
+
end
|
263
|
+
|
264
|
+
original_horizontal_text_scaling = horizontal_text_scaling
|
265
|
+
if original_horizontal_text_scaling == amount
|
266
|
+
yield
|
267
|
+
else
|
268
|
+
@horizontal_text_scaling = amount
|
269
|
+
add_content "\n#{PDF::Core.real(amount)} Tz"
|
270
|
+
yield
|
271
|
+
add_content "\n#{PDF::Core.real(original_horizontal_text_scaling)} Tz"
|
272
|
+
@horizontal_text_scaling = original_horizontal_text_scaling
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
233
276
|
def add_text_content(text, x, y, options)
|
234
|
-
chunks = font.encode_text(text,options)
|
277
|
+
chunks = font.encode_text(text, options)
|
235
278
|
|
236
279
|
add_content "\nBT"
|
237
280
|
|
238
281
|
if options[:rotate]
|
239
282
|
rad = options[:rotate].to_f * Math::PI / 180
|
240
|
-
array = [
|
283
|
+
array = [
|
284
|
+
Math.cos(rad),
|
285
|
+
Math.sin(rad),
|
286
|
+
-Math.sin(rad),
|
287
|
+
Math.cos(rad),
|
288
|
+
x, y
|
289
|
+
]
|
241
290
|
add_content "#{PDF::Core.real_params(array)} Tm"
|
242
291
|
else
|
243
|
-
add_content "#{PDF::Core.real_params([x,y])} Td"
|
292
|
+
add_content "#{PDF::Core.real_params([x, y])} Td"
|
244
293
|
end
|
245
294
|
|
246
295
|
chunks.each do |(subset, string)|
|
247
296
|
font.add_to_current_page(subset)
|
248
|
-
add_content
|
297
|
+
add_content [
|
298
|
+
PDF::Core.pdf_object(font.identifier_for(subset), true),
|
299
|
+
PDF::Core.pdf_object(font_size, true),
|
300
|
+
'Tf'
|
301
|
+
].join(' ')
|
249
302
|
|
250
|
-
operation = options[:kerning] && string.is_a?(Array) ?
|
251
|
-
add_content PDF::Core
|
303
|
+
operation = options[:kerning] && string.is_a?(Array) ? 'TJ' : 'Tj'
|
304
|
+
add_content "#{PDF::Core.pdf_object(string, true)} #{operation}"
|
252
305
|
end
|
253
306
|
|
254
307
|
add_content "ET\n"
|
data/pdf-core.gemspec
CHANGED
@@ -1,29 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Gem::Specification.new do |spec|
|
2
|
-
spec.name =
|
3
|
-
spec.version =
|
4
|
+
spec.name = 'pdf-core'
|
5
|
+
spec.version = '0.9.0'
|
4
6
|
spec.platform = Gem::Platform::RUBY
|
5
|
-
spec.summary =
|
6
|
-
spec.files =
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
spec.
|
12
|
-
spec.
|
7
|
+
spec.summary = 'PDF::Core is used by Prawn to render PDF documents'
|
8
|
+
spec.files =
|
9
|
+
Dir.glob('lib/**/**/*') +
|
10
|
+
%w[COPYING GPLv2 GPLv3 LICENSE] +
|
11
|
+
%w[Gemfile Rakefile] +
|
12
|
+
['pdf-core.gemspec']
|
13
|
+
spec.require_path = 'lib'
|
14
|
+
spec.required_ruby_version = '>= 2.5'
|
15
|
+
spec.required_rubygems_version = '>= 1.3.6'
|
16
|
+
|
17
|
+
spec.cert_chain = ['certs/pointlessone.pem']
|
18
|
+
if $PROGRAM_NAME.end_with? 'gem'
|
19
|
+
spec.signing_key = File.expand_path('~/.gem/gem-private_key.pem')
|
20
|
+
end
|
13
21
|
|
14
|
-
#spec.
|
15
|
-
#spec.
|
16
|
-
#spec.rdoc_options << '--title' << 'Prawn Documentation' <<
|
22
|
+
# spec.extra_rdoc_files = %w{README.md LICENSE COPYING GPLv2 GPLv3}
|
23
|
+
# spec.rdoc_options << '--title' << 'Prawn Documentation' <<
|
17
24
|
# '--main' << 'README.md' << '-q'
|
18
|
-
spec.authors = [
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
spec.
|
23
|
-
|
25
|
+
spec.authors = [
|
26
|
+
'Gregory Brown', 'Brad Ediger', 'Daniel Nelson', 'Jonathan Greenberg',
|
27
|
+
'James Healy'
|
28
|
+
]
|
29
|
+
spec.email = [
|
30
|
+
'gregory.t.brown@gmail.com', 'brad@bradediger.com', 'dnelson@bluejade.com',
|
31
|
+
'greenberg@entryway.net', 'jimmy@deefa.com'
|
32
|
+
]
|
33
|
+
spec.licenses = %w[PRAWN GPL-2.0 GPL-3.0]
|
24
34
|
spec.add_development_dependency('pdf-inspector', '~> 1.1.0')
|
25
|
-
spec.add_development_dependency('
|
35
|
+
spec.add_development_dependency('pdf-reader', '~>1.2')
|
26
36
|
spec.add_development_dependency('rake')
|
27
|
-
spec.
|
28
|
-
spec.
|
37
|
+
spec.add_development_dependency('rspec')
|
38
|
+
spec.add_development_dependency('rubocop', '~> 0.93')
|
39
|
+
spec.add_development_dependency('rubocop-performance', '~> 1.8')
|
40
|
+
spec.add_development_dependency('rubocop-rspec', '~> 1.44')
|
41
|
+
spec.add_development_dependency('simplecov')
|
42
|
+
spec.homepage = 'http://prawnpdf.org'
|
43
|
+
spec.description = 'PDF::Core is used by Prawn to render PDF documents'
|
29
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregory Brown
|
@@ -11,9 +11,44 @@ authors:
|
|
11
11
|
- James Healy
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
|
-
cert_chain:
|
15
|
-
|
14
|
+
cert_chain:
|
15
|
+
- |
|
16
|
+
-----BEGIN CERTIFICATE-----
|
17
|
+
MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhhbGV4
|
18
|
+
L0RDPXBvaW50bGVzcy9EQz1vbmUwHhcNMjAwODAxMTQxMjE1WhcNMjEwODAxMTQx
|
19
|
+
MjE1WjAjMSEwHwYDVQQDDBhhbGV4L0RDPXBvaW50bGVzcy9EQz1vbmUwggEiMA0G
|
20
|
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPOVLPGEK+eaP6zJfifrpWvPTg4qo3
|
21
|
+
XNJJPom80SwqX2hVCVsRDK4RYgKUQqKRQzHhlx14wZHwWLETBVbNDGX3uqyCnTWU
|
22
|
+
JUKh3ydiZShXpNHoV/NW7hhEYvNsDcBAjYTmbvXOhuYCo0Tz/0N2Oiun/0wIICtP
|
23
|
+
vytY9TY0/lklWjAbsqJjNOu3o8IYkJBAN/rU96E/6WhFwjnxLcTnV9RfFRXdjG5j
|
24
|
+
CughoB2xSwKX8gwbQ8fsnaZRmdyDGYNpz6sGF0zycfiLkTttbLA2nYATCALy98CH
|
25
|
+
nsyZNsTjb4WINCuY2yEDjwesw9f/ROkNC68EgQ5M+aMjp+D0WcYGfzojAgMBAAGj
|
26
|
+
dzB1MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRPgIwSVbeonua/
|
27
|
+
Ny/8576oxdUbrjAdBgNVHREEFjAUgRJhbGV4QHBvaW50bGVzcy5vbmUwHQYDVR0S
|
28
|
+
BBYwFIESYWxleEBwb2ludGxlc3Mub25lMA0GCSqGSIb3DQEBCwUAA4IBAQAzhGxF
|
29
|
+
M0bXJ9GWD9vdVHOyzBQBJcJAvnsz2yV3+r4eJBsQynFIscsea8lHFL/d1eHYP0mN
|
30
|
+
k0fhK+WDcPlrj0Sn/Ezhk2qogTIekwDOK6pZkGRQzD45leJqQMnYd+/TXK3ri485
|
31
|
+
Gi4oJ6NitnnUT59SQnjD5JcENfc0EcRzclmVRFE8W4O+ORgo4Dypq1rwYUzxeyUk
|
32
|
+
mP5jNBWtH+hGUph28GQb0Hph6YnQb8zEFB88Xq80PK1SzkIPHpbTBk9mwPf6ypeX
|
33
|
+
Un1TJEahAlgENVml6CyDXSwk0H8N1V3gm1mb9Fe1T2Z/kAzvjo0qTDEtMVLU7Bxh
|
34
|
+
uqMUrdETjTnRYCVq
|
35
|
+
-----END CERTIFICATE-----
|
36
|
+
date: 2020-10-24 00:00:00.000000000 Z
|
16
37
|
dependencies:
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: pdf-inspector
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - "~>"
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.1.0
|
45
|
+
type: :development
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - "~>"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 1.1.0
|
17
52
|
- !ruby/object:Gem::Dependency
|
18
53
|
name: pdf-reader
|
19
54
|
requirement: !ruby/object:Gem::Requirement
|
@@ -29,7 +64,7 @@ dependencies:
|
|
29
64
|
- !ruby/object:Gem::Version
|
30
65
|
version: '1.2'
|
31
66
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
67
|
+
name: rake
|
33
68
|
requirement: !ruby/object:Gem::Requirement
|
34
69
|
requirements:
|
35
70
|
- - ">="
|
@@ -43,35 +78,63 @@ dependencies:
|
|
43
78
|
- !ruby/object:Gem::Version
|
44
79
|
version: '0'
|
45
80
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
81
|
+
name: rspec
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rubocop
|
47
96
|
requirement: !ruby/object:Gem::Requirement
|
48
97
|
requirements:
|
49
98
|
- - "~>"
|
50
99
|
- !ruby/object:Gem::Version
|
51
|
-
version:
|
100
|
+
version: '0.93'
|
52
101
|
type: :development
|
53
102
|
prerelease: false
|
54
103
|
version_requirements: !ruby/object:Gem::Requirement
|
55
104
|
requirements:
|
56
105
|
- - "~>"
|
57
106
|
- !ruby/object:Gem::Version
|
58
|
-
version:
|
107
|
+
version: '0.93'
|
59
108
|
- !ruby/object:Gem::Dependency
|
60
|
-
name:
|
109
|
+
name: rubocop-performance
|
61
110
|
requirement: !ruby/object:Gem::Requirement
|
62
111
|
requirements:
|
63
|
-
- - "
|
112
|
+
- - "~>"
|
64
113
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
114
|
+
version: '1.8'
|
66
115
|
type: :development
|
67
116
|
prerelease: false
|
68
117
|
version_requirements: !ruby/object:Gem::Requirement
|
69
118
|
requirements:
|
70
|
-
- - "
|
119
|
+
- - "~>"
|
71
120
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
121
|
+
version: '1.8'
|
73
122
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
123
|
+
name: rubocop-rspec
|
124
|
+
requirement: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - "~>"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '1.44'
|
129
|
+
type: :development
|
130
|
+
prerelease: false
|
131
|
+
version_requirements: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '1.44'
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
name: simplecov
|
75
138
|
requirement: !ruby/object:Gem::Requirement
|
76
139
|
requirements:
|
77
140
|
- - ">="
|
@@ -121,20 +184,13 @@ files:
|
|
121
184
|
- lib/pdf/core/renderer.rb
|
122
185
|
- lib/pdf/core/stream.rb
|
123
186
|
- lib/pdf/core/text.rb
|
187
|
+
- lib/pdf/core/utils.rb
|
124
188
|
- pdf-core.gemspec
|
125
|
-
|
126
|
-
- spec/filters_spec.rb
|
127
|
-
- spec/name_tree_spec.rb
|
128
|
-
- spec/object_store_spec.rb
|
129
|
-
- spec/pdf_object_spec.rb
|
130
|
-
- spec/reference_spec.rb
|
131
|
-
- spec/spec_helper.rb
|
132
|
-
- spec/stream_spec.rb
|
133
|
-
homepage: http://prawn.majesticseacreature.com
|
189
|
+
homepage: http://prawnpdf.org
|
134
190
|
licenses:
|
135
|
-
-
|
136
|
-
- GPL-2
|
137
|
-
- GPL-3
|
191
|
+
- PRAWN
|
192
|
+
- GPL-2.0
|
193
|
+
- GPL-3.0
|
138
194
|
metadata: {}
|
139
195
|
post_install_message:
|
140
196
|
rdoc_options: []
|
@@ -144,17 +200,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
200
|
requirements:
|
145
201
|
- - ">="
|
146
202
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
203
|
+
version: '2.5'
|
148
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
205
|
requirements:
|
150
206
|
- - ">="
|
151
207
|
- !ruby/object:Gem::Version
|
152
208
|
version: 1.3.6
|
153
209
|
requirements: []
|
154
|
-
|
155
|
-
rubygems_version: 2.2.2
|
210
|
+
rubygems_version: 3.0.3
|
156
211
|
signing_key:
|
157
212
|
specification_version: 4
|
158
213
|
summary: PDF::Core is used by Prawn to render PDF documents
|
159
214
|
test_files: []
|
160
|
-
has_rdoc:
|