pdfrb 0.7.31 → 0.7.33

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: 477baf83aeea6245724da9acdf754de37f90c24c210a86ca2da935a30634dec0
4
- data.tar.gz: f871f4bb91ede07091487d953ef28604397db256f054216474e1006f55fcf95a
3
+ metadata.gz: 7df27df1b605b7360c642707bcb6496b6316d52dc7bbf9373acd7127f2098513
4
+ data.tar.gz: 121359ec98110dca31e4c3e6f1c11fa00a0a6a3cdf3fa70a2749d2b34566f8c7
5
5
  SHA512:
6
- metadata.gz: f3daf7059880972579adc591b6d8f648e7c031743794257aab14905859ac7a62e805c631ee1d9b16215415bcd276c2effbdbfa8070b679b0542b24989ac2585f
7
- data.tar.gz: ab06fa9aebbcc46b2e9fbd1b054d591b5bfa512c13c0ea2ccbbc51973b64e3107b885120923015249250ad206d3bda3ebb9eff6d1a700961d842cb673c7db7fc
6
+ metadata.gz: d6d55dcf0d53c4d21d6bb149affda69999eec6580177a50f8f4dbf6988df3f9933a2c67d16ba3a6acebb4c9a1b376cc05f04641ff5347cd4dd9451502c08a9fd
7
+ data.tar.gz: 7080ccf0f4416a5f84214b9a0b83ce673cf9722d9cd4a481998579c370b90f3aa0ce9a608ecd481d6269995221a01769f70eecef4da08b5da6ca9658f5ff28cc
@@ -172,7 +172,10 @@ module Pdfrb
172
172
  return raw[1..-2].split.then { |tokens| tokens.map { |t| arlington_scalar(t) } }
173
173
  end
174
174
 
175
- arlington_scalar(raw)
175
+ scalar = arlington_scalar(raw)
176
+ return scalar.to_sym if scalar.is_a?(::String) && field_def.types_raw.include?("name")
177
+
178
+ scalar
176
179
  end
177
180
  private :arlington_default
178
181
 
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Model
5
+ module Type
6
+ # FlateDecode /DecodeParms dictionary (s7.4.4.3): predictor
7
+ # settings shared with LZWDecode.
8
+ class FlateDecodeParms < Pdfrb::Model::Cos::Dictionary
9
+ arlington_object "FilterFlateDecode"
10
+
11
+ def predictor; self[:Predictor] || 1; end
12
+ def colors; self[:Colors] || 1; end
13
+ def bits_per_component; self[:BitsPerComponent] || 8; end
14
+ def columns; self[:Columns] || 1; end
15
+
16
+ def png_predictor?; predictor >= 10; end
17
+ def tiff_predictor?; predictor == 2; end
18
+ end
19
+
20
+ # LZWDecode /DecodeParms dictionary (s7.4.4.2): adds EarlyChange.
21
+ class LZWDecodeParms < FlateDecodeParms
22
+ arlington_object "FilterLZWDecode"
23
+
24
+ def early_change; self[:EarlyChange] || 1; end
25
+ end
26
+
27
+ # DCTDecode /DecodeParms dictionary (s7.4.7): color transform.
28
+ class DCTDecodeParms < Pdfrb::Model::Cos::Dictionary
29
+ arlington_object "FilterDCTDecode"
30
+
31
+ def color_transform; self[:ColorTransform]; end
32
+
33
+ # /ColorTransform 0 = four-component YCCK/CMYK input; 1 (or
34
+ # absent) = three-component YCbCr/RGB.
35
+ def cmyk_input?
36
+ !color_transform.nil? && color_transform.zero?
37
+ end
38
+ end
39
+
40
+ # CCITTFaxDecode /DecodeParms dictionary (s7.4.6): Group 3/4
41
+ # facsimile parameters.
42
+ class CCITTFaxDecodeParms < Pdfrb::Model::Cos::Dictionary
43
+ arlington_object "FilterCCITTFaxDecode"
44
+
45
+ def k; self[:K]; end
46
+ def end_of_line; self[:EndOfLine]; end
47
+ def encoded_byte_align; self[:EncodedByteAlign]; end
48
+ def columns; self[:Columns] || 1728; end
49
+ def rows; self[:Rows]; end
50
+ def end_of_block; self[:EndOfBlock]; end
51
+ def black_is_one; self[:BlackIs1]; end
52
+ def damaged_rows_before_error; self[:DamagedRowsBeforeError]; end
53
+
54
+ def group4?; k&.negative?; end
55
+ def group3_1d?; k&.zero?; end
56
+ def group3_2d?; k&.positive?; end
57
+ end
58
+
59
+ # JBIG2Decode /DecodeParms dictionary (s7.4.7): global stream ref.
60
+ class JBIG2DecodeParms < Pdfrb::Model::Cos::Dictionary
61
+ arlington_object "FilterJBIG2Decode"
62
+
63
+ def jbig2_globals; self[:JBIG2Globals]; end
64
+ end
65
+
66
+ # Crypt /DecodeParms dictionary (s7.6.5.5): names the crypt
67
+ # filter applied to a stream.
68
+ class CryptDecodeParms < Pdfrb::Model::Cos::Dictionary
69
+ arlington_object "FilterCrypt"
70
+
71
+ def type; self[:Type]; end
72
+ def name; self[:Name] || :Identity; end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -71,6 +71,116 @@ module Pdfrb
71
71
  decoded_stream&.force_encoding(Encoding::BINARY)
