origami-docspring 2.2.0 → 2.3.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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/examples/attachments/attachment.rb +7 -8
  4. data/examples/attachments/nested_document.rb +6 -5
  5. data/examples/encryption/encryption.rb +5 -4
  6. data/examples/events/events.rb +7 -6
  7. data/examples/flash/flash.rb +10 -9
  8. data/examples/forms/javascript.rb +14 -13
  9. data/examples/forms/xfa.rb +67 -66
  10. data/examples/javascript/hello_world.rb +6 -5
  11. data/examples/javascript/js_emulation.rb +26 -26
  12. data/examples/loop/goto.rb +12 -11
  13. data/examples/loop/named.rb +17 -16
  14. data/examples/signature/signature.rb +11 -11
  15. data/examples/uri/javascript.rb +25 -24
  16. data/examples/uri/open-uri.rb +5 -4
  17. data/examples/uri/submitform.rb +11 -10
  18. data/lib/origami/3d.rb +330 -334
  19. data/lib/origami/acroform.rb +267 -268
  20. data/lib/origami/actions.rb +266 -278
  21. data/lib/origami/annotations.rb +659 -670
  22. data/lib/origami/array.rb +192 -196
  23. data/lib/origami/boolean.rb +66 -70
  24. data/lib/origami/catalog.rb +360 -363
  25. data/lib/origami/collections.rb +132 -133
  26. data/lib/origami/compound.rb +125 -129
  27. data/lib/origami/destinations.rb +226 -237
  28. data/lib/origami/dictionary.rb +155 -154
  29. data/lib/origami/encryption.rb +967 -923
  30. data/lib/origami/extensions/fdf.rb +270 -275
  31. data/lib/origami/extensions/ppklite.rb +323 -328
  32. data/lib/origami/filespec.rb +170 -173
  33. data/lib/origami/filters/ascii.rb +162 -167
  34. data/lib/origami/filters/ccitt/tables.rb +248 -252
  35. data/lib/origami/filters/ccitt.rb +309 -312
  36. data/lib/origami/filters/crypt.rb +31 -34
  37. data/lib/origami/filters/dct.rb +47 -50
  38. data/lib/origami/filters/flate.rb +57 -60
  39. data/lib/origami/filters/jbig2.rb +50 -53
  40. data/lib/origami/filters/jpx.rb +40 -43
  41. data/lib/origami/filters/lzw.rb +151 -155
  42. data/lib/origami/filters/predictors.rb +250 -255
  43. data/lib/origami/filters/runlength.rb +111 -115
  44. data/lib/origami/filters.rb +319 -325
  45. data/lib/origami/font.rb +173 -177
  46. data/lib/origami/functions.rb +62 -66
  47. data/lib/origami/graphics/colors.rb +203 -208
  48. data/lib/origami/graphics/instruction.rb +79 -81
  49. data/lib/origami/graphics/path.rb +141 -144
  50. data/lib/origami/graphics/patterns.rb +156 -160
  51. data/lib/origami/graphics/render.rb +51 -47
  52. data/lib/origami/graphics/state.rb +144 -142
  53. data/lib/origami/graphics/text.rb +185 -188
  54. data/lib/origami/graphics/xobject.rb +818 -804
  55. data/lib/origami/graphics.rb +25 -26
  56. data/lib/origami/header.rb +63 -65
  57. data/lib/origami/javascript.rb +718 -651
  58. data/lib/origami/linearization.rb +284 -285
  59. data/lib/origami/metadata.rb +156 -135
  60. data/lib/origami/name.rb +98 -100
  61. data/lib/origami/null.rb +49 -51
  62. data/lib/origami/numeric.rb +133 -135
  63. data/lib/origami/obfuscation.rb +180 -182
  64. data/lib/origami/object.rb +634 -631
  65. data/lib/origami/optionalcontent.rb +147 -149
  66. data/lib/origami/outline.rb +46 -48
  67. data/lib/origami/outputintents.rb +76 -77
  68. data/lib/origami/page.rb +637 -596
  69. data/lib/origami/parser.rb +214 -221
  70. data/lib/origami/parsers/fdf.rb +44 -45
  71. data/lib/origami/parsers/pdf/lazy.rb +147 -154
  72. data/lib/origami/parsers/pdf/linear.rb +104 -109
  73. data/lib/origami/parsers/pdf.rb +109 -107
  74. data/lib/origami/parsers/ppklite.rb +44 -46
  75. data/lib/origami/pdf.rb +886 -896
  76. data/lib/origami/reference.rb +116 -120
  77. data/lib/origami/signature.rb +617 -625
  78. data/lib/origami/stream.rb +560 -558
  79. data/lib/origami/string.rb +366 -368
  80. data/lib/origami/template/patterns.rb +50 -52
  81. data/lib/origami/template/widgets.rb +111 -114
  82. data/lib/origami/trailer.rb +153 -157
  83. data/lib/origami/tree.rb +55 -57
  84. data/lib/origami/version.rb +19 -19
  85. data/lib/origami/webcapture.rb +87 -90
  86. data/lib/origami/xfa/config.rb +409 -414
  87. data/lib/origami/xfa/connectionset.rb +113 -117
  88. data/lib/origami/xfa/datasets.rb +38 -42
  89. data/lib/origami/xfa/localeset.rb +33 -37
  90. data/lib/origami/xfa/package.rb +49 -52
  91. data/lib/origami/xfa/pdf.rb +54 -59
  92. data/lib/origami/xfa/signature.rb +33 -37
  93. data/lib/origami/xfa/sourceset.rb +34 -38
  94. data/lib/origami/xfa/stylesheet.rb +35 -39
  95. data/lib/origami/xfa/template.rb +1630 -1634
  96. data/lib/origami/xfa/xdc.rb +33 -37
  97. data/lib/origami/xfa/xfa.rb +132 -123
  98. data/lib/origami/xfa/xfdf.rb +34 -38
  99. data/lib/origami/xfa/xmpmeta.rb +34 -38
  100. data/lib/origami/xfa.rb +50 -53
  101. data/lib/origami/xreftable.rb +462 -462
  102. data/lib/origami.rb +37 -38
  103. data/test/test_actions.rb +22 -20
  104. data/test/test_annotations.rb +54 -52
  105. data/test/test_forms.rb +23 -21
  106. data/test/test_native_types.rb +82 -78
  107. data/test/test_object_tree.rb +25 -24
  108. data/test/test_pages.rb +43 -41
  109. data/test/test_pdf.rb +2 -0
  110. data/test/test_pdf_attachment.rb +23 -21
  111. data/test/test_pdf_create.rb +16 -15
  112. data/test/test_pdf_encrypt.rb +69 -66
  113. data/test/test_pdf_parse.rb +131 -129
  114. data/test/test_pdf_parse_lazy.rb +53 -53
  115. data/test/test_pdf_sign.rb +67 -67
  116. data/test/test_streams.rb +145 -143
  117. data/test/test_xrefs.rb +46 -45
  118. metadata +64 -8
