pdfrb 0.7.19 → 0.7.20

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ceb6a2eec5eb948c98085aaca1c41b6101dd5970201fd9fd93af5d4a749dfe6
4
- data.tar.gz: 15b493786db9a355ee20c35a4975ceb81a36118c294a90fc429398f5029086da
3
+ metadata.gz: a799578418324e198b38930d7dce57663503478adb1b529c608d58183f84f183
4
+ data.tar.gz: 94b49f8a02ce9845ad283afa39ec4224ce0ecef9240919c21909e38f18f52ccd
5
5
  SHA512:
6
- metadata.gz: a2c9c5c3253f4b0b9546ad908af4dfc5439c57de7d4fc669059144f4f1410255a6aaa9fffa68ee77233796a192e574398c02994f7fa558a760e16d7c79a44869
7
- data.tar.gz: b9aa959023df3ec4ed99d65c05b26b4717cf5260a00a0781daa20fda52cb88b7d4e700ca6f94f0987d35f58bdd534a41b3e5a0649a0d7f6d3f0f9a2a7e2d20d5
6
+ metadata.gz: 1d2bdf98564008508094b7c6165160541419331edd629f2dd836dc4632b1f99830e0b8d3b9490cd3395ebc5e0674c40f8ce99bf42b079ff9f8ab7c3b13e8180a
7
+ data.tar.gz: 984567fb69359980624147608deeeed46c9a345a0ec4f97158924629d1bf78f8c3a6be5dba5cfc1c6a36d930865a55d33a5c5d0fa17922fb4c16726d1142f037
@@ -7,20 +7,23 @@ module Pdfrb
7
7
  # annotation holds three sub-dicts: /N (normal), /R (rollover),
8
8
  # /D (down).
9
9
  class Appearance < Pdfrb::Model::Cos::Dictionary
10
+ arlington_object "Appearance"
10
11
  def normal; self[:N]; end
11
12
  def rollover; self[:R]; end
12
13
  def down; self[:D]; end
13
14
 
15
+ # Presence checks use the raw value (not the Arlington
16
+ # default) because /D defaults to /N's value per the spec.
14
17
  def has_normal?
15
- !!normal
18
+ !value[:N].nil?
16
19
  end
17
20
 
18
21
  def has_rollover?
19
- !!rollover
22
+ !value[:R].nil?
20
23
  end
21
24
 
22
25
  def has_down?
23
- !!down
26
+ !value[:D].nil?
24
27
  end
25
28
 
26
29
  def normal_for_state(state_name)
@@ -8,6 +8,7 @@ module Pdfrb
8
8
  # colors, normal/rollover/down captions, etc. Often stored under
9
9
  # the widget's /MK key.
10
10
  class AppearanceCharacteristics < Pdfrb::Model::Cos::Dictionary
11
+ arlington_object "AppearanceCharacteristics"
11
12
  def background_color; self[:BG]; end
12
13
  def caption; self[:CA]; end
13
14
  def rollover_caption; self[:RC]; end
@@ -6,6 +6,7 @@ module Pdfrb
6
6
  # AppearanceTrapNet sub-dictionary (s7.7.3.3, Table 327). Per-
7
7
  # appearance-stream trap-net (ink-flattening) parameters.
8
8
  class AppearanceTrapNetSubDict < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "AppearanceTrapNet"
9
10
  def pos_h; self[:PosH]; end
10
11
  def pos_l; self[:PosL]; end
11
12
  def span_h_min; self[:SpanH]; end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Model
