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,134 +1,130 @@
1
- =begin
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
+ #
2
20
 
3
- This file is part of Origami, PDF manipulation framework for Ruby
4
- Copyright (C) 2016 Guillaume Delugré.
21
+ module Origami
22
+ class InvalidReferenceError < Error # :nodoc:
23
+ end
5
24
 
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.
25
+ #
26
+ # Class representing a Reference Object.
27
+ # Reference are like symbolic links pointing to a particular object into the file.
28
+ #
29
+ class Reference
30
+ include Origami::Object
31
+ include Comparable
10
32
 
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.
33
+ TOKENS = ["(?<no>\\d+)" + WHITESPACES + "(?<gen>\\d+)" + WHITESPACES + "R"] # :nodoc:
34
+ REGEXP_TOKEN = Regexp.new(TOKENS.first, Regexp::MULTILINE)
35
+ @@regexp = Regexp.new(WHITESPACES + TOKENS.first + WHITESPACES)
15
36
 
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/>.
37
+ attr_accessor :refno, :refgen
18
38
 
19
- =end
39
+ def initialize(refno, refgen)
40
+ super()
20
41
 
21
- module Origami
42
+ @refno, @refgen = refno, refgen
43
+ end
44
+
45
+ def self.parse(stream, _parser = nil) # :nodoc:
46
+ scanner = Parser.init_scanner(stream)
47
+ offset = scanner.pos
48
+
49
+ if scanner.scan(@@regexp).nil?
50
+ raise InvalidReferenceError, "Bad reference to indirect objet format"
51
+ end
22
52
 
23
- class InvalidReferenceError < Error #:nodoc:
53
+ no = scanner['no'].to_i
54
+ gen = scanner['gen'].to_i
55
+
56
+ ref = Reference.new(no, gen)
57
+ ref.file_offset = offset
58
+
59
+ ref
24
60
  end
25
61
 
26
62
  #
27
- # Class representing a Reference Object.
28
- # Reference are like symbolic links pointing to a particular object into the file.
63
+ # Returns the object pointed to by the reference.
64
+ # The reference must be part of a document.
65
+ # Raises an InvalidReferenceError if the object cannot be found.
29
66
  #
30
- class Reference
31
- include Origami::Object
32
- include Comparable
33
-
34
- TOKENS = [ "(?<no>\\d+)" + WHITESPACES + "(?<gen>\\d+)" + WHITESPACES + "R" ] #:nodoc:
35
- REGEXP_TOKEN = Regexp.new(TOKENS.first, Regexp::MULTILINE)
36
- @@regexp = Regexp.new(WHITESPACES + TOKENS.first + WHITESPACES)
37
-
38
- attr_accessor :refno, :refgen
39
-
40
- def initialize(refno, refgen)
41
- super()
42
-
43
- @refno, @refgen = refno, refgen
44
- end
45
-
46
- def self.parse(stream, _parser = nil) #:nodoc:
47
- scanner = Parser.init_scanner(stream)
48
- offset = scanner.pos
49
-
50
- if scanner.scan(@@regexp).nil?
51
- raise InvalidReferenceError, "Bad reference to indirect objet format"
52
- end
53
-
54
- no = scanner['no'].to_i
55
- gen = scanner['gen'].to_i
56
-
57
- ref = Reference.new(no, gen)
58
- ref.file_offset = offset
59
-
60
- ref
61
- end
62
-
63
- #
64
- # Returns the object pointed to by the reference.
65
- # The reference must be part of a document.
66
- # Raises an InvalidReferenceError if the object cannot be found.
67
- #
68
- def follow
69
- doc = self.document
70
-
71
- if doc.nil?
72
- raise InvalidReferenceError, "Not attached to any document"
73
- end
74
-
75
- target = doc.get_object(self)
76
-
77
- if target.nil? and not Origami::OPTIONS[:ignore_bad_references]
78
- raise InvalidReferenceError, "Cannot resolve reference : #{self}"
79
- end
80
-
81
- target or Null.new
82
- end
83
- alias solve follow
84
-
85
- #
86
- # Returns true if the reference points to an object.
87
- #
88
- def valid?
89
- begin
90
- self.solve
91
- true
92
- rescue InvalidReferenceError
93
- false
94
- end
95
- end
96
-
97
- def hash #:nodoc:
98
- self.to_a.hash
99
- end
100
-
101
- def <=>(ref) #:nodoc
102
- self.to_a <=> ref.to_a
103
- end
104
-
105
- #
106
- # Compares to Reference object.
107
- #
108
- def ==(ref)
109
- return false unless ref.is_a?(Reference)
110
-
111
- self.to_a == ref.to_a
112
- end
113
- alias eql? ==
114
-
115
- #
116
- # Returns a Ruby array with the object number and the generation this reference is pointing to.
117
- #
118
- def to_a
119
- [@refno, @refgen]
120
- end
121
-
122
- def to_s(eol: $/) #:nodoc:
123
- super("#{@refno} #{@refgen} R", eol: eol)
124
- end
125
-
126
- #
127
- # Returns the referenced object value.
128
- #
129
- def value
130
- self.solve.value
131
- end
67
+ def follow
68
+ doc = document
69
+
70
+ if doc.nil?
71
+ raise InvalidReferenceError, "Not attached to any document"
72
+ end
73
+
74
+ target = doc.get_object(self)
75
+
76
+ if target.nil? && !Origami::OPTIONS[:ignore_bad_references]
77
+ raise InvalidReferenceError, "Cannot resolve reference : #{self}"
78
+ end
79
+
80
+ target or Null.new
81
+ end
82
+ alias_method :solve, :follow
83
+
84
+ #
85
+ # Returns true if the reference points to an object.
86
+ #
87
+ def valid?
88
+ solve
89
+ true
90
+ rescue InvalidReferenceError
91
+ false
92
+ end
93
+
94
+ def hash # :nodoc:
95
+ to_a.hash
132
96
  end
133
97
 
98
+ def <=>(other) # :nodoc
99
+ to_a <=> other.to_a
100
+ end
101
+
102
+ #
103
+ # Compares to Reference object.
104
+ #
105
+ def ==(other)
106
+ return false unless other.is_a?(Reference)
107
+
108
+ to_a == other.to_a
109
+ end
110
+ alias_method :eql?, :==
111
+
112
+ #
113
+ # Returns a Ruby array with the object number and the generation this reference is pointing to.
114
+ #
115
+ def to_a
116
+ [@refno, @refgen]
117
+ end
118
+
119
+ def to_s(eol: $/) # :nodoc:
120
+ super("#{@refno} #{@refgen} R", eol: eol)
121
+ end
122
+
123
+ #
124
+ # Returns the referenced object value.
125
+ #
126
+ def value
127
+ solve.value
128
+ end
129
+ end
134
130
  end