pdfrb 0.8.4 → 0.8.5

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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pdfrb/annotation/base.rb +2 -2
  3. data/lib/pdfrb/appearance/generator.rb +1 -1
  4. data/lib/pdfrb/cli/images.rb +1 -1
  5. data/lib/pdfrb/cli.rb +3 -3
  6. data/lib/pdfrb/color/default_profile.rb +1 -1
  7. data/lib/pdfrb/conformance/ltv.rb +1 -1
  8. data/lib/pdfrb/conformance/pades.rb +4 -4
  9. data/lib/pdfrb/conformance/pdf_2_af.rb +2 -2
  10. data/lib/pdfrb/conformance/pdf_a.rb +1 -1
  11. data/lib/pdfrb/conformance/pdf_x.rb +3 -3
  12. data/lib/pdfrb/conformance/tagged_pdf.rb +1 -1
  13. data/lib/pdfrb/content/canvas.rb +1 -1
  14. data/lib/pdfrb/content/hidden_text_detector.rb +1 -1
  15. data/lib/pdfrb/content/shading/base.rb +1 -1
  16. data/lib/pdfrb/content/tiling_pattern.rb +1 -1
  17. data/lib/pdfrb/digital_signature/signing.rb +2 -2
  18. data/lib/pdfrb/document/annotations.rb +10 -10
  19. data/lib/pdfrb/document/associated_files.rb +2 -2
  20. data/lib/pdfrb/document/colors.rb +1 -1
  21. data/lib/pdfrb/document/destinations.rb +4 -4
  22. data/lib/pdfrb/document/encryption.rb +1 -1
  23. data/lib/pdfrb/document/files.rb +5 -5
  24. data/lib/pdfrb/document/fonts/subsetting.rb +87 -0
  25. data/lib/pdfrb/document/fonts.rb +10 -80
  26. data/lib/pdfrb/document/form.rb +9 -9
  27. data/lib/pdfrb/document/form_xobject.rb +1 -1
  28. data/lib/pdfrb/document/graphics_state.rb +1 -1
  29. data/lib/pdfrb/document/images.rb +1 -6
  30. data/lib/pdfrb/document/info.rb +1 -1
  31. data/lib/pdfrb/document/layers.rb +1 -1
  32. data/lib/pdfrb/document/metadata.rb +1 -1
  33. data/lib/pdfrb/document/outline.rb +8 -8
  34. data/lib/pdfrb/document/output_intents.rb +3 -3
  35. data/lib/pdfrb/document/pages.rb +19 -8
  36. data/lib/pdfrb/document/pdf_a.rb +1 -1
  37. data/lib/pdfrb/document/portfolio.rb +3 -3
  38. data/lib/pdfrb/document/shadings.rb +2 -9
  39. data/lib/pdfrb/document/stamps.rb +2 -2
  40. data/lib/pdfrb/document/structure.rb +9 -9
  41. data/lib/pdfrb/document.rb +9 -2
  42. data/lib/pdfrb/encryption/security_handler.rb +1 -2
  43. data/lib/pdfrb/font/cff/subsetter.rb +0 -0
  44. data/lib/pdfrb/font/sfnt.rb +73 -0
  45. data/lib/pdfrb/font/true_type/subsetter.rb +1 -57
  46. data/lib/pdfrb/font/true_type/wrapper.rb +3 -3
  47. data/lib/pdfrb/font.rb +1 -0
  48. data/lib/pdfrb/font_loader/true_type.rb +2 -2
  49. data/lib/pdfrb/font_loader/type3.rb +1 -1
  50. data/lib/pdfrb/importer.rb +3 -3
  51. data/lib/pdfrb/linearization/writer.rb +1 -1
  52. data/lib/pdfrb/model/object.rb +7 -0
  53. data/lib/pdfrb/model/type/action_hide.rb +1 -1
  54. data/lib/pdfrb/model/type/action_sound.rb +2 -2
  55. data/lib/pdfrb/model/type/add_action_catalog.rb +1 -1
  56. data/lib/pdfrb/model/type/add_action_form_field.rb +1 -1
  57. data/lib/pdfrb/model/type/add_action_page_object.rb +1 -1
  58. data/lib/pdfrb/model/type/add_action_screen_annotation.rb +1 -1
  59. data/lib/pdfrb/model/type/add_action_widget_annotation.rb +1 -1
  60. data/lib/pdfrb/model/type/alternate_image.rb +2 -2
  61. data/lib/pdfrb/model/type/bead.rb +4 -4
  62. data/lib/pdfrb/model/type/catalog.rb +1 -1
  63. data/lib/pdfrb/model/type/d_part.rb +4 -4
  64. data/lib/pdfrb/model/type/document_security_store.rb +1 -1
  65. data/lib/pdfrb/model/type/dss.rb +1 -1
  66. data/lib/pdfrb/model/type/function_stitching.rb +1 -1
  67. data/lib/pdfrb/model/type/generic_appearance.rb +1 -1
  68. data/lib/pdfrb/model/type/opt_content_ext.rb +2 -2
  69. data/lib/pdfrb/model/type/optional_content_membership.rb +2 -2
  70. data/lib/pdfrb/model/type/page.rb +5 -7
  71. data/lib/pdfrb/model/type/page_tree_node.rb +2 -2
  72. data/lib/pdfrb/model/type/rich_media_configuration.rb +1 -1
  73. data/lib/pdfrb/model/type/struct_elem.rb +2 -2
  74. data/lib/pdfrb/model/type/struct_tree_root.rb +2 -2
  75. data/lib/pdfrb/model/type/thread.rb +3 -3
  76. data/lib/pdfrb/model/type/three_d_stream.rb +1 -1
  77. data/lib/pdfrb/model/type/viewport.rb +1 -1
  78. data/lib/pdfrb/model/type/vri.rb +1 -1
  79. data/lib/pdfrb/model/type/web_capture_command.rb +1 -1
  80. data/lib/pdfrb/model/type/web_capture_image_set.rb +1 -1
  81. data/lib/pdfrb/model/type/web_capture_page_set.rb +2 -2
  82. data/lib/pdfrb/task/extract_images.rb +1 -2
  83. data/lib/pdfrb/task/extract_text.rb +1 -1
  84. data/lib/pdfrb/task/merge.rb +3 -3
  85. data/lib/pdfrb/task/thumbnail.rb +1 -1
  86. data/lib/pdfrb/version.rb +1 -1
  87. data/lib/pdfrb/writer.rb +4 -5
  88. data/lib/pdfrb/xmp.rb +2 -2
  89. metadata +3 -1
