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,183 +1,181 @@
1
- =begin
2
-
3
- This file is part of Origami, PDF manipulation framework for Ruby
4
- Copyright (C) 2017 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) 2017 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
+ module OptionalContent
23
+ class Usage < Dictionary
24
+ include StandardObject
22
25
 
23
- module OptionalContent
24
-
25
- class Usage < Dictionary
26
- include StandardObject
26
+ class CreatorInfo < Dictionary
27
+ include StandardObject
27
28
 
28
- class CreatorInfo < Dictionary
29
- include StandardObject
29
+ field :Creator, Type: String, Required: true
30
+ field :Subtype, Type: Name, Required: true
31
+ end
30
32
 
31
- field :Creator, :Type => String, :Required => true
32
- field :Subtype, :Type => Name, :Required => true
33
- end
33
+ class Language < Dictionary
34
+ include StandardObject
34
35
 
35
- class Language < Dictionary
36
- include StandardObject
36
+ field :Lang, Type: String, Required: true
37
+ field :Preferred, Type: Name, Default: :OFF
38
+ end
37
39
 
38
- field :Lang, :Type => String, :Required => true
39
- field :Preferred, :Type => Name, :Default => :OFF
40
- end
40
+ class Export < Dictionary
41
+ include StandardObject
41
42
 
42
- class Export < Dictionary
43
- include StandardObject
43
+ field :ExportState, Type: Name, Required: true
44
+ end
44
45
 
45
- field :ExportState, :Type => Name, :Required => true
46
- end
46
+ class Zoom < Dictionary
47
+ include StandardObject
47
48
 
48
- class Zoom < Dictionary
49
- include StandardObject
49
+ field :min, Type: Real, Default: 0
50
+ field :max, Type: Real, Default: Float::INFINITY
51
+ end
50
52
 
51
- field :min, :Type => Real, :Default => 0
52
- field :max, :Type => Real, :Default => Float::INFINITY
53
- end
53
+ class Print < Dictionary
54
+ include StandardObject
54
55
 
55
- class Print < Dictionary
56
- include StandardObject
56
+ field :Subtype, Type: Name
57
+ field :PrintState, Type: Name
58
+ end
57
59
 
58
- field :Subtype, :Type => Name
59
- field :PrintState, :Type => Name
60
- end
60
+ class View < Dictionary
61
+ include StandardObject
61
62
 
62
- class View < Dictionary
63
- include StandardObject
63
+ field :ViewState, Type: Name, Required: true
64
+ end
64
65
 
65
- field :ViewState, :Type => Name, :Required => true
66
- end
66
+ class User < Dictionary
67
+ include StandardObject
67
68
 
68
- class User < Dictionary
69
- include StandardObject
70
-
71
- module Type
72
- INDIVIDUAL = :Ind
73
- TITLE = :Ttl
74
- ORGANIZATION = :Org
75
- end
76
-
77
- field :Type, :Type => Name, :Required => true
78
- field :Name, :Type => [ String, Array.of(String) ], :Required => true
79
- end
80
-
81
- class PageElement < Dictionary
82
- include StandardObject
69
+ module Type
70
+ INDIVIDUAL = :Ind
71
+ TITLE = :Ttl
72
+ ORGANIZATION = :Org
73
+ end
83
74
 
84
- module Type
85
- HEADER_FOOTER = :HF
86
- FOREGROUND = :FG
87
- BACKGROUND = :BG
88
- LOGO = :L
89
- end
75
+ field :Type, Type: Name, Required: true
76
+ field :Name, Type: [String, Array.of(String)], Required: true
77
+ end
90
78
 
91
- field :Subtype, :Type => Name, :Required => true
92
- end
79
+ class PageElement < Dictionary
80
+ include StandardObject
93
81
 
94
- field :CreatorInfo, :Type => CreatorInfo
95
- field :Language, :Type => Language
96
- field :Export, :Type => Export
97
- field :Zoom, :Type => Zoom
98
- field :Print, :Type => Print
99
- field :View, :Type => View
100
- field :User, :Type => User
101
- field :PageElement, :Type => PageElement
82
+ module Type
83
+ HEADER_FOOTER = :HF
84
+ FOREGROUND = :FG
85
+ BACKGROUND = :BG
86
+ LOGO = :L
102
87
  end
103
88
 
