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,38 +1,35 @@
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
  module Origami
22
-
23
- module Filter
24
-
25
- module Crypt
26
-
27
- #
28
- # Parameters for a Crypt Filter.
29
- #
30
- class DecodeParms < Dictionary
31
- include StandardObject
32
-
33
- field :Type, :Type => Name, :Default => :CryptFilterDecodeParms
34
- field :Name, :Type => Name, :Default => :Identity
35
- end
36
- end
22
+ module Filter
23
+ module Crypt
24
+ #
25
+ # Parameters for a Crypt Filter.
26
+ #
27
+ class DecodeParms < Dictionary
28
+ include StandardObject
29
+
30
+ field :Type, Type: Name, Default: :CryptFilterDecodeParms
31
+ field :Name, Type: Name, Default: :Identity
32
+ end
37
33
  end
34
+ end
38
35
  end
@@ -1,54 +1,51 @@
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
  module Origami
22
-
23
- module Filter
24
-
25
- #
26
- # Class representing a Filter used to encode and decode data with DCT (JPEG) compression algorithm.
27
- #
28
- class DCT
29
- include Filter
30
-
31
- class DecodeParms < Dictionary
32
- include StandardObject
33
-
34
- field :ColorTransform, :Type => Integer
35
- end
36
-
37
- def initialize(parameters = {})
38
- super(DecodeParms.new(parameters))
39
- end
40
-
41
- def encode(stream)
42
- raise NotImplementedError.new("DCT filter is not supported", input_data: stream)
43
- end
44
-
45
- #
46
- # DCTDecode implies that data is a JPEG image container.
47
- #
48
- def decode(stream)
49
- raise NotImplementedError.new("DCT filter is not supported", input_data: stream)
50
- end
51
- end
52
-
22
+ module Filter
23
+ #
24
+ # Class representing a Filter used to encode and decode data with DCT (JPEG) compression algorithm.
25
+ #
26
+ class DCT
27
+ include Filter
28
+
29
+ class DecodeParms < Dictionary
30
+ include StandardObject
31
+
32
+ field :ColorTransform, Type: Integer
33
+ end
34
+
35
+ def initialize(parameters = {})
36
+ super(DecodeParms.new(parameters))
37
+ end
38
+
39
+ def encode(stream)
40
+ raise NotImplementedError.new("DCT filter is not supported", input_data: stream)
41
+ end
42
+
43
+ #
44
+ # DCTDecode implies that data is a JPEG image container.
45
+ #
46
+ def decode(stream)
47
+ raise NotImplementedError.new("DCT filter is not supported", input_data: stream)
48
+ end
53
49
  end
50
+ end
54
51
  end
@@ -1,69 +1,66 @@
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 'zlib'
22
22
  require 'origami/filters/predictors'
23
23
 
24
24
  module Origami
25
-
26
- module Filter
27
-
28
- class InvalidFlateDataError < DecodeError; end #:nodoc:
29
-
30
- #
31
- # Class representing a Filter used to encode and decode data with zlib/Flate compression algorithm.
32
- #
33
- class Flate
34
- include Filter
35
- include Predictor
36
-
37
- EOD = 257 #:nodoc:
38
-
39
- #
40
- # Encodes data using zlib/Deflate compression method.
41
- # _stream_:: The data to encode.
42
- #
43
- def encode(stream)
44
- Zlib::Deflate.deflate(pre_prediction(stream), Zlib::BEST_COMPRESSION)
45
- end
46
-
47
- #
48
- # Decodes data using zlib/Inflate decompression method.
49
- # _stream_:: The data to decode.
50
- #
51
- def decode(stream)
52
- zlib_stream = Zlib::Inflate.new
53
- begin
54
- uncompressed = zlib_stream.inflate(stream)
55
- rescue Zlib::DataError => zlib_except
56
- uncompressed = zlib_stream.flush_next_out
57
-
58
- unless Origami::OPTIONS[:ignore_zlib_errors]
59
- raise InvalidFlateDataError.new(zlib_except.message, input_data: stream, decoded_data: uncompressed)
60
- end
61
- end
62
-
63
- post_prediction(uncompressed)
64
- end
25
+ module Filter
26
+ class InvalidFlateDataError < DecodeError; end # :nodoc:
27
+
28
+ #
29
+ # Class representing a Filter used to encode and decode data with zlib/Flate compression algorithm.
30
+ #
31
+ class Flate
32
+ include Filter
33
+ include Predictor
34
+
35
+ EOD = 257 # :nodoc:
36
+
37
+ #
38
+ # Encodes data using zlib/Deflate compression method.
39
+ # _stream_:: The data to encode.
40
+ #
41
+ def encode(stream)
42
+ Zlib::Deflate.deflate(pre_prediction(stream), Zlib::BEST_COMPRESSION)
43
+ end
44
+
45
+ #
46
+ # Decodes data using zlib/Inflate decompression method.
47
+ # _stream_:: The data to decode.
48
+ #
49
+ def decode(stream)
50
+ zlib_stream = Zlib::Inflate.new
51
+ begin
52
+ uncompressed = zlib_stream.inflate(stream)
53
+ rescue Zlib::DataError => zlib_except
54
+ uncompressed = zlib_stream.flush_next_out
55
+
56
+ unless Origami::OPTIONS[:ignore_zlib_errors]
57
+ raise InvalidFlateDataError.new(zlib_except.message, input_data: stream, decoded_data: uncompressed)
58
+ end
65
59
  end