@@ -1,181 +1,179 @@
1
- =begin
2
-
3
- This file is part of Origami, PDF manipulation framework for Ruby
4
- Copyright (C) 2016 Guillaume Delugré.
5
-
6
- Origami is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Lesser General Public License as published by
8
- the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- Origami is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Lesser General Public License for more details.
15
-
16
- You should have received a copy of the GNU Lesser General Public License
17
- along with Origami. If not, see <http://www.gnu.org/licenses/>.
18
-
19
- =end
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This file is part of Origami, PDF manipulation framework for Ruby
5
+ # Copyright (C) 2016 Guillaume Delugré.
6
+ #
7
+ # Origami is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # Origami is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with Origami. If not, see <http://www.gnu.org/licenses/>.
19
+ #
20
20
 
21
21
  require 'delegate'
22
22
 
23
23
  module Origami
24
+ class InvalidIntegerObjectError < InvalidObjectError # :nodoc:
25
+ end
24
26
 
25
- class InvalidIntegerObjectError < InvalidObjectError #:nodoc:
27
+ #
28
+ # Class representing a PDF number (Integer, or Real).
29
+ #
30
+ module Number
31
+ include Origami::Object
32
+
33
+ def ~
34
+ self.class.new(~value)
26
35
  end
27
36
 
28
- #
29
- # Class representing a PDF number (Integer, or Real).
30
- #
31
- module Number
32
- include Origami::Object
37
+ def |(other)
38
+ self.class.new(value | other)
39
+ end
33
40
 