104
- class Group < Dictionary
105
- include StandardObject
89
+ field :Subtype, Type: Name, Required: true
90
+ end
91
+
92
+ field :CreatorInfo, Type: CreatorInfo
93
+ field :Language, Type: Language
94
+ field :Export, Type: Export
95
+ field :Zoom, Type: Zoom
96
+ field :Print, Type: Print
97
+ field :View, Type: View
98
+ field :User, Type: User
99
+ field :PageElement, Type: PageElement
100
+ end
106
101
 
107
- module Intent
108
- VIEW = :View
109
- DESIGN = :Design
110
- end
102
+ class Group < Dictionary
103
+ include StandardObject
111
104
 
112
- field :Type, :Type => Name, :Required => true, :Default => :OCG
113
- field :Name, :Type => String, :Required => true
114
- field :Intent, :Type => [ Name, Array.of(Name) ]
115
- field :Usage, :Type => Usage
116
- end
105
+ module Intent
106
+ VIEW = :View
107
+ DESIGN = :Design
108
+ end
117
109
 
118
- class Membership < Dictionary
119
- include StandardObject
110
+ field :Type, Type: Name, Required: true, Default: :OCG
111
+ field :Name, Type: String, Required: true
112
+ field :Intent, Type: [Name, Array.of(Name)]
113
+ field :Usage, Type: Usage
114
+ end
120
115
 
121
- module Policy
122
- ALL_ON = :AllOn
123
- ANY_ON = :AnyOn
124
- ALL_OFF = :AllOff
125
- ANY_OFF = :AnyOff
126
- end
116
+ class Membership < Dictionary
117
+ include StandardObject
127
118
 
128
- field :Type, :Type => Name, :Required => true, :Default => :OCMD
129
- field :OCGs, :Type => [ Group, Array.of(Group) ]
130
- field :P, :Type => Name, :Default => Policy::ANY_ON
131
- field :VE, :Type => Array, :Version => "1.6"
132
- end
119
+ module Policy
120
+ ALL_ON = :AllOn
121
+ ANY_ON = :AnyOn
122
+ ALL_OFF = :AllOff
123
+ ANY_OFF = :AnyOff
124
+ end
133
125
 
134
- class UsageApplication < Dictionary
135
- include StandardObject
126
+ field :Type, Type: Name, Required: true, Default: :OCMD
127
+ field :OCGs, Type: [Group, Array.of(Group)]
128
+ field :P, Type: Name, Default: Policy::ANY_ON
129
+ field :VE, Type: Array, Version: "1.6"
130
+ end
136
131
 
137
- module Event
138
- VIEW = :View
139
- PRINT = :Print
140
- EXPORT = :Export
141
- end
132
+ class UsageApplication < Dictionary
133
+ include StandardObject
142
134
 
143
- field :Event, :Type => Name, :Required => true
144
- field :OCGs, :Type => Array.of(Group), :Default => []
145
- field :Category, :Type => Array.of(Name), :Required => true
146
- end
135
+ module Event
136
+ VIEW = :View
137
+ PRINT = :Print
138
+ EXPORT = :Export
139
+ end
147
140
 
148
- class Configuration < Dictionary
149
- include StandardObject
150
-
151
- module State
152
- ON = :On
153
- OFF = :Off
154
- UNCHANGED = :Unchanged
155
- end
156
-
157
- module Mode
158
- ALL_PAGES = :AllPages
159
- VISIBLE_PAGES = :VisiblePages
160
- end
161
-
162
- field :Name, :Type => String
163
- field :Creator, :Type => String
164
- field :BaseState, :Type => Name, :Default => State::ON
165
- field :ON, :Type => Array.of(Group)
166
- field :OFF, :Type => Array.of(Group)
167
- field :Intent, :Type => [ Name, Array.of(Name) ]
168
- field :AS, :Type => Array.of(UsageApplication)
169
- field :Order, :Type => Array
170
- field :ListMode, :Type => Name, :Default => Mode::ALL_PAGES
171
- field :RBGroups, :Type => Array.of(Array.of(Group)), :Default => []
172
- field :Locked, :Type => Array.of(Group), :Default => [], :Version => "1.6"
173
- end
141
+ field :Event, Type: Name, Required: true
142
+ field :OCGs, Type: Array.of(Group), Default: []
143
+ field :Category, Type: Array.of(Name), Required: true
144
+ end
174
145
 
