pdf-core 0.8.1 → 0.9.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 +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
|