5
+ module Type
6
+ # DPartRoot (ISO 16612-2 PDF/VT §6.3.4). The root of the
7
+ # Document Part hierarchy, attached to the Catalog via the
8
+ # /DPartRoot key. Represents the root node of a tree whose
9
+ # leaves are groups of document parts.
10
+ class DPartRoot < Pdfrb::Model::Cos::Dictionary
11
+ arlington_object "DPartRoot"
12
+
13
+ # /Type — optional, fixed "DPartRoot".
14
+ def type
15
+ value[:Type]&.to_sym
16
+ end
17
+
18
+ # /DPartRootNode — required indirect reference to the
19
+ # first DPart child.
20
+ def root_node(document = nil)
21
+ ref = value[:DPartRootNode]
22
+ return nil unless ref && document
23
+
24
+ resolved = ref.is_a?(Pdfrb::Model::Reference) ? document.object(ref) : ref
25
+ return nil unless resolved && resolved.value.is_a?(::Hash)
26
+
27
+ DPart.new(resolved.value)
28
+ end
29
+
30
+ # /RecordLevel — optional integer >= 0, the nesting depth
31
+ # at which DParts represent individual records.
32
+ def record_level
33
+ value[:RecordLevel]
34
+ end
35
+
36
+ # /NodeNameList — optional array of names identifying the
37
+ # tree levels (required for PDF/VT-2).
38
+ def node_name_list
39
+ value[:NodeNameList]
40
+ end
41
+ end
42
+
43
+ # DPart (ISO 16612-2 PDF/VT §6.3.5). One node in the Document
44
+ # Part hierarchy. Either has /DParts (a tree of child DParts)
45
+ # or /Start + /End pointing to the page range it covers.
46
+ class DPart < Pdfrb::Model::Cos::Dictionary
47
+ arlington_object "DPart"
48
+
49
+ # /Type — optional, fixed "DPart".
50
+ def type
51
+ value[:Type]&.to_sym
52
+ end
53
+
54
+ # /Parent — required indirect ref to the containing DPart
55
+ # or DPartRoot (may be absent when Metadata is present).
56
+ def parent(document = nil)
57
+ ref = value[:Parent]
58
+ return nil unless ref && document
59
+
60
+ ref.is_a?(Pdfrb::Model::Reference) ? document.object(ref) : ref
61
+ end
62
+
63
+ # /DParts — array of arrays of child DParts. Mutually
64
+ # exclusive with /Start + /End.
65
+ def child_parts
66
+ value[:DParts]
67
+ end
68
+
69
+ # /Start — indirect ref to the first Page in this part.
70
+ def start_page(document = nil)
71
+ ref = value[:Start]
72
+ return nil unless ref && document
73
+
74
+ ref.is_a?(Pdfrb::Model::Reference) ? document.object(ref) : ref
75
+ end
76
+
77
+ # /End — indirect ref to the last Page in this part.
78
+ def end_page(document = nil)
79
+ ref = value[:End]
80
+ return nil unless ref && document
81
+
82
+ ref.is_a?(Pdfrb::Model::Reference) ? document.object(ref) : ref
83
+ end
84
+
85
+ def leaf?
86
+ child_parts.nil?
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Model
5
+ module Type
6
+ # DSS (Document Security Store) per ETSI EN 319 142-1 (PAdES)
7
+ # §B.5. Attached to the Catalog via the /DSS key. Holds the
8
+ # long-term validation material: certificates, CRLs, OCSP
9
+ # responses, and per-signature VRI dictionaries.
10
+ class Dss < Pdfrb::Model::Cos::Dictionary
11
+ arlington_object "DSS"
12
+
13
+ # /Type — optional, fixed "DSS".
14
+ def type
15
+ value[:Type]&.to_sym
16
+ end
17
+
18
+ # /Certs — array of indirect streams, each a DER-encoded
19
+ # X.509 certificate used by any signature in the document.
20
+ def certificates(document = nil)
21
+ resolve_streams(value[:Certs], document)
22
+ end
23
+
24
+ # /OCSPs — array of indirect streams, each a DER-encoded
25
+ # OCSP response.
26
+ def ocsp_responses(document = nil)
27
+ resolve_streams(value[:OCSPs], document)
28
+ end
29
+
30
+ # /CRLs — array of indirect streams, each a DER-encoded
31
+ # certificate revocation list.
32
+ def crls(document = nil)
33
+ resolve_streams(value[:CRLs], document)
34
+ end
35
+
36
+ # /VRI — optional map of SHA-1 hex digest -> VRI dict for
37
+ # each signature. Returns the raw Hash.
38
+ def vri_map
39
+ value[:VRI]
40
+ end
41
+
42
+ # Enumerate each (signature-hash, Vri) pair, resolving the
43
+ # VRI dicts to typed instances.
44
+ def each_vri(document = nil)
45
+ return enum_for(:each_vri, document) unless block_given?
46
+
47
+ map = vri_map
48
+ return unless map
49
+
50
+ raw = map.is_a?(Pdfrb::Model::Cos::Dictionary) ? map.value : map
51
+ raw.each do |sig_hash, ref|
52
+ resolved = if ref.is_a?(Pdfrb::Model::Reference) && document
53
+ document.object(ref)
54
+ else
55
+ ref
56
+ end
57
+ next unless resolved && resolved.value.is_a?(::Hash)
58
+
59
+ yield sig_hash.to_s, Vri.new(resolved.value)
60
+ end
61
+ end
62
+
63
+ # Look up a VRI by the hex-encoded SHA-1 digest of the
64
+ # signature's DER bytes.
65
+ def vri_for(signature_sha1_hex, document = nil)
66
+ each_vri(document).find { |h, _v| h == signature_sha1_hex }&.last
67
+ end
68
+
69
+ private
70
+
71
+ def resolve_streams(refs, document)
72
+ return [] unless refs && document
73
+
74
+ arr = refs.is_a?(Pdfrb::Model::PdfArray) ? refs.value : refs
75
+ arr = [arr] unless arr.is_a?(::Array)
76
+ arr.filter_map { |r| r.is_a?(Pdfrb::Model::Reference) ? document.object(r) : r }
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -6,6 +6,7 @@ module Pdfrb
6
6
  # 3D Activation (s13.6.2). Controls when a 3D stream becomes