175
- class Properties < Dictionary
176
- include StandardObject
146
+ class Configuration < Dictionary
147
+ include StandardObject
148
+
149
+ module State
150
+ ON = :On
151
+ OFF = :Off
152
+ UNCHANGED = :Unchanged
153
+ end
154
+
155
+ module Mode
156
+ ALL_PAGES = :AllPages
157
+ VISIBLE_PAGES = :VisiblePages
158
+ end
159
+
160
+ field :Name, Type: String
161
+ field :Creator, Type: String
162
+ field :BaseState, Type: Name, Default: State::ON
163
+ field :ON, Type: Array.of(Group)
164
+ field :OFF, Type: Array.of(Group)
165
+ field :Intent, Type: [Name, Array.of(Name)]
166
+ field :AS, Type: Array.of(UsageApplication)
167
+ field :Order, Type: Array
168
+ field :ListMode, Type: Name, Default: Mode::ALL_PAGES
169
+ field :RBGroups, Type: Array.of(Array.of(Group)), Default: []
170
+ field :Locked, Type: Array.of(Group), Default: [], Version: "1.6"
171
+ end
177
172
 
178
- field :OCGs, :Type => Array.of(Group), :Required => true
179
- field :D, :Type => Configuration, :Required => true
180
- field :Configs, :Type => Array.of(Configuration)
181
- end
173
+ class Properties < Dictionary
174
+ include StandardObject
175
+
176
+ field :OCGs, Type: Array.of(Group), Required: true
177
+ field :D, Type: Configuration, Required: true
178
+ field :Configs, Type: Array.of(Configuration)
182
179
  end
180
+ end
183
181
  end
@@ -1,54 +1,52 @@
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
+ class OutlineItem < Dictionary
23
+ include StandardObject
22
24
 
23
- class OutlineItem < Dictionary
24
- include StandardObject
25
-
26
- module Style
27
- ITALIC = 1 << 0
28
- BOLD = 1 << 1
29
- end
30
-
31
- field :Title, :Type => String, :Required => true
32
- field :Parent, :Type => Dictionary, :Required => true
33
- field :Prev, :Type => OutlineItem
34
- field :Next, :Type => OutlineItem
35
- field :First, :Type => OutlineItem
36
- field :Last, :Type => OutlineItem
37
- field :Count, :Type => Integer
38
- field :Dest, :Type => [ Name, String, Destination ]
39
- field :A, :Type => Action, :Version => "1.1"
40
- field :SE, :Type => Dictionary, :Version => "1.3"
41
- field :C, :Type => Array.of(Number, length: 3), :Default => [ 0.0, 0.0, 0.0 ], :Version => "1.4"
42
- field :F, :Type => Integer, :Default => 0, :Version => "1.4"
43
- end
44
-
45
- class Outline < Dictionary
46
- include StandardObject
47
-
48
- field :Type, :Type => Name, :Default => :Outlines
49
- field :First, :Type => OutlineItem
50
- field :Last, :Type => OutlineItem
51
- field :Count, :Type => Integer
25
+ module Style
26
+ ITALIC = 1 << 0
27
+ BOLD = 1 << 1
52
28
  end
53
29
 
30
+ field :Title, Type: String, Required: true
31
+ field :Parent, Type: Dictionary, Required: true
32
+ field :Prev, Type: OutlineItem
33
+ field :Next, Type: OutlineItem
34
+ field :First, Type: OutlineItem
35
+ field :Last, Type: OutlineItem
36
+ field :Count, Type: Integer
37
+ field :Dest, Type: [Name, String, Destination]
38
+ field :A, Type: Action, Version: "1.1"
39
+ field :SE, Type: Dictionary, Version: "1.3"
40
+ field :C, Type: Array.of(Number, length: 3), Default: [0.0, 0.0, 0.0], Version: "1.4"
41
+ field :F, Type: Integer, Default: 0, Version: "1.4"
42
+ end
43
+
44
+ class Outline < Dictionary
45
+ include StandardObject
46
+
47
+ field :Type, Type: Name, Default: :Outlines
48
+ field :First, Type: OutlineItem
49
+ field :Last, Type: OutlineItem
50
+ field :Count, Type: Integer
51
+ end
54
52
  end
@@ -1,85 +1,84 @@
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
+ class OutputIntent < Dictionary
23
+ include StandardObject
22
24
 
23
- class OutputIntent < Dictionary
24
- include StandardObject
25
-
26
- module Intent
27
- PDFX = :GTS_PDFX
28
- PDFA1 = :GTS_PDFA1
29
- PDFE1 = :GTS_PDFE1
30
- end
31
-
32
- field :Type, :Type => Name, :Default => :OutputIntent
33
- field :S, :Type => Name, :Version => '1.4', :Required => true
34
- field :OutputCondition, :Type => String
35
- field :OutputConditionIdentifier, :Type => String
36
- field :RegistryName, :Type => String
37
- field :Info, :Type => String
38
- field :DestOutputProfile, :Type => Stream
25
+ module Intent
26
+ PDFX = :GTS_PDFX
27
+ PDFA1 = :GTS_PDFA1
28
+ PDFE1 = :GTS_PDFE1
39
29
  end
