origami 1.2.7 → 2.0.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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -0
  3. data/README.md +112 -0
  4. data/bin/config/pdfcop.conf.yml +232 -233
  5. data/bin/gui/about.rb +27 -37
  6. data/bin/gui/config.rb +108 -117
  7. data/bin/gui/file.rb +416 -365
  8. data/bin/gui/gtkhex.rb +1138 -1153
  9. data/bin/gui/hexview.rb +55 -57
  10. data/bin/gui/imgview.rb +48 -51
  11. data/bin/gui/menu.rb +388 -386
  12. data/bin/gui/properties.rb +114 -130
  13. data/bin/gui/signing.rb +571 -617
  14. data/bin/gui/textview.rb +77 -95
  15. data/bin/gui/treeview.rb +382 -387
  16. data/bin/gui/walker.rb +227 -232
  17. data/bin/gui/xrefs.rb +56 -60
  18. data/bin/pdf2pdfa +53 -57
  19. data/bin/pdf2ruby +212 -228
  20. data/bin/pdfcop +338 -348
  21. data/bin/pdfdecompress +58 -65
  22. data/bin/pdfdecrypt +56 -60
  23. data/bin/pdfencrypt +75 -80
  24. data/bin/pdfexplode +185 -182
  25. data/bin/pdfextract +201 -218
  26. data/bin/pdfmetadata +83 -82
  27. data/bin/pdfsh +4 -5
  28. data/bin/pdfwalker +1 -2
  29. data/bin/shell/.irbrc +45 -82
  30. data/bin/shell/console.rb +105 -130
  31. data/bin/shell/hexdump.rb +40 -64
  32. data/examples/README.md +34 -0
  33. data/examples/attachments/attachment.rb +38 -0
  34. data/examples/attachments/nested_document.rb +51 -0
  35. data/examples/encryption/encryption.rb +28 -0
  36. data/{samples/actions/triggerevents/trigger.rb → examples/events/events.rb} +13 -16
  37. data/examples/flash/flash.rb +37 -0
  38. data/{samples → examples}/flash/helloworld.swf +0 -0
  39. data/examples/forms/javascript.rb +54 -0
  40. data/examples/forms/xfa.rb +115 -0
  41. data/examples/javascript/hello_world.rb +22 -0
  42. data/examples/javascript/js_emulation.rb +54 -0
  43. data/examples/loop/goto.rb +32 -0
  44. data/examples/loop/named.rb +33 -0
  45. data/examples/signature/signature.rb +65 -0
  46. data/examples/uri/javascript.rb +56 -0
  47. data/examples/uri/open-uri.rb +21 -0
  48. data/examples/uri/submitform.rb +47 -0
  49. data/lib/origami.rb +29 -42
  50. data/lib/origami/3d.rb +350 -225
  51. data/lib/origami/acroform.rb +262 -288
  52. data/lib/origami/actions.rb +268 -288
  53. data/lib/origami/annotations.rb +697 -722
  54. data/lib/origami/array.rb +258 -184
  55. data/lib/origami/boolean.rb +74 -84
  56. data/lib/origami/catalog.rb +397 -434
  57. data/lib/origami/collections.rb +144 -0
  58. data/lib/origami/destinations.rb +233 -194
  59. data/lib/origami/dictionary.rb +253 -232
  60. data/lib/origami/encryption.rb +1274 -1243
  61. data/lib/origami/export.rb +232 -268
  62. data/lib/origami/extensions/fdf.rb +307 -220
  63. data/lib/origami/extensions/ppklite.rb +368 -435
  64. data/lib/origami/filespec.rb +197 -0
  65. data/lib/origami/filters.rb +301 -295
  66. data/lib/origami/filters/ascii.rb +177 -180
  67. data/lib/origami/filters/ccitt.rb +528 -535
  68. data/lib/origami/filters/crypt.rb +26 -35
  69. data/lib/origami/filters/dct.rb +46 -52
  70. data/lib/origami/filters/flate.rb +95 -94
  71. data/lib/origami/filters/jbig2.rb +49 -55
  72. data/lib/origami/filters/jpx.rb +38 -44
  73. data/lib/origami/filters/lzw.rb +189 -183
  74. data/lib/origami/filters/predictors.rb +221 -235
  75. data/lib/origami/filters/runlength.rb +103 -104
  76. data/lib/origami/font.rb +173 -186
  77. data/lib/origami/functions.rb +67 -81
  78. data/lib/origami/graphics.rb +25 -21
  79. data/lib/origami/graphics/colors.rb +178 -187
  80. data/lib/origami/graphics/instruction.rb +79 -85
  81. data/lib/origami/graphics/path.rb +142 -148
  82. data/lib/origami/graphics/patterns.rb +160 -167
  83. data/lib/origami/graphics/render.rb +43 -50
  84. data/lib/origami/graphics/state.rb +138 -153
  85. data/lib/origami/graphics/text.rb +188 -205
  86. data/lib/origami/graphics/xobject.rb +819 -815
  87. data/lib/origami/header.rb +63 -78
  88. data/lib/origami/javascript.rb +596 -597
  89. data/lib/origami/linearization.rb +285 -290
  90. data/lib/origami/metadata.rb +139 -148
  91. data/lib/origami/name.rb +112 -148
  92. data/lib/origami/null.rb +53 -62
  93. data/lib/origami/numeric.rb +162 -175
  94. data/lib/origami/obfuscation.rb +186 -174
  95. data/lib/origami/object.rb +593 -573
  96. data/lib/origami/outline.rb +42 -47
  97. data/lib/origami/outputintents.rb +73 -82
  98. data/lib/origami/page.rb +703 -592
  99. data/lib/origami/parser.rb +238 -290
  100. data/lib/origami/parsers/fdf.rb +41 -33
  101. data/lib/origami/parsers/pdf.rb +75 -95
  102. data/lib/origami/parsers/pdf/lazy.rb +137 -0
  103. data/lib/origami/parsers/pdf/linear.rb +64 -66
  104. data/lib/origami/parsers/ppklite.rb +34 -70
  105. data/lib/origami/pdf.rb +1030 -1005
  106. data/lib/origami/reference.rb +102 -102
  107. data/lib/origami/signature.rb +591 -609
  108. data/lib/origami/stream.rb +668 -551
  109. data/lib/origami/string.rb +397 -373
  110. data/lib/origami/template/patterns.rb +56 -0
  111. data/lib/origami/template/widgets.rb +151 -0
  112. data/lib/origami/trailer.rb +144 -158
  113. data/lib/origami/tree.rb +62 -0
  114. data/lib/origami/version.rb +23 -0
  115. data/lib/origami/webcapture.rb +88 -79
  116. data/lib/origami/xfa.rb +2863 -2882
  117. data/lib/origami/xreftable.rb +472 -384
  118. data/test/dataset/calc.pdf +85 -0
  119. data/test/dataset/crypto.pdf +82 -0
  120. data/test/dataset/empty.pdf +49 -0
  121. data/test/test_actions.rb +27 -0
  122. data/test/test_annotations.rb +90 -0
  123. data/test/test_pages.rb +31 -0
  124. data/test/test_pdf.rb +16 -0
  125. data/test/test_pdf_attachment.rb +34 -0
  126. data/test/test_pdf_create.rb +24 -0
  127. data/test/test_pdf_encrypt.rb +95 -0
  128. data/test/test_pdf_parse.rb +96 -0
  129. data/test/test_pdf_sign.rb +58 -0
  130. data/test/test_streams.rb +182 -0
  131. data/test/test_xrefs.rb +67 -0
  132. metadata +88 -58
  133. data/README +0 -67
  134. data/bin/pdf2graph +0 -121
  135. data/bin/pdfcocoon +0 -104
  136. data/lib/origami/file.rb +0 -233
  137. data/samples/README.txt +0 -45
  138. data/samples/actions/launch/calc.rb +0 -87
  139. data/samples/actions/launch/winparams.rb +0 -22
  140. data/samples/actions/loop/loopgoto.rb +0 -24
  141. data/samples/actions/loop/loopnamed.rb +0 -21
  142. data/samples/actions/named/named.rb +0 -31
  143. data/samples/actions/samba/smbrelay.rb +0 -26
  144. data/samples/actions/webbug/submitform.js +0 -26
  145. data/samples/actions/webbug/webbug-browser.rb +0 -68
  146. data/samples/actions/webbug/webbug-js.rb +0 -67
  147. data/samples/actions/webbug/webbug-reader.rb +0 -90
  148. data/samples/attachments/attach.rb +0 -40
  149. data/samples/attachments/attached.txt +0 -1
  150. data/samples/crypto/crypto.rb +0 -28
  151. data/samples/digsig/signed.rb +0 -46
  152. data/samples/exploits/cve-2008-2992-utilprintf.rb +0 -87
  153. data/samples/exploits/cve-2009-0927-geticon.rb +0 -65
  154. data/samples/exploits/exploit_customdictopen.rb +0 -55
  155. data/samples/exploits/getannots.rb +0 -69
  156. data/samples/flash/flash.rb +0 -31
  157. data/samples/javascript/attached.txt +0 -1
  158. data/samples/javascript/js.rb +0 -52
  159. data/templates/patterns.rb +0 -66
  160. data/templates/widgets.rb +0 -173
  161. data/templates/xdp.rb +0 -92
  162. data/test/ts_pdf.rb +0 -50