72
72
  end
73
73
  end
74
+
75
+ # Gamma array [r g b] inside the CalRGB dict (s8.6.3.3).
76
+ class GammaArray < Pdfrb::Model::PdfArray
77
+ arlington_object "GammaArray"
78
+
79
+ def r; self[0]; end
80
+ def g; self[1]; end
81
+ def b; self[2]; end
82
+ end
83
+
84
+ # White point [X Y Z] inside Cal dicts (s8.6.3.1).
85
+ class WhitepointArray < Pdfrb::Model::PdfArray
86
+ arlington_object "WhitepointArray"
87
+
88
+ def x; self[0]; end
89
+ def y; self[1]; end
90
+ def z; self[2]; end
91
+ end
92
+
93
+ # Trailer /ID array [id1 id2] (s7.5.5): two 16-byte strings.
94
+ class TrailerIDArray < Pdfrb::Model::PdfArray
95
+ arlington_object "TrailerIDArray"
96
+
97
+ def id1; self[0]; end
98
+ def id2; self[1]; end
99
+ end
100
+
101
+ # Visibility expression array (s8.11.4.6):
102
+ # [operator operand*] with operators /And /Or /Not.
103
+ class VisibilityExpressionArray < Pdfrb::Model::PdfArray
104
+ arlington_object "VisibilityExpressionArray"
105
+
106
+ def operator; self[0]; end
107
+
108
+ def operands
109
+ rest = self[1..] || []
110
+ rest.is_a?(Pdfrb::Model::PdfArray) ? rest.to_a : rest
111
+ end
112
+
113
+ def and?; operator == :And; end
114
+ def or?; operator == :Or; end
115
+ def not?; operator == :Not; end
116
+ end
117
+
118
+ # FileSpec /RelatedFiles array (s7.11.3.2, deprecation era):
119
+ # alternating file-name strings and file streams.
120
+ class RelatedFilesArray < Pdfrb::Model::PdfArray
121
+ arlington_object "RelatedFilesArray"
122
+
123
+ def each_pair
124
+ return enum_for(:each_pair) unless block_given?
125
+
126
+ (0...size).step(2) do |i|
127
+ yield self[i], self[i + 1]
128
+ end
129
+ end
130
+ end
131
+
132
+ # RichMediaExecute /CMD /A arguments array (s13.6.9.6).
133
+ class RichMediaCommandArray < Pdfrb::Model::PdfArray
134
+ arlington_object "RichMediaCommandArray"
135
+ end
136
+
137
+ # UR transform permission name arrays (s7.6.5.9): lists of
138
+ # permitted operation names. One subclass per /Transform
139
+ # parameter entry.
140
+ class URTransformParamArray < Pdfrb::Model::PdfArray
141
+ arlington_object "URTransformParamDocumentArray"
142
+ end
143
+
144
+ class URTransformParamAnnotsArray < URTransformParamArray
145
+ arlington_object "URTransformParamAnnotsArray"
146
+ end
147
+
148
+ class URTransformParamEFArray < URTransformParamArray
149
+ arlington_object "URTransformParamEFArray"
150
+ end
151
+
152
+ class URTransformParamFormArray < URTransformParamArray
153
+ arlington_object "URTransformParamFormArray"
154
+ end
155
+
156
+ class URTransformParamSignatureArray < URTransformParamArray
157
+ arlington_object "URTransformParamSignatureArray"
158
+ end
159
+
160
+ # Generic catch-all array (Arlington _UniversalArray): any
161
+ # mix of PDF values.
162
+ class UniversalArray < Pdfrb::Model::PdfArray
163
+ arlington_object "_UniversalArray"
164
+ end
165
+
166
+ # Generic catch-all dictionary (Arlington _UniversalDictionary).
167
+ class UniversalDictionary < Pdfrb::Model::Cos::Dictionary
168
+ arlington_object "_UniversalDictionary"
169
+ end
170
+
171
+ # /OOAdditionalStms array [name stream]* (PDF 1.5 era
172
+ # object-order additional streams).
173
+ class OOAdditionalStmsArray < Pdfrb::Model::PdfArray
174
+ arlington_object "OOAdditionalStmsArray"
175
+
176
+ def each_pair
177
+ return enum_for(:each_pair) unless block_given?
178
+
179
+ (0...size).step(2) do |i|
180
+ yield self[i], self[i + 1]
181
+ end
182
+ end
183
+ end
74
184
  end