40
30
 
41
- class PDF
42
- def pdfa1?
43
- self.Catalog.OutputIntents.is_a?(Array) and
44
- self.Catalog.OutputIntents.any?{|intent|
45
- intent.solve.S == OutputIntent::Intent::PDFA1
46
- } and
47
- self.metadata? and (
48
- doc = REXML::Document.new self.Catalog.Metadata.data;
49
- REXML::XPath.match(doc, "*/*/rdf:Description[@xmlns:pdfaid]").any? {|desc|
50
- desc.elements["pdfaid:conformance"].text == "A" and
51
- desc.elements["pdfaid:part"].text == "1"
52
- }
53
- )
54
- end
55
-
56
- private
57
-
58
- def intents_as_pdfa1
59
- return if self.pdfa1?
60
-
61
- self.Catalog.OutputIntents ||= []
62
- self.Catalog.OutputIntents << self.insert(
63
- OutputIntent.new(
64
- :Type => :OutputIntent,
65
- :S => OutputIntent::Intent::PDFA1,
66
- :OutputConditionIdentifier => "RGB"
67
- )
68
- )
69
-
70
- metadata = self.create_metadata
71
- doc = REXML::Document.new(metadata.data)
72
-
73
- desc = REXML::Element.new 'rdf:Description'
74
- desc.add_attribute 'rdf:about', ''
75
- desc.add_attribute 'xmlns:pdfaid', 'http://www.aiim.org/pdfa/ns/id/'
76
- desc.add REXML::Element.new('pdfaid:conformance').add_text('A')
77
- desc.add REXML::Element.new('pdfaid:part').add_text('1')
78
- doc.elements["*/rdf:RDF"].add desc
79
-
80
- xml = ""; doc.write(xml, 3)
81
- metadata.data = xml
82
- end
31
+ field :Type, Type: Name, Default: :OutputIntent
32
+ field :S, Type: Name, Version: '1.4', Required: true
33
+ field :OutputCondition, Type: String
34
+ field :OutputConditionIdentifier, Type: String
35
+ field :RegistryName, Type: String
36
+ field :Info, Type: String
37
+ field :DestOutputProfile, Type: Stream
38
+ end
39
+
40
+ class PDF
41
+ def pdfa1?
42
+ self.Catalog.OutputIntents.is_a?(Array) and
43
+ self.Catalog.OutputIntents.any? { |intent|
44
+ intent.solve.S == OutputIntent::Intent::PDFA1
45
+ } and
46
+ metadata? and (
47
+ doc = REXML::Document.new self.Catalog.Metadata.data
48
+ REXML::XPath.match(doc, "*/*/rdf:Description[@xmlns:pdfaid]").any? { |desc|
49
+ desc.elements["pdfaid:conformance"].text == "A" and
50
+ desc.elements["pdfaid:part"].text == "1"
51
+ }
52
+ )
83
53
  end
84
54
 
55
+ private
56
+
57
+ def intents_as_pdfa1
58
+ return if pdfa1?
59
+
60
+ self.Catalog.OutputIntents ||= []
61
+ self.Catalog.OutputIntents << insert(
62
+ OutputIntent.new(
63
+ Type: :OutputIntent,
64
+ S: OutputIntent::Intent::PDFA1,
65
+ OutputConditionIdentifier: "RGB"
66
+ )
67
+ )
68
+
69
+ metadata = create_metadata
70
+ doc = REXML::Document.new(metadata.data)
71
+
72
+ desc = REXML::Element.new 'rdf:Description'
73
+ desc.add_attribute 'rdf:about', ''
74
+ desc.add_attribute 'xmlns:pdfaid', 'http://www.aiim.org/pdfa/ns/id/'
75
+ desc.add REXML::Element.new('pdfaid:conformance').add_text('A')
76
+ desc.add REXML::Element.new('pdfaid:part').add_text('1')
77
+ doc.elements["*/rdf:RDF"].add desc
78
+
79
+ xml = ""
80
+ doc.write(xml, 3)
81
+ metadata.data = xml
82
+ end
83
+ end
85
84
  end