@@ -1,47 +1,38 @@
1
1
  =begin
2
2
 
3
- = File
4
- filters/crypt.rb
5
-
6
- = Info
7
- This file is part of Origami, PDF manipulation framework for Ruby
8
- Copyright (C) 2010 Guillaume Delugré <guillaume AT security-labs DOT org>
9
- All right reserved.
10
-
11
- Origami is free software: you can redistribute it and/or modify
12
- it under the terms of the GNU Lesser General Public License as published by
13
- the Free Software Foundation, either version 3 of the License, or
14
- (at your option) any later version.
15
-
16
- Origami is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU Lesser General Public License for more details.
20
-
21
- You should have received a copy of the GNU Lesser General Public License
22
- along with Origami. If not, see <http://www.gnu.org/licenses/>.
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/>.
23
18
 
24
19
  =end
25
20
 
26
21
  module Origami
27
22
 
28
- module Filter
23
+ module Filter
29
24
 
30
- #
31
- # Class representing a Crypt Filter.
32
- # TODO.
33
- #
34
- class Crypt
35
- include Filter
25
+ module Crypt
36
26
 
37
- class DecodeParms < Dictionary
38
- include StandardObject
27
+ #
28
+ # Parameters for a Crypt Filter.
29
+ #
30
+ class DecodeParms < Dictionary
31
+ include StandardObject
39
32
 