75
185
  end
76
186
  end
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Model
5
+ module Type
6
+ # Requirements handler dictionary (s7.9.2, Catalog /Requirements).
7
+ # Common keys across every handler: the feature /S, the version
8
+ # /V that introduced it, the reader handler /RH, and the /Penalty
9
+ # for missing support. Feature-specific keys live on subclasses.
10
+ class RequirementsHandler < Pdfrb::Model::Cos::Dictionary
11
+ arlington_object "RequirementsHandler"
12
+
13
+ def type; self[:Type]; end
14
+ def feature; self[:S]; end
15
+ def version; self[:V]; end
16
+ def reader_handler; self[:RH]; end
17
+ def penalty; self[:Penalty]; end
18
+
19
+ def fatal?
20
+ penalty&.to_sym == :Fatal
21
+ end
22
+
23
+ # /Script — JavaScript reader-handler bootstrap.
24
+ def script; self[:Script]; end
25
+ end
26
+
27
+ # /Requirements entry (s7.9.2): feature "3DMarkup".
28
+ class Requirements3DMarkup < RequirementsHandler
29
+ arlington_object "Requirements3DMarkup"
30
+ end
31
+
32
+ # /Requirements entry (s7.9.2): feature "AcroFormInteract".
33
+ class RequirementsAcroFormInteract < RequirementsHandler
34
+ arlington_object "RequirementsAcroFormInteract"
35
+ end
36
+
37
+ # /Requirements entry (s7.9.2): feature "Action".
38
+ class RequirementsAction < RequirementsHandler
39
+ arlington_object "RequirementsAction"
40
+ end
41
+
42
+ # /Requirements entry (s7.9.2): feature "Attachment".
43
+ class RequirementsAttachment < RequirementsHandler
44
+ arlington_object "RequirementsAttachment"
45
+ end
46
+
47
+ # /Requirements entry (s7.9.2): feature "AttachmentEditing".
48
+ class RequirementsAttachmentEditing < RequirementsHandler
49
+ arlington_object "RequirementsAttachmentEditing"
50
+ end
51
+
52
+ # /Requirements entry (s7.9.2): feature "Collection".
53
+ class RequirementsCollection < RequirementsHandler
54
+ arlington_object "RequirementsCollection"
55
+ end
56
+
57
+ # /Requirements entry (s7.9.2): feature "CollectionEditing".
58
+ class RequirementsCollectionEditing < RequirementsHandler
59
+ arlington_object "RequirementsCollectionEditing"
60
+ end
61
+
62
+ # /Requirements entry (s7.9.2): feature "DPartInteract".
63
+ class RequirementsDPartInteract < RequirementsHandler
64
+ arlington_object "RequirementsDPartInteract"
65
+ end
66
+
67
+ # /Requirements entry (s7.9.2): feature "DigSig".
68
+ class RequirementsDigSig < RequirementsHandler
69
+ arlington_object "RequirementsDigSig"
70
+
71
+ def dig_sig; self[:DigSig]; end
72
+ end
73
+
74
+ # /Requirements entry (s7.9.2): feature "DigSigMDP".
75
+ class RequirementsDigSigMDP < RequirementsHandler
76
+ arlington_object "RequirementsDigSigMDP"
77
+
78
+ def dig_sig; self[:DigSig]; end
79
+ end
80
+
81
+ # /Requirements entry (s7.9.2): feature "DigSigValidation".
82
+ class RequirementsDigSigValidation < RequirementsHandler
83
+ arlington_object "RequirementsDigSigValidation"
84
+
85
+ def dig_sig; self[:DigSig]; end
86
+ end
87
+
88
+ # /Requirements entry (s7.9.2): feature "EnableJavaScripts".
89
+ class RequirementsEnableJavaScripts < RequirementsHandler
90
+ arlington_object "RequirementsEnableJavaScripts"
91
+ end
92
+
93
+ # /Requirements entry (s7.9.2): feature "Encryption".
94
+ class RequirementsEncryption < RequirementsHandler
95
+ arlington_object "RequirementsEncryption"
96
+
97
+ def encrypt_dict; self[:Encrypt]; end
98
+ end
99
+
100
+ # /Requirements entry (s7.9.2): feature "Geospatial2D".
101
+ class RequirementsGeospatial2D < RequirementsHandler
102
+ arlington_object "RequirementsGeospatial2D"
103
+ end
104
+
105
+ # /Requirements entry (s7.9.2): feature "Geospatial3D".
106
+ class RequirementsGeospatial3D < RequirementsHandler
107
+ arlington_object "RequirementsGeospatial3D"
108
+ end
109
+
110
+ # /Requirements entry (s7.9.2): feature "Markup".
111
+ class RequirementsMarkup < RequirementsHandler
112
+ arlington_object "RequirementsMarkup"
113
+ end
114
+
115
+ # /Requirements entry (s7.9.2): feature "Multimedia".
116
+ class RequirementsMultimedia < RequirementsHandler
117
+ arlington_object "RequirementsMultimedia"
118
+ end
119
+
120
+ # /Requirements entry (s7.9.2): feature "Navigation".
121
+ class RequirementsNavigation < RequirementsHandler
122
+ arlington_object "RequirementsNavigation"
123
+ end
124
+
125
+ # /Requirements entry (s7.9.2): feature "OCAutoStates".
126
+ class RequirementsOCAutoStates < RequirementsHandler
127
+ arlington_object "RequirementsOCAutoStates"
128
+ end
129
+
130
+ # /Requirements entry (s7.9.2): feature "OCInteract".
131
+ class RequirementsOCInteract < RequirementsHandler
132
+ arlington_object "RequirementsOCInteract"
133
+ end
134
+
135
+ # /Requirements entry (s7.9.2): feature "PRC".
136
+ class RequirementsPRC < RequirementsHandler
137
+ arlington_object "RequirementsPRC"
138
+ end
139
+
140
+ # /Requirements entry (s7.9.2): feature "RichMedia".
141
+ class RequirementsRichMedia < RequirementsHandler
142
+ arlington_object "RequirementsRichMedia"
143
+ end
144
+
145
+ # /Requirements entry (s7.9.2): feature "STEP".
146
+ class RequirementsSTEP < RequirementsHandler
147
+ arlington_object "RequirementsSTEP"
148
+ end
149
+
150
+ # /Requirements entry (s7.9.2): feature "SeparationSimulation".
151
+ class RequirementsSeparationSimulation < RequirementsHandler
152
+ arlington_object "RequirementsSeparationSimulation"
153
+ end
154
+
155
+ # /Requirements entry (s7.9.2): feature "Transitions".
156
+ class RequirementsTransitions < RequirementsHandler
157
+ arlington_object "RequirementsTransitions"
158
+ end
159
+
160
+ # /Requirements entry (s7.9.2): feature "U3D".
161
+ class RequirementsU3D < RequirementsHandler
162
+ arlington_object "RequirementsU3D"
163
+ end
164
+
165
+ # /Requirements entry (s7.9.2): feature "glTF".
166
+ class RequirementsglTF < RequirementsHandler
167
+ arlington_object "RequirementsglTF"
168
+ end
169
+ end
170
+ end
171
+ end
@@ -330,6 +330,28 @@ module Pdfrb
330
330
  autoload :DestOutputProfileRef, "pdfrb/model/type/misc_helpers"