7
7
  # active and how it's deactivated.
8
8
  class ThreeDActivation < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "3DActivation"
9
10
  def activation_mode; self[:A]&.to_sym; end
10
11
  def activation_instance; self[:AIS]&.to_sym; end
11
12
  def deactivation_mode; self[:D]&.to_sym; end
@@ -6,6 +6,7 @@ module Pdfrb
6
6
  # 3D Animation Style (s13.6.3, Table 312-313). Animation control
7
7
  # for a 3D stream.
8
8
  class ThreeDAnimationStyle < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "3DAnimationStyle"
9
10
  def type; self[:Type]; end
10
11
  def subtype; self[:Subtype]&.to_sym; end
11
12
  def play_count; self[:PC] || 0; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Background (s13.6.4). Background fill for a 3D view.
7
7
  class ThreeDBackground < Pdfrb::Model::Cos::Dictionary
8
+ arlington_object "3DBackground"
8
9
  def type; self[:Type]; end
9
10
  def subtype; self[:Subtype]&.to_sym; end
10
11
  def color_space; self[:CS]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Cross Section (s13.6.4). Plane cutaway view of a 3D model.
7
7
  class ThreeDCrossSection < Pdfrb::Model::Cos::Dictionary
8
+ arlington_object "3DCrossSection"
8
9
  def type; self[:Type]; end
9
10
  def center; self[:C]; end
10
11
  def orientation; self[:O]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Lighting Scheme (s13.6.4, Table 320-321). Lighting preset.
7
7
  class ThreeDLightingScheme < Pdfrb::Model::Cos::Dictionary
8
+ arlington_object "3DLightingScheme"
8
9
  def type; self[:Type]; end
9
10
  def subtype; self[:Subtype]&.to_sym; end
10
11
 
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Comment (3DC) measure (s13.6.4). A 3D measurement note.
7
7
  class ThreeDMeasure3DC < ThreeDMeasure
8
+ arlington_object "3DMeasure3DC"
8
9
  def text; self[:TRL]; end
9
10
  def anchor; self[:A1]; end
10
11
  def name; self[:N1]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Angle Distance measure (AD3, s13.6.4).
7
7
  class ThreeDMeasureAD3 < ThreeDMeasure
8
+ arlington_object "3DMeasureAD3"
8
9
  def annotation1; self[:A1]; end
9
10
  def annotation2; self[:A2]; end
10
11
  def angle; self[:A]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Linear Distance measure (LD3, s13.6.4).
7
7
  class ThreeDMeasureLD3 < ThreeDMeasure
8
+ arlington_object "3DMeasureLD3"
8
9
  def annotation1; self[:A1]; end
9
10
  def annotation2; self[:A2]; end
10
11
  def distance; self[:D]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Perpendicular Distance measure (PD3, s13.6.4).
7
7
  class ThreeDMeasurePD3 < ThreeDMeasure
8
+ arlington_object "3DMeasurePD3"
8
9
  def annotation1; self[:A1]; end
9
10
  def annotation2; self[:A2]; end
10
11
  def distance; self[:D]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Radial Distance measure (RD3, s13.6.4).
7
7
  class ThreeDMeasureRD3 < ThreeDMeasure