40
- field :Type, :Type => Name, :Default => :Crypt
41
- field :Name, :Type => Name, :Default => :Identity
42
- end
33
+ field :Type, :Type => Name, :Default => :Crypt
34
+ field :Name, :Type => Name, :Default => :Identity
35
+ end
36
+ end
43
37
  end
44
-
45
- end
46
38
  end
47
-
@@ -1,61 +1,55 @@
1
1
  =begin
2
2
 
3
- = File
4
- filters/dct.rb
5
-
6
- = Info
7
- This file is part of Origami, PDF manipulation framework for Ruby
8
- Copyright (C) 2010 Guillaume Delugré <guillaume AT security-labs DOT org>
9
- All right reserved.
10
-
11
- Origami is free software: you can redistribute it and/or modify
12
- it under the terms of the GNU Lesser General Public License as published by
13
- the Free Software Foundation, either version 3 of the License, or
14
- (at your option) any later version.
15
-
16
- Origami is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU Lesser General Public License for more details.
20
-
21
- You should have received a copy of the GNU Lesser General Public License
22
- along with Origami. If not, see <http://www.gnu.org/licenses/>.
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/>.
23
18
 
24
19
  =end
25
20
 
26
21
  module Origami
27
-
28
- module Filter
29
-
30
- #
31
- # Class representing a Filter used to encode and decode data with DCT (JPEG) compression algorithm.
32
- #
33
- class DCT
34
- include Filter
35
-
36
- class DecodeParms < Dictionary
37
- include StandardObject
38
-
39
- field :ColorTransform, :Type => Integer
40
- end
41
-
42
- def initialize(parameters = {})
43
- super(DecodeParms.new(parameters))
44
- end
45
-
46
- def encode(stream)
47
- stream
48
- end
49
-
50
- #
51
- # DCTDecode implies that data is a JPEG image container.
52
- # Just returns the raw JPEG image as is.
53
- #
54
- def decode(stream)
55
- stream
56
- end
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
+
57
53
  end
58
-
59
- end
60
54
  end
61
55
 
@@ -1,25 +1,20 @@
1
1
  =begin
2
2
 