34
- def ~
35
- self.class.new(~self.value)
36
- end
41
+ def &(other)
42
+ self.class.new(value & other)
43
+ end
37
44
 
38
- def |(val)
39
- self.class.new(self.value | val)
40
- end
45
+ def ^(other)
46
+ self.class.new(value ^ other)
47
+ end
41
48
 
42
- def &(val)
43
- self.class.new(self.value & val)
44
- end
49
+ def <<(val)
50
+ self.class.new(value << val)
51
+ end
45
52
 
46
- def ^(val)
47
- self.class.new(self.value ^ val)
48
- end
53
+ def >>(other)
54
+ self.class.new(value >> other)
55
+ end
49
56
 
50
- def <<(val)
51
- self.class.new(self.value << val)
52
- end
57
+ def +(other)
58
+ self.class.new(value + other)
59
+ end
53
60
 
54
- def >>(val)
55
- self.class.new(self.value >> val)
56
- end
61
+ def -(other)
62
+ self.class.new(value - other)
63
+ end
57
64
 
58
- def +(val)
59
- self.class.new(self.value + val)
60
- end
65
+ def -@
66
+ self.class.new(-value)
67
+ end
61
68
 
62
- def -(val)
63
- self.class.new(self.value - val)
64
- end
69
+ def *(other)
70
+ self.class.new(value * other)
71
+ end
65
72
 
66
- def -@
67
- self.class.new(-self.value)
68
- end
73
+ def /(other)
74
+ self.class.new(value / other)
75
+ end
69
76
 
70
- def *(val)
71
- self.class.new(self.value * val)
72
- end
77
+ def abs
78
+ self.class.new(value.abs)
79
+ end
73
80
 
74
- def /(val)
75
- self.class.new(self.value / val)
76
- end
81
+ def **(other)
82
+ self.class.new(value**other)
83
+ end
84
+ end
77
85
 
78
- def abs
79
- self.class.new(self.value.abs)
80
- end
86
+ #
87
+ # Class representing an Integer Object.
88
+ #
89
+ class Integer < DelegateClass(::Integer)
90
+ include Number
81
91
 
82
- def **(val)
83
- self.class.new(self.value ** val)
84
- end
85
- end
92
+ TOKENS = ["(\\+|-)?[\\d]+[^.]?"] # :nodoc:
93
+ REGEXP_TOKEN = Regexp.new(TOKENS.first)
94
+
95
+ @@regexp = Regexp.new(WHITESPACES + "(?<int>(\\+|-)?[\\d]+)")
86
96
 
87
97
  #
88
- # Class representing an Integer Object.
98
+ # Creates a new Integer from a Ruby Fixnum / Bignum.
99
+ # _i_:: The Integer value.
89
100
  #
90
- class Integer < DelegateClass(::Integer)
91
- include Number
101
+ def initialize(i = 0)
102
+ unless i.is_a?(::Integer)
103
+ raise TypeError, "Expected type Fixnum or Bignum, received #{i.class}."
104
+ end
92
105
 
93
- TOKENS = [ "(\\+|-)?[\\d]+[^.]?" ] #:nodoc:
94
- REGEXP_TOKEN = Regexp.new(TOKENS.first)
106
+ super
107
+ end
95
108
 
96
- @@regexp = Regexp.new(WHITESPACES + "(?<int>(\\+|-)?[\\d]+)")
109
+ def self.parse(stream, _parser = nil) # :nodoc:
110
+ scanner = Parser.init_scanner(stream)
111
+ offset = scanner.pos
97
112
 
98
- #
99
- # Creates a new Integer from a Ruby Fixnum / Bignum.
100
- # _i_:: The Integer value.
101
- #
102
- def initialize(i = 0)
103
- unless i.is_a?(::Integer)
104
- raise TypeError, "Expected type Fixnum or Bignum, received #{i.class}."
105
- end
113
+ if !scanner.scan(@@regexp)
114
+ raise InvalidIntegerObjectError, "Invalid integer format"
115
+ end
106
116
 
107
- super(i)
108
- end
117
+ value = scanner['int'].to_i
118
+ int = Integer.new(value)
119
+ int.file_offset = offset
109
120
 
110
- def self.parse(stream, _parser = nil) #:nodoc:
111
- scanner = Parser.init_scanner(stream)
112
- offset = scanner.pos
121
+ int
122
+ end
113
123
 