@@ -36,7 +36,7 @@ module Pdfrb
36
36
  ref = value[:S]
37
37
  return nil unless ref && document
38
38
 
39
- resolved = ref.is_a?(Pdfrb::Model::Reference) ? document.object(ref) : ref
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| r.is_a?(Pdfrb::Model::Reference) ? document.object(r) : 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| r.is_a?(Pdfrb::Model::Reference) ? document.object(r) : 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 = r.is_a?(Pdfrb::Model::Reference) ? document.object(r) : r
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)
@@ -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 = ref.is_a?(Pdfrb::Model::Reference) ?
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
- entry.is_a?(Pdfrb::Model::Reference) ? @document.object(entry) : entry
151
+ @document.resolve(entry)
152
152
  end
153
153
  end
154
154
  private_constant :FontResolver
@@ -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 << Pdfrb::Model::Reference.new(new_page.oid, new_page.gen)
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] = Pdfrb::Model::Reference.new(root.oid, 0)
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
- Pdfrb::Model::Reference.new(root.oid, root.gen)
42
+ root.ref
43
43
  end
44
44
  private_class_method :parent_ref
45
45
  end
@@ -29,7 +29,7 @@ module Pdfrb
29
29
  thumb = build_thumbnail(document, page, dpi: dpi, max_width: max_width)
30
30
  next unless thumb
31
31
 
32
- page.value[:Thumb] = Pdfrb::Model::Reference.new(thumb.oid, thumb.gen)
32
+ page.value[:Thumb] = thumb.ref
33
33
  count += 1
34
34
  end
35
35
  count
data/lib/pdfrb/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pdfrb
4
- VERSION = "0.8.4"
4
+ VERSION = "0.8.5"
5
5
  end
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 = encrypt_ref.is_a?(Pdfrb::Model::Reference) ?
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
- Pdfrb::Model::Reference.new(root.oid, root.gen) : nil
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 = kid_ref.is_a?(Pdfrb::Model::Reference) ? document.object(kid_ref) : kid_ref
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
- Pdfrb::Model::Reference.new(root.oid, root.gen)
371
+ root.ref
373
372
  end
374
373
 
375
374
  def trailer_hash_for_stream
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
- Pdfrb::Model::Reference.new(stream.oid, stream.gen)
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
- Pdfrb::Model::Reference.new(stream.oid, stream.gen)
64
+ stream.ref
65
65
  end
66
66
  end)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdfrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -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