331
331
  autoload :OutputIntentsContainer, "pdfrb/model/type/misc_helpers"
332
332
  autoload :CMapStream, "pdfrb/model/type/misc_helpers"
333
+ autoload :GammaArray, "pdfrb/model/type/misc_helpers"
334
+ autoload :WhitepointArray, "pdfrb/model/type/misc_helpers"
335
+ autoload :TrailerIDArray, "pdfrb/model/type/misc_helpers"
336
+ autoload :VisibilityExpressionArray, "pdfrb/model/type/misc_helpers"
337
+ autoload :RelatedFilesArray, "pdfrb/model/type/misc_helpers"
338
+ autoload :RichMediaCommandArray, "pdfrb/model/type/misc_helpers"
339
+ autoload :URTransformParamArray, "pdfrb/model/type/misc_helpers"
340
+ autoload :URTransformParamAnnotsArray, "pdfrb/model/type/misc_helpers"
341
+ autoload :URTransformParamEFArray, "pdfrb/model/type/misc_helpers"
342
+ autoload :URTransformParamFormArray, "pdfrb/model/type/misc_helpers"
343
+ autoload :URTransformParamSignatureArray, "pdfrb/model/type/misc_helpers"
344
+ autoload :UniversalArray, "pdfrb/model/type/misc_helpers"
345
+ autoload :UniversalDictionary, "pdfrb/model/type/misc_helpers"
346
+ autoload :OOAdditionalStmsArray, "pdfrb/model/type/misc_helpers"
347
+
348
+ # Stream filter /DecodeParms dictionaries (s7.4).
349
+ autoload :FlateDecodeParms, "pdfrb/model/type/filter_decode_parms"
350
+ autoload :LZWDecodeParms, "pdfrb/model/type/filter_decode_parms"
351
+ autoload :DCTDecodeParms, "pdfrb/model/type/filter_decode_parms"
352
+ autoload :CCITTFaxDecodeParms, "pdfrb/model/type/filter_decode_parms"
353
+ autoload :JBIG2DecodeParms, "pdfrb/model/type/filter_decode_parms"
354
+ autoload :CryptDecodeParms, "pdfrb/model/type/filter_decode_parms"
333
355
 