114
- if not scanner.scan(@@regexp)
115
- raise InvalidIntegerObjectError, "Invalid integer format"
116
- end
124
+ def to_s(eol: $/) # :nodoc:
125
+ super(value.to_s, eol: eol)
126
+ end
117
127
 
118
- value = scanner['int'].to_i
119
- int = Integer.new(value)
120
- int.file_offset = offset
128
+ alias_method :value, :to_i
129
+ end
121
130
 
122
- int
123
- end
131
+ class InvalidRealObjectError < InvalidObjectError # :nodoc:
132
+ end
124
133
 
125
- def to_s(eol: $/) #:nodoc:
126
- super(self.value.to_s, eol: eol)
127
- end
134
+ #
135
+ # Class representing a Real number Object.
136
+ # PDF real numbers are arbitrary precision numbers, depending on architectures.
137
+ #
138
+ class Real < DelegateClass(Float)
139
+ include Number
128
140
 
129
- alias value to_i
130
- end
141
+ TOKENS = ["(\\+|-)?([\\d]*\\.[\\d]+|[\\d]+\\.[\\d]*)([eE](\\+|-)?[\\d]+)?"] # :nodoc:
142
+ REGEXP_TOKEN = Regexp.new(TOKENS.first)
131
143
 
132
- class InvalidRealObjectError < InvalidObjectError #:nodoc:
133
- end
144
+ @@regexp = Regexp.new(WHITESPACES + "(?<real>#{TOKENS.first})")
134
145
 
135
146
  #
136
- # Class representing a Real number Object.
137
- # PDF real numbers are arbitrary precision numbers, depending on architectures.
147
+ # Creates a new Real from a Ruby Float.
148
+ # _f_:: The new Real value.
138
149
  #
139
- class Real < DelegateClass(Float)
140
- include Number
141
-
142
- TOKENS = [ "(\\+|-)?([\\d]*\\.[\\d]+|[\\d]+\\.[\\d]*)([eE](\\+|-)?[\\d]+)?" ] #:nodoc:
143
- REGEXP_TOKEN = Regexp.new(TOKENS.first)
144
-
145
- @@regexp = Regexp.new(WHITESPACES + "(?<real>#{TOKENS.first})")
150
+ def initialize(f = 0)
151
+ unless f.is_a?(Float)
152
+ raise TypeError, "Expected type Float, received #{f.class}."
153
+ end
146
154
 
147
- #
148
- # Creates a new Real from a Ruby Float.
149
- # _f_:: The new Real value.
150
- #
151
- def initialize(f = 0)
152
- unless f.is_a?(Float)
153
- raise TypeError, "Expected type Float, received #{f.class}."
154
- end
155
-
156
- super(f)
157
- end
155
+ super
156
+ end
158
157
 
159
- def self.parse(stream, _parser = nil) #:nodoc:
160
- scanner = Parser.init_scanner(stream)
161
- offset = scanner.pos
158
+ def self.parse(stream, _parser = nil) # :nodoc:
159
+ scanner = Parser.init_scanner(stream)
160
+ offset = scanner.pos
162
161
 
163
- if not scanner.scan(@@regexp)
164
- raise InvalidRealObjectError, "Invalid real number format"
165
- end
162
+ if !scanner.scan(@@regexp)
163
+ raise InvalidRealObjectError, "Invalid real number format"
164
+ end
166
165
 
167
- value = scanner['real'].to_f
168
- real = Real.new(value)
169
- real.file_offset = offset
166
+ value = scanner['real'].to_f
167
+ real = Real.new(value)
168
+ real.file_offset = offset
170
169
 
171
- real
172
- end
170
+ real
171
+ end
173
172
 
174
- alias value to_f
173
+ alias_method :value, :to_f
175
174
 
176
- def to_s(eol: $/) #:nodoc:
177
- super(sprintf("%f", self).sub(/\.0*$|(\.\d*[^0])0*$/, '\1'), eol: eol)
178
- end
175
+ def to_s(eol: $/) # :nodoc:
176
+ super(sprintf("%f", self).sub(/\.0*$|(\.\d*[^0])0*$/, '\1'), eol: eol)
179
177
  end
180
-
178
+ end
181
179
  end