66
- Fl = Flate
67
60
 
61
+ post_prediction(uncompressed)
62
+ end
68
63
  end
64
+ Fl = Flate
65
+ end
69
66
  end
@@ -1,57 +1,54 @@
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
  module Origami
22
-
23
- module Filter
24
-
25
- #
26
- # Class representing a Filter used to encode and decode data with JBIG2 compression algorithm.
27
- #
28
- class JBIG2
29
- include Filter
30
-
31
- class DecodeParms < Dictionary
32
- include StandardObject
33
-
34
- field :JBIG2Globals, :Type => Stream
35
- end
36
-
37
- def initialize(parameters = {})
38
- super(DecodeParms.new(parameters))
39
- end
40
-
41
- #
42
- # Not supported.
43
- #
44
- def encode(stream)
45
- raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
46
- end
47
-
48
- #
49
- # Not supported.
50
- #
51
- def decode(stream)
52
- raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
53
- end
54
- end
55
-
22
+ module Filter
23
+ #
24
+ # Class representing a Filter used to encode and decode data with JBIG2 compression algorithm.
25
+ #
26
+ class JBIG2
27
+ include Filter
28
+
29
+ class DecodeParms < Dictionary
30
+ include StandardObject
31
+
32
+ field :JBIG2Globals, Type: Stream
33
+ end
34
+
35
+ def initialize(parameters = {})
36
+ super(DecodeParms.new(parameters))
37
+ end
38
+
39
+ #
40
+ # Not supported.
41
+ #
42
+ def encode(stream)
43
+ raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
44
+ end
45
+
46
+ #
47
+ # Not supported.
48
+ #
49
+ def decode(stream)
50
+ raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
51
+ end
56
52
  end
53
+ end
57
54
  end
@@ -1,47 +1,44 @@
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
  module Origami
22
-
23
- module Filter
24
-
25
- #
26
- # Class representing a Filter used to encode and decode data with JPX compression algorithm.
27
- #
28
- class JPX
29
- include Filter
30
-
31
- #
32
- # Not supported.
33
- #
34
- def encode(stream)
35
- raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
36
- end
37
-
38
- #
39
- # Not supported.
40
- #
41
- def decode(stream)
42
- raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
43
- end
44
- end
45
-
22
+ module Filter
23
+ #
24
+ # Class representing a Filter used to encode and decode data with JPX compression algorithm.
25
+ #
26
+ class JPX
27
+ include Filter
28
+
29
+ #
30
+ # Not supported.
31
+ #
32
+ def encode(stream)
33
+ raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
34
+ end
35
+
36
+ #
37
+ # Not supported.
38
+ #
39
+ def decode(stream)
40
+ raise NotImplementedError.new("#{self.class} is not yet supported", input_data: stream)
41
+ end
46
42
  end
43
+ end
47
44
  end