334
356
  # Explicit destination arrays + maps (s12.3.2).
335
357
  autoload :Destination, "pdfrb/model/type/destination"
@@ -474,6 +496,36 @@ module Pdfrb
474
496
  autoload :AddActionScreenAnnotation, "pdfrb/model/type/add_action_screen_annotation"
475
497
  autoload :AddActionWidgetAnnotation, "pdfrb/model/type/add_action_widget_annotation"
476
498
 
499
+ # Requirements handlers (s7.9.2, Catalog /Requirements).
500
+ autoload :Requirements3DMarkup, "pdfrb/model/type/requirements"
501
+ autoload :RequirementsAcroFormInteract, "pdfrb/model/type/requirements"
502
+ autoload :RequirementsAction, "pdfrb/model/type/requirements"
503
+ autoload :RequirementsAttachment, "pdfrb/model/type/requirements"
504
+ autoload :RequirementsAttachmentEditing, "pdfrb/model/type/requirements"
505
+ autoload :RequirementsCollection, "pdfrb/model/type/requirements"
506
+ autoload :RequirementsCollectionEditing, "pdfrb/model/type/requirements"
507
+ autoload :RequirementsDPartInteract, "pdfrb/model/type/requirements"
508
+ autoload :RequirementsDigSig, "pdfrb/model/type/requirements"
509
+ autoload :RequirementsDigSigMDP, "pdfrb/model/type/requirements"
510
+ autoload :RequirementsDigSigValidation, "pdfrb/model/type/requirements"
511
+ autoload :RequirementsEnableJavaScripts, "pdfrb/model/type/requirements"
512
+ autoload :RequirementsEncryption, "pdfrb/model/type/requirements"
513
+ autoload :RequirementsGeospatial2D, "pdfrb/model/type/requirements"
514
+ autoload :RequirementsGeospatial3D, "pdfrb/model/type/requirements"
515
+ autoload :RequirementsHandler, "pdfrb/model/type/requirements"
516
+ autoload :RequirementsMarkup, "pdfrb/model/type/requirements"
517
+ autoload :RequirementsMultimedia, "pdfrb/model/type/requirements"
518
+ autoload :RequirementsNavigation, "pdfrb/model/type/requirements"
519
+ autoload :RequirementsOCAutoStates, "pdfrb/model/type/requirements"
520
+ autoload :RequirementsOCInteract, "pdfrb/model/type/requirements"
521
+ autoload :RequirementsPRC, "pdfrb/model/type/requirements"
522
+ autoload :RequirementsRichMedia, "pdfrb/model/type/requirements"
523
+ autoload :RequirementsSTEP, "pdfrb/model/type/requirements"
524
+ autoload :RequirementsSeparationSimulation, "pdfrb/model/type/requirements"
525
+ autoload :RequirementsTransitions, "pdfrb/model/type/requirements"
526
+ autoload :RequirementsU3D, "pdfrb/model/type/requirements"
527
+ autoload :RequirementsglTF, "pdfrb/model/type/requirements"
528
+
477
529
  # Border style (s12.5.4). BorderEffect lives in its own file.