3
- = File
4
- filters/flate.rb
5
-
6
- = Info
7
- This file is part of Origami, PDF manipulation framework for Ruby
8
- Copyright (C) 2010 Guillaume Delugré <guillaume AT security-labs DOT org>
9
- All right reserved.
10
-
11
- Origami is free software: you can redistribute it and/or modify
12
- it under the terms of the GNU Lesser General Public License as published by
13
- the Free Software Foundation, either version 3 of the License, or
14
- (at your option) any later version.
15
-
16
- Origami is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU Lesser General Public License for more details.
20
-
21
- You should have received a copy of the GNU Lesser General Public License
22
- along with Origami. If not, see <http://www.gnu.org/licenses/>.
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/>.
23
18
 
24
19
  =end
25
20
 
@@ -27,82 +22,88 @@ require 'zlib'
27
22
  require 'origami/filters/predictors'
28
23
 
29
24
  module Origami
30
-
31
- module Filter
32
-
33
- class InvalidFlateDataError < InvalidFilterDataError; end #:nodoc:
34
-
35
- #
36
- # Class representing a Filter used to encode and decode data with zlib/Flate compression algorithm.
37
- #
38
- class Flate
39
- include Filter
40
-
41
- EOD = 257 #:nodoc:
42
-
43
- class DecodeParms < Dictionary
44
- include StandardObject
45
-
46
- field :Predictor, :Type => Integer, :Default => 1
47
- field :Colors, :Type => Integer, :Default => 1
48
- field :BitsPerComponent, :Type => Integer, :Default => 8
49
- field :Columns, :Type => Integer, :Default => 1
50
- end
51
-
52
- #
53
- # Create a new Flate Filter.
54
- # _parameters_:: A hash of filter options (ignored).
55
- #
56
- def initialize(parameters = {})
57
- super(DecodeParms.new(parameters))
58
- end
59
-
60
- #
61
- # Encodes data using zlib/Deflate compression method.
62
- # _stream_:: The data to encode.
63
- #
64
- def encode(stream)
65
- if @params.Predictor.is_a?(Integer)
66
- colors = @params.Colors.is_a?(Integer) ? @params.Colors.to_i : 1
67
- bpc = @params.BitsPerComponent.is_a?(Integer) ? @params.BitsPerComponent.to_i : 8
68
- columns = @params.Columns.is_a?(Integer) ? @params.Columns.to_i : 1
69
-
70
- stream = Predictor.do_pre_prediction(stream, @params.Predictor.to_i, colors, bpc, columns)
71
- end
72
-
73
- Zlib::Deflate.deflate(stream, Zlib::BEST_COMPRESSION)
74
- end
75
-
76
- #
77
- # Decodes data using zlib/Inflate decompression method.
78
- # _stream_:: The data to decode.
79
- #
80
- def decode(stream)
81
-
82
- zlib_stream = Zlib::Inflate.new
83
- begin
84
- uncompressed = zlib_stream.inflate(stream)
85
- rescue Zlib::DataError => zlib_except
86
- uncompressed = zlib_stream.flush_next_out
87
-
88
- unless Origami::OPTIONS[:ignore_zlib_errors]
89
- raise InvalidFlateDataError.new(zlib_except.message, uncompressed)
90
- end
91
- end
92
25
 