8
+ arlington_object "3DMeasureRD3"
8
9
  def annotation1; self[:A1]; end
9
10
  def annotation2; self[:A2]; end
10
11
  def distance; self[:D]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Node (s13.6.4). A node in a 3D model's scene graph.
7
7
  class ThreeDNode < Pdfrb::Model::Cos::Dictionary
8
+ arlington_object "3DNode"
8
9
  def type; self[:Type]; end
9
10
  def name; self[:N]; end
10
11
  def opacity; self[:O]; end
@@ -6,6 +6,7 @@ module Pdfrb
6
6
  # 3D Reference (s13.6.5). Indirect reference to a 3D stream
7
7
  # elsewhere in the document.
8
8
  class ThreeDReference < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "3DReference"
9
10
  def type; self[:Type]; end
10
11
  def target_stream; self[:Target]; end
11
12
 
@@ -6,6 +6,7 @@ module Pdfrb
6
6
  # 3D Render Mode (s13.6.4, Table 318-319). Rendering style for
7
7
  # 3D objects (solid, wireframe, transparent, etc.).
8
8
  class ThreeDRenderMode < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "3DRenderMode"
9
10
  def type; self[:Type]; end
10
11
  def subtype; self[:Subtype]&.to_sym; end
11
12
  def auxiliary_color; self[:AC]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Stream (s13.6.3). Carries a U3D or PRC binary 3D model.
7
7
  class ThreeDStream < Pdfrb::Model::Cos::Stream
8
+ arlington_object "3DStream"
8
9
  def type; self[:Type]; end
9
10
  def subtype; self[:Subtype]&.to_sym; end
10
11
  def views; self[:VA]; end
@@ -5,6 +5,7 @@ module Pdfrb
5
5
  module Type
6
6
  # 3D Units (s13.6.4). Scaling factor and unit name for 3D measures.
7
7
  class ThreeDUnits < Pdfrb::Model::Cos::Dictionary
8
+ arlington_object "3DUnits"
8
9
  def type; self[:Type]; end
9
10
  def unit_name; self[:U]; end
10
11
  def scale_factor; self[:SF]; end
@@ -6,6 +6,7 @@ module Pdfrb
6
6
  # 3D View (s13.6.4). A single camera/lighting/material configuration
7
7
  # for a 3D stream.
8
8
  class ThreeDView < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "3DView"
9
10
  def type; self[:Type]; end
10
11
  def external_name; self[:XN]; end
11
12
  def internal_name; self[:IN]; end
@@ -394,6 +394,13 @@ module Pdfrb
394
394
 
395
395
  # Sound action (s12.6.4.11, deprecated 2.0).
396
396
  autoload :ActionSound, "pdfrb/model/type/action_sound"
397
+
398
+ # Document Security Store (ETSI EN 319 142-1 PAdES).
399
+ autoload :Dss, "pdfrb/model/type/dss"
400
+
401
+ # Document Part hierarchy (ISO 16612-2 PDF/VT).
402
+ autoload :DPartRoot, "pdfrb/model/type/d_part"
403
+ autoload :DPart, "pdfrb/model/type/d_part"
397
404
  end
398
405
  end
399
406
  end
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.7.19"
4
+ VERSION = "0.7.20"
5
5
  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.7.19
4
+ version: 0.7.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -1004,11 +1004,13 @@ files:
1004
1004
  - lib/pdfrb/model/type/collection_schema.rb
1005
1005
  - lib/pdfrb/model/type/collection_sort.rb
1006
1006
  - lib/pdfrb/model/type/crypt_filter.rb
1007
+ - lib/pdfrb/model/type/d_part.rb
1007
1008
  - lib/pdfrb/model/type/device_n.rb
1008
1009
  - lib/pdfrb/model/type/device_n_mixing_hints.rb
1009
1010
  - lib/pdfrb/model/type/device_n_process.rb
1010
1011
  - lib/pdfrb/model/type/doc_mdp_transform_parameters.rb
1011
1012
  - lib/pdfrb/model/type/document_security_store.rb
1013
+ - lib/pdfrb/model/type/dss.rb
1012
1014
  - lib/pdfrb/model/type/embedded_file.rb
1013
1015
  - lib/pdfrb/model/type/embedded_file_parameter.rb
1014
1016
  - lib/pdfrb/model/type/encryption_public_key.rb