478
530
  autoload :BorderStyle, "pdfrb/model/type/border_style"
479
531
  autoload :BorderEffect, "pdfrb/model/type/border_effect"
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.31"
4
+ VERSION = "0.7.33"
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.31
4
+ version: 0.7.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -1036,6 +1036,7 @@ files:
1036
1036
  - lib/pdfrb/model/type/file_spec_rf.rb
1037
1037
  - lib/pdfrb/model/type/file_specification.rb
1038
1038
  - lib/pdfrb/model/type/file_trailer.rb
1039
+ - lib/pdfrb/model/type/filter_decode_parms.rb
1039
1040
  - lib/pdfrb/model/type/font.rb
1040
1041
  - lib/pdfrb/model/type/font_cid_type0.rb
1041
1042
  - lib/pdfrb/model/type/font_cid_type2.rb
@@ -1120,6 +1121,7 @@ files:
1120
1121
  - lib/pdfrb/model/type/projection_annotation.rb
1121
1122
  - lib/pdfrb/model/type/redact_annotation.rb
1122
1123
  - lib/pdfrb/model/type/rendition.rb
1124
+ - lib/pdfrb/model/type/requirements.rb
1123
1125
  - lib/pdfrb/model/type/resources.rb
1124
1126
  - lib/pdfrb/model/type/rich_media_activation.rb
1125
1127
  - lib/pdfrb/model/type/rich_media_animation.rb