pdfrb 0.8.4 → 0.8.6
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
- data/lib/pdfrb/annotation/base.rb +2 -2
- data/lib/pdfrb/appearance/generator.rb +1 -1
- data/lib/pdfrb/cli/images.rb +1 -1
- data/lib/pdfrb/cli.rb +3 -3
- data/lib/pdfrb/color/default_profile.rb +1 -1
- data/lib/pdfrb/compare/comparator.rb +2 -4
- data/lib/pdfrb/conformance/ltv.rb +1 -1
- data/lib/pdfrb/conformance/pades.rb +4 -4
- data/lib/pdfrb/conformance/pdf_2_af.rb +2 -2
- data/lib/pdfrb/conformance/pdf_a.rb +10 -20
- data/lib/pdfrb/conformance/pdf_x.rb +6 -16
- data/lib/pdfrb/conformance/tagged_pdf.rb +1 -1
- data/lib/pdfrb/content/canvas.rb +25 -33
- data/lib/pdfrb/content/hidden_text_detector.rb +2 -3
- data/lib/pdfrb/content/shading/base.rb +1 -1
- data/lib/pdfrb/content/tiling_pattern.rb +1 -1
- data/lib/pdfrb/digital_signature/signing.rb +2 -2
- data/lib/pdfrb/document/annotations.rb +10 -10
- data/lib/pdfrb/document/associated_files.rb +2 -2
- data/lib/pdfrb/document/colors.rb +1 -1
- data/lib/pdfrb/document/destinations.rb +4 -4
- data/lib/pdfrb/document/encryption.rb +1 -1
- data/lib/pdfrb/document/files.rb +5 -5
- data/lib/pdfrb/document/fonts/subsetting.rb +87 -0
- data/lib/pdfrb/document/fonts.rb +10 -80
- data/lib/pdfrb/document/form.rb +9 -9
- data/lib/pdfrb/document/form_xobject.rb +1 -1
- data/lib/pdfrb/document/graphics_state.rb +1 -1
- data/lib/pdfrb/document/images.rb +1 -6
- data/lib/pdfrb/document/info.rb +1 -1
- data/lib/pdfrb/document/layers.rb +1 -1
- data/lib/pdfrb/document/metadata.rb +1 -1
- data/lib/pdfrb/document/outline.rb +8 -8
- data/lib/pdfrb/document/output_intents.rb +3 -3
- data/lib/pdfrb/document/pages.rb +19 -8
- data/lib/pdfrb/document/pdf_a.rb +1 -1
- data/lib/pdfrb/document/portfolio.rb +3 -3
- data/lib/pdfrb/document/shadings.rb +2 -9
- data/lib/pdfrb/document/stamps.rb +2 -2
- data/lib/pdfrb/document/structure.rb +9 -9
- data/lib/pdfrb/document.rb +19 -2
- data/lib/pdfrb/encryption/security_handler.rb +1 -2
- data/lib/pdfrb/font/cff/subsetter.rb +0 -0
- data/lib/pdfrb/font/sfnt.rb +73 -0
- data/lib/pdfrb/font/true_type/subsetter.rb +1 -57
- data/lib/pdfrb/font/true_type/wrapper.rb +3 -3
- data/lib/pdfrb/font.rb +1 -0
- data/lib/pdfrb/font_loader/true_type.rb +2 -2
- data/lib/pdfrb/font_loader/type3.rb +1 -1
- data/lib/pdfrb/importer.rb +3 -3
- data/lib/pdfrb/linearization/writer.rb +1 -1
- data/lib/pdfrb/model/object.rb +7 -0
- data/lib/pdfrb/model/type/action_hide.rb +1 -1
- data/lib/pdfrb/model/type/action_sound.rb +2 -2
- data/lib/pdfrb/model/type/add_action_catalog.rb +1 -1
- data/lib/pdfrb/model/type/add_action_form_field.rb +1 -1
- data/lib/pdfrb/model/type/add_action_page_object.rb +1 -1
- data/lib/pdfrb/model/type/add_action_screen_annotation.rb +1 -1
- data/lib/pdfrb/model/type/add_action_widget_annotation.rb +1 -1
- data/lib/pdfrb/model/type/alternate_image.rb +2 -2
- data/lib/pdfrb/model/type/bead.rb +4 -4
- data/lib/pdfrb/model/type/catalog.rb +1 -1
- data/lib/pdfrb/model/type/d_part.rb +4 -4
- data/lib/pdfrb/model/type/document_security_store.rb +1 -1
- data/lib/pdfrb/model/type/dss.rb +1 -1
- data/lib/pdfrb/model/type/function_stitching.rb +1 -1
- data/lib/pdfrb/model/type/generic_appearance.rb +1 -1
- data/lib/pdfrb/model/type/opt_content_ext.rb +2 -2
- data/lib/pdfrb/model/type/optional_content_membership.rb +2 -2
- data/lib/pdfrb/model/type/page.rb +5 -7
- data/lib/pdfrb/model/type/page_tree_node.rb +2 -2
- data/lib/pdfrb/model/type/rich_media_configuration.rb +1 -1
- data/lib/pdfrb/model/type/struct_elem.rb +2 -2
- data/lib/pdfrb/model/type/struct_tree_root.rb +2 -2
- data/lib/pdfrb/model/type/thread.rb +3 -3
- data/lib/pdfrb/model/type/three_d_stream.rb +1 -1
- data/lib/pdfrb/model/type/viewport.rb +1 -1
- data/lib/pdfrb/model/type/vri.rb +1 -1
- data/lib/pdfrb/model/type/web_capture_command.rb +1 -1
- data/lib/pdfrb/model/type/web_capture_image_set.rb +1 -1
- data/lib/pdfrb/model/type/web_capture_page_set.rb +2 -2
- data/lib/pdfrb/pdf_version.rb +23 -0
- data/lib/pdfrb/task/extract_images.rb +1 -2
- data/lib/pdfrb/task/extract_text.rb +1 -1
- data/lib/pdfrb/task/merge.rb +3 -3
- data/lib/pdfrb/task/optimize.rb +2 -6
- data/lib/pdfrb/task/thumbnail.rb +1 -1
- data/lib/pdfrb/version.rb +1 -1
- data/lib/pdfrb/writer.rb +7 -15
- data/lib/pdfrb/xmp.rb +2 -2
- data/lib/pdfrb.rb +1 -0
- metadata +5 -2
|
@@ -32,11 +32,11 @@ module Pdfrb
|
|
|
32
32
|
return enum_for(:each_child) unless block_given?
|
|
33
33
|
return unless kids && document
|
|
34
34
|
|
|
35
|
-
arr =
|
|
35
|
+
arr = document.resolve(kids)
|
|
36
36
|
return unless arr.is_a?(Array)
|
|
37
37
|
|
|
38
38
|
arr.each do |kid_ref|
|
|
39
|
-
obj =
|
|
39
|
+
obj = document.resolve(kid_ref)
|
|
40
40
|
yield obj if obj
|
|
41
41
|
end
|
|
42
42
|
end
|
|
@@ -76,11 +76,11 @@ module Pdfrb
|
|
|
76
76
|
return enum_for(:each_child) unless block_given?
|
|
77
77
|
return unless kids && document
|
|
78
78
|
|
|
79
|
-
arr =
|
|
79
|
+
arr = document.resolve(kids)
|
|
80
80
|
return unless arr.is_a?(Array) || arr.is_a?(Pdfrb::Model::PdfArray)
|
|
81
81
|
|
|
82
82
|
arr.each do |kid|
|
|
83
|
-
obj =
|
|
83
|
+
obj = document.resolve(kid)
|
|
84
84
|
yield obj if obj
|
|
85
85
|
end
|
|
86
86
|
end
|
|
@@ -21,11 +21,11 @@ module Pdfrb
|
|
|
21
21
|
return enum_for(:each_child) unless block_given?
|
|
22
22
|
return unless children && document
|
|
23
23
|
|
|
24
|
-
arr =
|
|
24
|
+
arr = document.resolve(children)
|
|
25
25
|
return unless arr.is_a?(Array) || arr.is_a?(Pdfrb::Model::PdfArray)
|
|
26
26
|
|
|
27
27
|
arr.each do |kid_ref|
|
|
28
|
-
obj =
|
|
28
|
+
obj = document.resolve(kid_ref)
|
|
29
29
|
yield obj if obj
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -21,7 +21,7 @@ module Pdfrb
|
|
|
21
21
|
ref = value[:F]
|
|
22
22
|
return nil unless ref && document
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
document.resolve(ref)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
# /I — optional DocInfo dict with article metadata.
|
|
@@ -29,7 +29,7 @@ module Pdfrb
|
|
|
29
29
|
ref = value[:I]
|
|
30
30
|
return nil unless ref && document
|
|
31
31
|
|
|
32
|
-
resolved =
|
|
32
|
+
resolved = document.resolve(ref)
|
|
33
33
|
return nil unless resolved
|
|
34
34
|
|
|
35
35
|
Pdfrb::Model::Type::Info.new(resolved.value) if resolved.value.is_a?(::Hash)
|
|
@@ -40,7 +40,7 @@ module Pdfrb
|
|
|
40
40
|
ref = value[:Metadata]
|
|
41
41
|
return nil unless ref && document
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
document.resolve(ref)
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
end
|
data/lib/pdfrb/model/type/vri.rb
CHANGED
|
@@ -36,7 +36,7 @@ module Pdfrb
|
|
|
36
36
|
ref = value[:S]
|
|
37
37
|
return nil unless ref && document
|
|
38
38
|
|
|
39
|
-
resolved =
|
|
39
|
+
resolved = document.resolve(ref)
|
|
40
40
|
return nil unless resolved
|
|
41
41
|
|
|
42
42
|
Pdfrb::Model::Type::WebCaptureCommandSettings.new(resolved.value)
|
|
@@ -32,7 +32,7 @@ module Pdfrb
|
|
|
32
32
|
|
|
33
33
|
arr = refs.is_a?(Pdfrb::Model::PdfArray) ? refs.value : refs
|
|
34
34
|
arr = [arr] unless arr.is_a?(::Array)
|
|
35
|
-
arr.filter_map { |r|
|
|
35
|
+
arr.filter_map { |r| document.resolve(r) }
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
# /CT — optional content type (RFC 2045).
|
|
@@ -31,7 +31,7 @@ module Pdfrb
|
|
|
31
31
|
|
|
32
32
|
arr = refs.is_a?(Pdfrb::Model::PdfArray) ? refs.value : refs
|
|
33
33
|
arr = [arr] unless arr.is_a?(::Array)
|
|
34
|
-
arr.filter_map { |r|
|
|
34
|
+
arr.filter_map { |r| document.resolve(r) }
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
# /CT — optional content type.
|
|
@@ -64,7 +64,7 @@ module Pdfrb
|
|
|
64
64
|
arr = refs.is_a?(Pdfrb::Model::PdfArray) ? refs.value : refs
|
|
65
65
|
arr = [arr] unless arr.is_a?(::Array)
|
|
66
66
|
arr.filter_map do |r|
|
|
67
|
-
resolved =
|
|
67
|
+
resolved = document.resolve(r)
|
|
68
68
|
next nil unless resolved && resolved.value.is_a?(::Hash)
|
|
69
69
|
|
|
70
70
|
Pdfrb::Model::Type::WebCaptureCommand.new(resolved.value)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
# PDF header version comparisons (ISO 32000-2, s7.2). Version strings
|
|
5
|
+
# are dot-separated numerics ("1.4", "2.0"); comparison is
|
|
6
|
+
# numeric-per-component, never lexical ("1.10" > "1.9").
|
|
7
|
+
module PdfVersion
|
|
8
|
+
module_function
|
|
9
|
+
|
|
10
|
+
# @return [Integer] -1, 0, or 1 as +a+ is earlier, equal, or later
|
|
11
|
+
# than +b+.
|
|
12
|
+
def compare(a, b)
|
|
13
|
+
aa = a.to_s.split(".").map(&:to_i)
|
|
14
|
+
bb = b.to_s.split(".").map(&:to_i)
|
|
15
|
+
(aa <=> bb) || 0
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @return [Boolean] whether +version+ meets or exceeds +minimum+.
|
|
19
|
+
def at_least?(version, minimum)
|
|
20
|
+
compare(version, minimum) >= 0
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -15,8 +15,7 @@ module Pdfrb
|
|
|
15
15
|
document.pages.each_with_index do |page, idx|
|
|
16
16
|
xobjects = xobject_map(page, document)
|
|
17
17
|
xobjects&.each do |name, ref|
|
|
18
|
-
stream =
|
|
19
|
-
document.object(ref) : ref
|
|
18
|
+
stream = document.resolve(ref)
|
|
20
19
|
next unless stream.is_a?(Pdfrb::Model::Cos::Stream)
|
|
21
20
|
next unless stream.value[:Subtype] == :Image
|
|
22
21
|
|
|
@@ -148,7 +148,7 @@ module Pdfrb
|
|
|
148
148
|
return nil unless fonts.is_a?(::Hash)
|
|
149
149
|
|
|
150
150
|
entry = fonts[name] || fonts[name.to_sym] || fonts[name.to_s]
|
|
151
|
-
|
|
151
|
+
@document.resolve(entry)
|
|
152
152
|
end
|
|
153
153
|
end
|
|
154
154
|
private_constant :FontResolver
|
data/lib/pdfrb/task/merge.rb
CHANGED
|
@@ -20,7 +20,7 @@ module Pdfrb
|
|
|
20
20
|
new_value[:Parent] = parent_ref(target)
|
|
21
21
|
new_page = target.add(new_value, type: Pdfrb::Model::Type::Page)
|
|
22
22
|
kids = pages_root(target).value[:Kids]
|
|
23
|
-
kids <<
|
|
23
|
+
kids << new_page.ref
|
|
24
24
|
pages_root(target).value[:Count] = (pages_root(target).value[:Count] || 0) + 1
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -30,7 +30,7 @@ module Pdfrb
|
|
|
30
30
|
ref = target.catalog.value[:Pages] || begin
|
|
31
31
|
root = target.add({ Type: :Pages, Kids: [], Count: 0 },
|
|
32
32
|
type: Pdfrb::Model::Type::PageTreeNode)
|
|
33
|
-
target.catalog.value[:Pages] =
|
|
33
|
+
target.catalog.value[:Pages] = root.ref
|
|
34
34
|
target.catalog.value[:Pages]
|
|
35
35
|
end
|
|
36
36
|
target.object(ref)
|
|
@@ -39,7 +39,7 @@ module Pdfrb
|
|
|
39
39
|
|
|
40
40
|
def parent_ref(target)
|
|
41
41
|
root = pages_root(target)
|
|
42
|
-
|
|
42
|
+
root.ref
|
|
43
43
|
end
|
|
44
44
|
private_class_method :parent_ref
|
|
45
45
|
end
|
data/lib/pdfrb/task/optimize.rb
CHANGED
|
@@ -55,9 +55,7 @@ module Pdfrb
|
|
|
55
55
|
# {duplicate_oid => canonical_oid} that was applied.
|
|
56
56
|
def dedup_streams!(document)
|
|
57
57
|
canonical_for = {}
|
|
58
|
-
document.
|
|
59
|
-
next unless obj.is_a?(Pdfrb::Model::Cos::Stream)
|
|
60
|
-
next unless obj.indirect?
|
|
58
|
+
document.each_indirect_of(Pdfrb::Model::Cos::Stream) do |obj|
|
|
61
59
|
next if obj.value[:Type] == :ObjStm
|
|
62
60
|
|
|
63
61
|
key = stream_dedup_key(obj)
|
|
@@ -65,9 +63,7 @@ module Pdfrb
|
|
|
65
63
|
end
|
|
66
64
|
|
|
67
65
|
replacements = {}
|
|
68
|
-
document.
|
|
69
|
-
next unless obj.is_a?(Pdfrb::Model::Cos::Stream)
|
|
70
|
-
next unless obj.indirect?
|
|
66
|
+
document.each_indirect_of(Pdfrb::Model::Cos::Stream) do |obj|
|
|
71
67
|
next if obj.value[:Type] == :ObjStm
|
|
72
68
|
|
|
73
69
|
key = stream_dedup_key(obj)
|
data/lib/pdfrb/task/thumbnail.rb
CHANGED
data/lib/pdfrb/version.rb
CHANGED
data/lib/pdfrb/writer.rb
CHANGED
|
@@ -46,8 +46,7 @@ module Pdfrb
|
|
|
46
46
|
encrypt_ref = trailer[:Encrypt]
|
|
47
47
|
return {} unless encrypt_ref
|
|
48
48
|
|
|
49
|
-
encrypt_dict =
|
|
50
|
-
document.object(encrypt_ref) : encrypt_ref
|
|
49
|
+
encrypt_dict = document.resolve(encrypt_ref)
|
|
51
50
|
return {} unless encrypt_dict
|
|
52
51
|
|
|
53
52
|
handler = Pdfrb::Encryption::StandardSecurityHandler.new(
|
|
@@ -288,7 +287,7 @@ module Pdfrb
|
|
|
288
287
|
def write_trailer(xref_pos, prev: nil)
|
|
289
288
|
root = document.catalog
|
|
290
289
|
root_ref = root && root.is_a?(Pdfrb::Model::Object) && root.indirect? ?
|
|
291
|
-
|
|
290
|
+
root.ref : nil
|
|
292
291
|
size = [(@xref_offsets.keys.max || 0) + 1, document.next_oid || 1].max
|
|
293
292
|
|
|
294
293
|
existing = document.trailer || {}
|
|
@@ -334,7 +333,7 @@ module Pdfrb
|
|
|
334
333
|
return if inherited.nil?
|
|
335
334
|
|
|
336
335
|
Array(root.value[:Kids]).each do |kid_ref|
|
|
337
|
-
page =
|
|
336
|
+
page = document.resolve(kid_ref)
|
|
338
337
|
next unless page.is_a?(Pdfrb::Model::Cos::Dictionary)
|
|
339
338
|
next if page.value.key?(:Resources)
|
|
340
339
|
|
|
@@ -369,7 +368,7 @@ module Pdfrb
|
|
|
369
368
|
root = document.catalog
|
|
370
369
|
return nil unless root && root.indirect?
|
|
371
370
|
|
|
372
|
-
|
|
371
|
+
root.ref
|
|
373
372
|
end
|
|
374
373
|
|
|
375
374
|
def trailer_hash_for_stream
|
|
@@ -393,26 +392,19 @@ module Pdfrb
|
|
|
393
392
|
return current unless catalog
|
|
394
393
|
|
|
395
394
|
v = current
|
|
396
|
-
if (catalog.value[:AF] || catalog.value[:Collection]) &&
|
|
395
|
+
if (catalog.value[:AF] || catalog.value[:Collection]) && Pdfrb::PdfVersion.compare(v, "2.0").negative?
|
|
397
396
|
v = "2.0"
|
|
398
397
|
end
|
|
399
|
-
if catalog.value[:OCProperties] &&
|
|
398
|
+
if catalog.value[:OCProperties] && Pdfrb::PdfVersion.compare(v, "1.5").negative?
|
|
400
399
|
v = "1.5"
|
|
401
400
|
end
|
|
402
401
|
document.version = v
|
|
403
402
|
v
|
|
404
403
|
end
|
|
405
404
|
|
|
406
|
-
def compare_versions(a, b)
|
|
407
|
-
aa = a.to_s.split(".").map(&:to_i)
|
|
408
|
-
bb = b.to_s.split(".").map(&:to_i)
|
|
409
|
-
(aa <=> bb) || 0
|
|
410
|
-
end
|
|
411
|
-
|
|
412
405
|
def compress_content_streams
|
|
413
406
|
require "zlib"
|
|
414
|
-
document.
|
|
415
|
-
next unless obj.is_a?(Pdfrb::Model::Cos::Stream)
|
|
407
|
+
document.each_indirect_of(Pdfrb::Model::Cos::Stream) do |obj|
|
|
416
408
|
next if obj.value[:Filter]
|
|
417
409
|
next unless obj.stream
|
|
418
410
|
next if obj.value[:Type] == :Metadata
|
data/lib/pdfrb/xmp.rb
CHANGED
|
@@ -43,7 +43,7 @@ Pdfrb::Document.prepend(Module.new do
|
|
|
43
43
|
)
|
|
44
44
|
stream.stream = xmp_data
|
|
45
45
|
catalog.value[:Metadata] =
|
|
46
|
-
|
|
46
|
+
stream.ref
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def sync_pdfa_metadata!
|
|
@@ -61,6 +61,6 @@ Pdfrb::Document.prepend(Module.new do
|
|
|
61
61
|
)
|
|
62
62
|
stream.stream = xmp_data
|
|
63
63
|
catalog.value[:Metadata] =
|
|
64
|
-
|
|
64
|
+
stream.ref
|
|
65
65
|
end
|
|
66
66
|
end)
|
data/lib/pdfrb.rb
CHANGED
|
@@ -18,6 +18,7 @@ module Pdfrb
|
|
|
18
18
|
autoload :Configuration, "pdfrb/configuration"
|
|
19
19
|
autoload :DataDir, "pdfrb/data_dir"
|
|
20
20
|
autoload :PdfConstants, "pdfrb/pdf_constants"
|
|
21
|
+
autoload :PdfVersion, "pdfrb/pdf_version"
|
|
21
22
|
|
|
22
23
|
autoload :Source, "pdfrb/source"
|
|
23
24
|
autoload :Model, "pdfrb/model"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pdfrb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-08-
|
|
11
|
+
date: 2026-08-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: benchmark
|
|
@@ -865,6 +865,7 @@ files:
|
|
|
865
865
|
- lib/pdfrb/document/encryption.rb
|
|
866
866
|
- lib/pdfrb/document/files.rb
|
|
867
867
|
- lib/pdfrb/document/fonts.rb
|
|
868
|
+
- lib/pdfrb/document/fonts/subsetting.rb
|
|
868
869
|
- lib/pdfrb/document/form.rb
|
|
869
870
|
- lib/pdfrb/document/form_xobject.rb
|
|
870
871
|
- lib/pdfrb/document/graphics_state.rb
|
|
@@ -924,6 +925,7 @@ files:
|
|
|
924
925
|
- lib/pdfrb/font/encoding/zapf_dingbats_encoding.rb
|
|
925
926
|
- lib/pdfrb/font/glyph_list.rb
|
|
926
927
|
- lib/pdfrb/font/metrics_helper.rb
|
|
928
|
+
- lib/pdfrb/font/sfnt.rb
|
|
927
929
|
- lib/pdfrb/font/true_type.rb
|
|
928
930
|
- lib/pdfrb/font/true_type/cmap.rb
|
|
929
931
|
- lib/pdfrb/font/true_type/file.rb
|
|
@@ -1259,6 +1261,7 @@ files:
|
|
|
1259
1261
|
- lib/pdfrb/model/type/xobject_image.rb
|
|
1260
1262
|
- lib/pdfrb/model/type/xref_stream.rb
|
|
1261
1263
|
- lib/pdfrb/pdf_constants.rb
|
|
1264
|
+
- lib/pdfrb/pdf_version.rb
|
|
1262
1265
|
- lib/pdfrb/serializer.rb
|
|
1263
1266
|
- lib/pdfrb/source.rb
|
|
1264
1267
|
- lib/pdfrb/source/header_reader.rb
|