93
- if @params.Predictor.is_a?(Integer)
94
- colors = @params.Colors.is_a?(Integer) ? @params.Colors.to_i : 1
95
- bpc = @params.BitsPerComponent.is_a?(Integer) ? @params.BitsPerComponent.to_i : 8
96
- columns = @params.Columns.is_a?(Integer) ? @params.Columns.to_i : 1
97
-
98
- uncompressed = Predictor.do_post_prediction(uncompressed, @params.Predictor.to_i, colors, bpc, columns)
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
+
36
+ EOD = 257 #:nodoc:
37
+
38
+ class DecodeParms < Dictionary
39
+ include StandardObject
40
+
41
+ field :Predictor, :Type => Integer, :Default => 1
42
+ field :Colors, :Type => Integer, :Default => 1
43
+ field :BitsPerComponent, :Type => Integer, :Default => 8
44
+ field :Columns, :Type => Integer, :Default => 1
45
+ end
46
+
47
+ #
48
+ # Create a new Flate Filter.
49
+ # _parameters_:: A hash of filter options (ignored).
50
+ #
51
+ def initialize(parameters = {})
52
+ super(DecodeParms.new(parameters))
53
+ end
54
+
55
+ #
56
+ # Encodes data using zlib/Deflate compression method.
57
+ # _stream_:: The data to encode.
58
+ #
59
+ def encode(stream)
60
+ if @params.Predictor.is_a?(Integer)
61
+ colors = @params.Colors.is_a?(Integer) ? @params.Colors.to_i : 1
62
+ bpc = @params.BitsPerComponent.is_a?(Integer) ? @params.BitsPerComponent.to_i : 8
63
+ columns = @params.Columns.is_a?(Integer) ? @params.Columns.to_i : 1
64
+
65
+ stream = Predictor.do_pre_prediction(stream,
66
+ predictor: @params.Predictor.to_i,
67
+ colors: colors,
68
+ bpc: bpc,
69
+ columns: columns)
70
+ end
71
+
72
+ Zlib::Deflate.deflate(stream, Zlib::BEST_COMPRESSION)
73
+ end
74
+
75
+ #
76
+ # Decodes data using zlib/Inflate decompression method.
77
+ # _stream_:: The data to decode.
78
+ #
79
+ def decode(stream)
80
+ zlib_stream = Zlib::Inflate.new
81
+ begin
82
+ uncompressed = zlib_stream.inflate(stream)
83
+ rescue Zlib::DataError => zlib_except
84
+ uncompressed = zlib_stream.flush_next_out
85
+
86
+ unless Origami::OPTIONS[:ignore_zlib_errors]
87
+ raise InvalidFlateDataError.new(zlib_except.message, input_data: stream, decoded_data: uncompressed)
88
+ end
89
+ end
90
+
91
+ if @params.Predictor.is_a?(Integer)
92
+ colors = @params.Colors.is_a?(Integer) ? @params.Colors.to_i : 1
93
+ bpc = @params.BitsPerComponent.is_a?(Integer) ? @params.BitsPerComponent.to_i : 8
94
+ columns = @params.Columns.is_a?(Integer) ? @params.Columns.to_i : 1
95
+
96
+ uncompressed = Predictor.do_post_prediction(uncompressed,
97
+ predictor: @params.Predictor.to_i,
98
+ colors: colors,
99
+ bpc: bpc,
100
+ columns: columns)
101
+ end
102
+
103
+ uncompressed
104
+ end
99
105
  end
100
-
101
- uncompressed
102
- end
106
+ Fl = Flate
103
107
 
104
108
  end
105
- Fl = Flate
106
- end
107
109
  end
108
-
@@ -1,63 +1,57 @@
1
1
  =begin
2
2
 
3
- = File
4
- filters/jbig2.rb
5
-
6
- = Info
7
- This file is part of Origami, PDF manipulation framework for Ruby
8
- Copyright (C) 2010 Guillaume Delugré <guillaume AT security-labs DOT org>
9
- All right reserved.
10
-
11
- Origami is free software: you can redistribute it and/or modify
12
- it under the terms of the GNU Lesser General Public License as published by
13
- the Free Software Foundation, either version 3 of the License, or
14
- (at your option) any later version.
15
-
16
- Origami is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU Lesser General Public License for more details.
20
-
21
- You should have received a copy of the GNU Lesser General Public License
22
- along with Origami. If not, see <http://www.gnu.org/licenses/>.
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/>.
23
18
 
24
19
  =end
25
20
 
26
21
  module Origami
27
-
28
- module Filter
29
-
30
- #
31
- # Class representing a Filter used to encode and decode data with JBIG2 compression algorithm.
32
- #
33
- class JBIG2
34
- include Filter
35
-
36
- class DecodeParms < Dictionary
37
- include StandardObject
38
-
39
- field :JBIG2Globals, :Type => Stream
40
- end
41
-
42
- def initialize(parameters = {})
43
- super(DecodeParms.new(parameters))
44
- end
45
-
46
- #
47
- # Not supported.
48
- #
49
- def encode(stream)
50
- raise NotImplementedError, "#{self.class} is not yet supported"
51
- end
52
-
53
- #
54
- # Not supported.
55
- #
56
- def decode(stream)
57
- raise NotImplementedError, "#{self.class} is not yet supported"
58
- end
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
+
59
56
  end
60
-
61
- end
62
57
  end
63
-