pdf-core 0.8.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/Rakefile +15 -3
- data/lib/pdf/core/byte_string.rb +0 -1
- data/lib/pdf/core/document_state.rb +7 -7
- data/lib/pdf/core/filter_list.rb +15 -5
- data/lib/pdf/core/graphics_state.rb +7 -8
- data/lib/pdf/core/literal_string.rb +0 -1
- data/lib/pdf/core/name_tree.rb +3 -4
- data/lib/pdf/core/outline_item.rb +1 -2
- data/lib/pdf/core/page.rb +12 -11
- data/lib/pdf/core/pdf_object.rb +19 -15
- data/lib/pdf/core/reference.rb +8 -1
- data/lib/pdf/core/renderer.rb +2 -4
- data/lib/pdf/core/stream.rb +8 -2
- data/lib/pdf/core/text.rb +16 -7
- data/lib/pdf/core/utils.rb +2 -1
- data/pdf-core.gemspec +11 -11
- metadata +41 -43
- metadata.gz.sig +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 429f3bfae75301dabdb339edccbdd816026f605dc84d1902f07d6494277d6360
|
4
|
+
data.tar.gz: 13fa187ef7307bc6de531a06d9d97272ff2ba0c2a9e21744b52efe1c387094d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76f74e81e59e382b4ab8c0bfe0cd58eb6b8624afd4b6b92fee6ed56da432205ad682cd3bd99b364d29be38747727a198f796975cb7718c7f62ad682f33f4953f
|
7
|
+
data.tar.gz: b0b08cdd020ba23a4b3aa135d795eb35089cf0c6fbe34dd5457a3302f78969062347952b2f0f532b9066578a81537059afed889edd7d102817f26439b7f0848e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Rakefile
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'bundler'
|
4
|
-
Bundler.setup
|
5
|
-
|
6
3
|
require 'rake'
|
7
4
|
require 'rspec/core/rake_task'
|
8
5
|
|
@@ -15,3 +12,18 @@ end
|
|
15
12
|
|
16
13
|
require 'rubocop/rake_task'
|
17
14
|
RuboCop::RakeTask.new
|
15
|
+
|
16
|
+
require 'rubygems/package_task'
|
17
|
+
spec = Gem::Specification.load 'pdf-core.gemspec'
|
18
|
+
Gem::PackageTask.new(spec) do |pkg|
|
19
|
+
pkg.need_zip = true
|
20
|
+
pkg.need_tar = true
|
21
|
+
end
|
22
|
+
|
23
|
+
task :checksum do
|
24
|
+
require 'digest/sha2'
|
25
|
+
built_gem_path = "pkg/pdf-core-#{Prawn::VERSION}.gem"
|
26
|
+
checksum = Digest::SHA512.new.hexdigest(File.read(built_gem_path))
|
27
|
+
checksum_path = "checksums/#{built_gem_path}.sha512"
|
28
|
+
File.write(checksum_path, checksum)
|
29
|
+
end
|
data/lib/pdf/core/byte_string.rb
CHANGED
@@ -28,18 +28,18 @@ module PDF
|
|
28
28
|
@on_page_create_callback = nil
|
29
29
|
end
|
30
30
|
|
31
|
-
attr_accessor :store, :version, :pages, :page, :trailer, :compress,
|
32
|
-
|
33
|
-
:before_render_callbacks, :on_page_create_callback
|
31
|
+
attr_accessor :store, :version, :pages, :page, :trailer, :compress, :encrypt, :encryption_key, :skip_encoding
|
32
|
+
attr_accessor :before_render_callbacks, :on_page_create_callback
|
34
33
|
|
35
34
|
def populate_pages_from_store(document)
|
36
35
|
return 0 if @store.page_count <= 0 || !@pages.empty?
|
37
36
|
|
38
37
|
count = (1..@store.page_count)
|
39
|
-
@pages =
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
@pages =
|
39
|
+
count.map do |index|
|
40
|
+
orig_dict_id = @store.object_id_for_page(index)
|
41
|
+
PDF::Core::Page.new(document, object_id: orig_dict_id)
|
42
|
+
end
|
43
43
|
end
|
44
44
|
|
45
45
|
def normalize_metadata(options)
|
data/lib/pdf/core/filter_list.rb
CHANGED
@@ -3,6 +3,18 @@
|
|
3
3
|
module PDF
|
4
4
|
module Core
|
5
5
|
class FilterList
|
6
|
+
class NotFilter < StandardError
|
7
|
+
DEFAULT_MESSAGE = 'Can not interpret input as a filter'
|
8
|
+
MESSAGE_WITH_FILTER = 'Can not interpret input as a filter: %<filter>s'
|
9
|
+
|
10
|
+
def initialize(message = DEFAULT_MESSAGE, filter: nil)
|
11
|
+
if filter
|
12
|
+
super format(MESSAGE_WITH_FILTER, filter: filter)
|
13
|
+
else
|
14
|
+
super(message)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
6
18
|
def initialize
|
7
19
|
@list = []
|
8
20
|
end
|
@@ -16,7 +28,7 @@ module PDF
|
|
16
28
|
@list << [name, params]
|
17
29
|
end
|
18
30
|
else
|
19
|
-
raise
|
31
|
+
raise NotFilter.new(filter: filter)
|
20
32
|
end
|
21
33
|
|
22
34
|
self
|
@@ -43,10 +55,8 @@ module PDF
|
|
43
55
|
@list.inspect
|
44
56
|
end
|
45
57
|
|
46
|
-
def each
|
47
|
-
@list.each
|
48
|
-
yield(filter)
|
49
|
-
end
|
58
|
+
def each(&block)
|
59
|
+
@list.each(&block)
|
50
60
|
end
|
51
61
|
end
|
52
62
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
#
|
@@ -45,8 +44,7 @@ module PDF
|
|
45
44
|
|
46
45
|
# NOTE: This class may be a good candidate for a copy-on-write hash.
|
47
46
|
class GraphicState
|
48
|
-
attr_accessor :color_space, :dash, :cap_style, :join_style, :line_width,
|
49
|
-
:fill_color, :stroke_color
|
47
|
+
attr_accessor :color_space, :dash, :cap_style, :join_style, :line_width, :fill_color, :stroke_color
|
50
48
|
|
51
49
|
def initialize(previous_state = nil)
|
52
50
|
if previous_state
|
@@ -65,11 +63,12 @@ module PDF
|
|
65
63
|
def dash_setting
|
66
64
|
return '[] 0 d' unless @dash[:dash]
|
67
65
|
|
68
|
-
array =
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
66
|
+
array =
|
67
|
+
if @dash[:dash].is_a?(Array)
|
68
|
+
@dash[:dash]
|
69
|
+
else
|
70
|
+
[@dash[:dash], @dash[:space]]
|
71
|
+
end
|
73
72
|
|
74
73
|
"[#{PDF::Core.real_params(array)}] "\
|
75
74
|
"#{PDF::Core.real(@dash[:phase])} d"
|
data/lib/pdf/core/name_tree.rb
CHANGED
@@ -31,7 +31,7 @@ module PDF
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def size
|
34
|
-
leaf? ? children.size : children.
|
34
|
+
leaf? ? children.size : children.sum(&:size)
|
35
35
|
end
|
36
36
|
|
37
37
|
def leaf?
|
@@ -78,7 +78,7 @@ module PDF
|
|
78
78
|
children.insert(insertion_point(value), value)
|
79
79
|
split! if children.length > limit
|
80
80
|
else
|
81
|
-
fit = children.
|
81
|
+
fit = children.find { |child| child >= value }
|
82
82
|
fit ||= children.last
|
83
83
|
fit << value
|
84
84
|
end
|
@@ -107,8 +107,7 @@ module PDF
|
|
107
107
|
def deep_copy
|
108
108
|
node = dup
|
109
109
|
node.instance_variable_set('@children', Utils.deep_clone(children))
|
110
|
-
node.instance_variable_set('@ref',
|
111
|
-
node.ref ? node.ref.deep_copy : nil)
|
110
|
+
node.instance_variable_set('@ref', node.ref ? node.ref.deep_copy : nil)
|
112
111
|
node
|
113
112
|
end
|
114
113
|
|
@@ -3,8 +3,7 @@
|
|
3
3
|
module PDF
|
4
4
|
module Core
|
5
5
|
class OutlineItem #:nodoc:
|
6
|
-
attr_accessor :count, :first, :last, :next, :prev, :parent, :title, :dest,
|
7
|
-
:closed
|
6
|
+
attr_accessor :count, :first, :last, :next, :prev, :parent, :title, :dest, :closed
|
8
7
|
|
9
8
|
def initialize(title, parent, options)
|
10
9
|
@closed = options[:closed]
|
data/lib/pdf/core/page.rb
CHANGED
@@ -12,8 +12,7 @@ require_relative 'graphics_state'
|
|
12
12
|
module PDF
|
13
13
|
module Core
|
14
14
|
class Page #:nodoc:
|
15
|
-
attr_accessor :art_indents, :bleeds, :crops, :document, :margins, :stack,
|
16
|
-
:trims
|
15
|
+
attr_accessor :art_indents, :bleeds, :crops, :document, :margins, :stack, :trims
|
17
16
|
attr_writer :content, :dictionary
|
18
17
|
|
19
18
|
ZERO_INDENTS = {
|
@@ -25,20 +24,22 @@ module PDF
|
|
25
24
|
|
26
25
|
def initialize(document, options = {})
|
27
26
|
@document = document
|
28
|
-
@margins
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
@margins = options[:margins] || {
|
28
|
+
left: 36,
|
29
|
+
right: 36,
|
30
|
+
top: 36,
|
31
|
+
bottom: 36
|
32
|
+
}
|
32
33
|
@crops = options[:crops] || ZERO_INDENTS
|
33
34
|
@bleeds = options[:bleeds] || ZERO_INDENTS
|
34
35
|
@trims = options[:trims] || ZERO_INDENTS
|
35
36
|
@art_indents = options[:art_indents] || ZERO_INDENTS
|
36
37
|
@stack = GraphicStateStack.new(options[:graphic_state])
|
37
|
-
@size
|
38
|
-
@layout
|
38
|
+
@size = options[:size] || 'LETTER'
|
39
|
+
@layout = options[:layout] || :portrait
|
39
40
|
|
40
|
-
@stamp_stream
|
41
|
-
@stamp_dictionary
|
41
|
+
@stamp_stream = nil
|
42
|
+
@stamp_dictionary = nil
|
42
43
|
|
43
44
|
@content = document.ref({})
|
44
45
|
content << 'q' << "\n"
|
@@ -85,7 +86,7 @@ module PDF
|
|
85
86
|
graphic_stack_size = stack.stack.size
|
86
87
|
|
87
88
|
document.save_graphics_state
|
88
|
-
document.
|
89
|
+
document.__send__(:freeze_stamp_graphics)
|
89
90
|
yield if block_given?
|
90
91
|
|
91
92
|
until graphic_stack_size == stack.stack.size
|
data/lib/pdf/core/pdf_object.rb
CHANGED
@@ -13,7 +13,7 @@ module PDF
|
|
13
13
|
module_function
|
14
14
|
|
15
15
|
def real(num)
|
16
|
-
num.
|
16
|
+
format('%<number>.5f', number: num).sub(/((?<!\.)0)+\z/, '')
|
17
17
|
end
|
18
18
|
|
19
19
|
def real_params(array)
|
@@ -29,9 +29,11 @@ module PDF
|
|
29
29
|
# with only 0-9 and a-f characters. That result is valid ASCII so tag
|
30
30
|
# it as such to account for behaviour of different ruby VMs
|
31
31
|
def string_to_hex(str)
|
32
|
-
str.
|
32
|
+
str.unpack1('H*').force_encoding(::Encoding::US_ASCII)
|
33
33
|
end
|
34
34
|
|
35
|
+
ESCAPED_NAME_CHARACTERS = (1..32).to_a + [35, 40, 41, 47, 60, 62] + (127..255).to_a
|
36
|
+
|
35
37
|
# Serializes Ruby objects to their PDF equivalents. Most primitive objects
|
36
38
|
# will work as expected, but please note that Name objects are represented
|
37
39
|
# by Ruby Symbol objects and Dictionary objects are represented by Ruby
|
@@ -61,27 +63,29 @@ module PDF
|
|
61
63
|
# Truncate trailing fraction zeroes
|
62
64
|
num_string.sub(/(\d*)((\.0*$)|(\.0*[1-9]*)0*$)/, '\1\4')
|
63
65
|
when Array
|
64
|
-
|
66
|
+
"[#{obj.map { |e| pdf_object(e, in_content_stream) }.join(' ')}]"
|
65
67
|
when PDF::Core::LiteralString
|
66
|
-
obj = obj.gsub(/[\\\n\r\t\b\f
|
68
|
+
obj = obj.gsub(/[\\\n\r\t\b\f()]/) { |m| "\\#{m}" }
|
67
69
|
"(#{obj})"
|
68
70
|
when Time
|
69
|
-
obj = obj.strftime('D:%Y%m%d%H%M%S%z').chop.chop
|
70
|
-
obj = obj.gsub(/[\\\n\r\t\b\f
|
71
|
+
obj = "#{obj.strftime('D:%Y%m%d%H%M%S%z').chop.chop}'00'"
|
72
|
+
obj = obj.gsub(/[\\\n\r\t\b\f()]/) { |m| "\\#{m}" }
|
71
73
|
"(#{obj})"
|
72
74
|
when PDF::Core::ByteString
|
73
|
-
"<#{obj.
|
75
|
+
"<#{obj.unpack1('H*')}>"
|
74
76
|
when String
|
75
77
|
obj = utf8_to_utf16(obj) unless in_content_stream
|
76
78
|
"<#{string_to_hex(obj)}>"
|
77
79
|
when Symbol
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
80
|
+
name_string =
|
81
|
+
obj.to_s.unpack('C*').map do |n|
|
82
|
+
if ESCAPED_NAME_CHARACTERS.include?(n)
|
83
|
+
"##{n.to_s(16).upcase}"
|
84
|
+
else
|
85
|
+
[n].pack('C*')
|
86
|
+
end
|
87
|
+
end.join
|
88
|
+
"/#{name_string}"
|
85
89
|
when ::Hash
|
86
90
|
output = +'<< '
|
87
91
|
obj.each do |k, v|
|
@@ -98,7 +102,7 @@ module PDF
|
|
98
102
|
when PDF::Core::NameTree::Node
|
99
103
|
pdf_object(obj.to_hash)
|
100
104
|
when PDF::Core::NameTree::Value
|
101
|
-
pdf_object(obj.name)
|
105
|
+
"#{pdf_object(obj.name)} #{pdf_object(obj.value)}"
|
102
106
|
when PDF::Core::OutlineRoot, PDF::Core::OutlineItem
|
103
107
|
pdf_object(obj.to_hash)
|
104
108
|
else
|
data/lib/pdf/core/reference.rb
CHANGED
@@ -13,6 +13,12 @@ module PDF
|
|
13
13
|
class Reference #:nodoc:
|
14
14
|
attr_accessor :gen, :data, :offset, :stream, :identifier
|
15
15
|
|
16
|
+
class CannotAttachStream < StandardError
|
17
|
+
def initialize(message = 'Cannot attach stream to a non-dictionary object')
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
16
22
|
def initialize(id, data)
|
17
23
|
@identifier = id
|
18
24
|
@gen = 0
|
@@ -34,8 +40,9 @@ module PDF
|
|
34
40
|
|
35
41
|
def <<(io)
|
36
42
|
unless @data.is_a?(::Hash)
|
37
|
-
raise
|
43
|
+
raise CannotAttachStream
|
38
44
|
end
|
45
|
+
|
39
46
|
(@stream ||= Stream.new) << io
|
40
47
|
end
|
41
48
|
|
data/lib/pdf/core/renderer.rb
CHANGED
@@ -170,9 +170,7 @@ module PDF
|
|
170
170
|
if output.instance_of?(StringIO)
|
171
171
|
str = output.string
|
172
172
|
str.force_encoding(::Encoding::ASCII_8BIT)
|
173
|
-
|
174
|
-
else
|
175
|
-
return nil
|
173
|
+
str
|
176
174
|
end
|
177
175
|
end
|
178
176
|
|
@@ -210,7 +208,7 @@ module PDF
|
|
210
208
|
output << "0 #{state.store.size + 1}\n"
|
211
209
|
output << "0000000000 65535 f \n"
|
212
210
|
state.store.each do |ref|
|
213
|
-
output.printf('
|
211
|
+
output.printf('%<offset>010d', offset: ref.offset)
|
214
212
|
output << " 00000 n \n"
|
215
213
|
end
|
216
214
|
end
|
data/lib/pdf/core/stream.rb
CHANGED
@@ -90,8 +90,14 @@ module PDF
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def inspect
|
93
|
-
|
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
@@ -17,11 +17,18 @@ module PDF
|
|
17
17
|
stroke: 1,
|
18
18
|
fill_stroke: 2,
|
19
19
|
invisible: 3,
|
20
|
-
fill_clip: 4,
|
20
|
+
fill_clip: 4,
|
21
|
+
stroke_clip: 5,
|
21
22
|
fill_stroke_clip: 6,
|
22
23
|
clip: 7
|
23
24
|
}.freeze
|
24
25
|
|
26
|
+
class BadFontFamily < StandardError
|
27
|
+
def initialize(message = 'Bad font family')
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
25
32
|
attr_reader :skip_encoding
|
26
33
|
|
27
34
|
# Low level call to set the current font style and extract text options
|
@@ -29,7 +36,8 @@ module PDF
|
|
29
36
|
#
|
30
37
|
def process_text_options(options)
|
31
38
|
if options[:style]
|
32
|
-
raise
|
39
|
+
raise BadFontFamily unless font.family
|
40
|
+
|
33
41
|
font(font.family, style: options[:style])
|
34
42
|
end
|
35
43
|
|
@@ -47,6 +55,7 @@ module PDF
|
|
47
55
|
#
|
48
56
|
def default_kerning?
|
49
57
|
return true unless defined?(@default_kerning)
|
58
|
+
|
50
59
|
@default_kerning
|
51
60
|
end
|
52
61
|
|
@@ -182,6 +191,7 @@ module PDF
|
|
182
191
|
if mode.nil?
|
183
192
|
return defined?(@text_rendering_mode) && @text_rendering_mode || :fill
|
184
193
|
end
|
194
|
+
|
185
195
|
unless MODES.key?(mode)
|
186
196
|
raise ArgumentError,
|
187
197
|
"mode must be between one of #{MODES.keys.join(', ')} (#{mode})"
|
@@ -211,6 +221,7 @@ module PDF
|
|
211
221
|
if amount.nil?
|
212
222
|
return defined?(@character_spacing) && @character_spacing || 0
|
213
223
|
end
|
224
|
+
|
214
225
|
original_character_spacing = character_spacing
|
215
226
|
if original_character_spacing == amount
|
216
227
|
yield
|
@@ -229,6 +240,7 @@ module PDF
|
|
229
240
|
#
|
230
241
|
def word_spacing(amount = nil)
|
231
242
|
return defined?(@word_spacing) && @word_spacing || 0 if amount.nil?
|
243
|
+
|
232
244
|
original_word_spacing = word_spacing
|
233
245
|
if original_word_spacing == amount
|
234
246
|
yield
|
@@ -246,8 +258,7 @@ module PDF
|
|
246
258
|
# percentage of the normal width.
|
247
259
|
def horizontal_text_scaling(amount = nil)
|
248
260
|
if amount.nil?
|
249
|
-
return defined?(@horizontal_text_scaling) &&
|
250
|
-
@horizontal_text_scaling || 100
|
261
|
+
return defined?(@horizontal_text_scaling) && @horizontal_text_scaling || 100
|
251
262
|
end
|
252
263
|
|
253
264
|
original_horizontal_text_scaling = horizontal_text_scaling
|
@@ -262,7 +273,6 @@ module PDF
|
|
262
273
|
end
|
263
274
|
end
|
264
275
|
|
265
|
-
# rubocop: disable Naming/UncommunicativeMethodParamName
|
266
276
|
def add_text_content(text, x, y, options)
|
267
277
|
chunks = font.encode_text(text, options)
|
268
278
|
|
@@ -291,12 +301,11 @@ module PDF
|
|
291
301
|
].join(' ')
|
292
302
|
|
293
303
|
operation = options[:kerning] && string.is_a?(Array) ? 'TJ' : 'Tj'
|
294
|
-
add_content PDF::Core.pdf_object(string, true)
|
304
|
+
add_content "#{PDF::Core.pdf_object(string, true)} #{operation}"
|
295
305
|
end
|
296
306
|
|
297
307
|
add_content "ET\n"
|
298
308
|
end
|
299
|
-
# rubocop: enable Naming/UncommunicativeMethodParamName
|
300
309
|
end
|
301
310
|
end
|
302
311
|
end
|
data/lib/pdf/core/utils.rb
CHANGED
data/pdf-core.gemspec
CHANGED
@@ -2,15 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'pdf-core'
|
5
|
-
spec.version = '0.
|
5
|
+
spec.version = '0.9.0'
|
6
6
|
spec.platform = Gem::Platform::RUBY
|
7
7
|
spec.summary = 'PDF::Core is used by Prawn to render PDF documents'
|
8
|
-
spec.files =
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
spec.files =
|
9
|
+
Dir.glob('lib/**/**/*') +
|
10
|
+
%w[COPYING GPLv2 GPLv3 LICENSE] +
|
11
|
+
%w[Gemfile Rakefile] +
|
12
|
+
['pdf-core.gemspec']
|
12
13
|
spec.require_path = 'lib'
|
13
|
-
spec.required_ruby_version = '>= 2.
|
14
|
+
spec.required_ruby_version = '>= 2.5'
|
14
15
|
spec.required_rubygems_version = '>= 1.3.6'
|
15
16
|
|
16
17
|
spec.cert_chain = ['certs/pointlessone.pem']
|
@@ -29,16 +30,15 @@ Gem::Specification.new do |spec|
|
|
29
30
|
'gregory.t.brown@gmail.com', 'brad@bradediger.com', 'dnelson@bluejade.com',
|
30
31
|
'greenberg@entryway.net', 'jimmy@deefa.com'
|
31
32
|
]
|
32
|
-
spec.rubyforge_project = 'prawn'
|
33
33
|
spec.licenses = %w[PRAWN GPL-2.0 GPL-3.0]
|
34
|
-
spec.add_development_dependency('bundler')
|
35
34
|
spec.add_development_dependency('pdf-inspector', '~> 1.1.0')
|
36
35
|
spec.add_development_dependency('pdf-reader', '~>1.2')
|
37
36
|
spec.add_development_dependency('rake')
|
38
37
|
spec.add_development_dependency('rspec')
|
39
|
-
spec.add_development_dependency('rubocop', '~> 0.
|
40
|
-
spec.add_development_dependency('rubocop-
|
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
41
|
spec.add_development_dependency('simplecov')
|
42
|
-
spec.homepage = 'http://
|
42
|
+
spec.homepage = 'http://prawnpdf.org'
|
43
43
|
spec.description = 'PDF::Core is used by Prawn to render PDF documents'
|
44
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
|
@@ -14,42 +14,27 @@ bindir: bin
|
|
14
14
|
cert_chain:
|
15
15
|
- |
|
16
16
|
-----BEGIN CERTIFICATE-----
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
otbeukAemPO8HXWM/JCgkR6BaPE=
|
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
|
36
35
|
-----END CERTIFICATE-----
|
37
|
-
date:
|
36
|
+
date: 2020-10-24 00:00:00.000000000 Z
|
38
37
|
dependencies:
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: bundler
|
41
|
-
requirement: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
type: :development
|
47
|
-
prerelease: false
|
48
|
-
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
53
38
|
- !ruby/object:Gem::Dependency
|
54
39
|
name: pdf-inspector
|
55
40
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,28 +97,42 @@ dependencies:
|
|
112
97
|
requirements:
|
113
98
|
- - "~>"
|
114
99
|
- !ruby/object:Gem::Version
|
115
|
-
version: '0.
|
100
|
+
version: '0.93'
|
101
|
+
type: :development
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0.93'
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: rubocop-performance
|
110
|
+
requirement: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '1.8'
|
116
115
|
type: :development
|
117
116
|
prerelease: false
|
118
117
|
version_requirements: !ruby/object:Gem::Requirement
|
119
118
|
requirements:
|
120
119
|
- - "~>"
|
121
120
|
- !ruby/object:Gem::Version
|
122
|
-
version: '
|
121
|
+
version: '1.8'
|
123
122
|
- !ruby/object:Gem::Dependency
|
124
123
|
name: rubocop-rspec
|
125
124
|
requirement: !ruby/object:Gem::Requirement
|
126
125
|
requirements:
|
127
126
|
- - "~>"
|
128
127
|
- !ruby/object:Gem::Version
|
129
|
-
version: '1.
|
128
|
+
version: '1.44'
|
130
129
|
type: :development
|
131
130
|
prerelease: false
|
132
131
|
version_requirements: !ruby/object:Gem::Requirement
|
133
132
|
requirements:
|
134
133
|
- - "~>"
|
135
134
|
- !ruby/object:Gem::Version
|
136
|
-
version: '1.
|
135
|
+
version: '1.44'
|
137
136
|
- !ruby/object:Gem::Dependency
|
138
137
|
name: simplecov
|
139
138
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,7 +186,7 @@ files:
|
|
187
186
|
- lib/pdf/core/text.rb
|
188
187
|
- lib/pdf/core/utils.rb
|
189
188
|
- pdf-core.gemspec
|
190
|
-
homepage: http://
|
189
|
+
homepage: http://prawnpdf.org
|
191
190
|
licenses:
|
192
191
|
- PRAWN
|
193
192
|
- GPL-2.0
|
@@ -201,15 +200,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
200
|
requirements:
|
202
201
|
- - ">="
|
203
202
|
- !ruby/object:Gem::Version
|
204
|
-
version: '2.
|
203
|
+
version: '2.5'
|
205
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
205
|
requirements:
|
207
206
|
- - ">="
|
208
207
|
- !ruby/object:Gem::Version
|
209
208
|
version: 1.3.6
|
210
209
|
requirements: []
|
211
|
-
|
212
|
-
rubygems_version: 2.6.14
|
210
|
+
rubygems_version: 3.0.3
|
213
211
|
signing_key:
|
214
212
|
specification_version: 4
|
215
213
|
summary: PDF::Core is used by Prawn to render PDF documents
|
metadata.gz.sig
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
*gT?���ԜIIJ�
|
2
|
+
i=��u��!s�8=�{`���1�눖)�oY�1���D�"�4��2r��-Ҏv�7o{\��n�<���b�r���cax�E2TuZ�?���ׯ��p�r�fČZ��0�#_��-`��W��ח��~�Q�u�B���h���]^-���X�-��\�0ՑjY�&�g�G(����:ϖ�Ŝ���姕#���],4�'yE����X�Bz
|