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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/examples/attachments/attachment.rb +7 -8
- data/examples/attachments/nested_document.rb +6 -5
- data/examples/encryption/encryption.rb +5 -4
- data/examples/events/events.rb +7 -6
- data/examples/flash/flash.rb +10 -9
- data/examples/forms/javascript.rb +14 -13
- data/examples/forms/xfa.rb +67 -66
- data/examples/javascript/hello_world.rb +6 -5
- data/examples/javascript/js_emulation.rb +26 -26
- data/examples/loop/goto.rb +12 -11
- data/examples/loop/named.rb +17 -16
- data/examples/signature/signature.rb +11 -11
- data/examples/uri/javascript.rb +25 -24
- data/examples/uri/open-uri.rb +5 -4
- data/examples/uri/submitform.rb +11 -10
- data/lib/origami/3d.rb +330 -334
- data/lib/origami/acroform.rb +267 -268
- data/lib/origami/actions.rb +266 -278
- data/lib/origami/annotations.rb +659 -670
- data/lib/origami/array.rb +192 -196
- data/lib/origami/boolean.rb +66 -70
- data/lib/origami/catalog.rb +360 -363
- data/lib/origami/collections.rb +132 -133
- data/lib/origami/compound.rb +125 -129
- data/lib/origami/destinations.rb +226 -237
- data/lib/origami/dictionary.rb +155 -154
- data/lib/origami/encryption.rb +967 -923
- data/lib/origami/extensions/fdf.rb +270 -275
- data/lib/origami/extensions/ppklite.rb +323 -328
- data/lib/origami/filespec.rb +170 -173
- data/lib/origami/filters/ascii.rb +162 -167
- data/lib/origami/filters/ccitt/tables.rb +248 -252
- data/lib/origami/filters/ccitt.rb +309 -312
- data/lib/origami/filters/crypt.rb +31 -34
- data/lib/origami/filters/dct.rb +47 -50
- data/lib/origami/filters/flate.rb +57 -60
- data/lib/origami/filters/jbig2.rb +50 -53
- data/lib/origami/filters/jpx.rb +40 -43
- data/lib/origami/filters/lzw.rb +151 -155
- data/lib/origami/filters/predictors.rb +250 -255
- data/lib/origami/filters/runlength.rb +111 -115
- data/lib/origami/filters.rb +319 -325
- data/lib/origami/font.rb +173 -177
- data/lib/origami/functions.rb +62 -66
- data/lib/origami/graphics/colors.rb +203 -208
- data/lib/origami/graphics/instruction.rb +79 -81
- data/lib/origami/graphics/path.rb +141 -144
- data/lib/origami/graphics/patterns.rb +156 -160
- data/lib/origami/graphics/render.rb +51 -47
- data/lib/origami/graphics/state.rb +144 -142
- data/lib/origami/graphics/text.rb +185 -188
- data/lib/origami/graphics/xobject.rb +818 -804
- data/lib/origami/graphics.rb +25 -26
- data/lib/origami/header.rb +63 -65
- data/lib/origami/javascript.rb +718 -651
- data/lib/origami/linearization.rb +284 -285
- data/lib/origami/metadata.rb +156 -135
- data/lib/origami/name.rb +98 -100
- data/lib/origami/null.rb +49 -51
- data/lib/origami/numeric.rb +133 -135
- data/lib/origami/obfuscation.rb +180 -182
- data/lib/origami/object.rb +634 -631
- data/lib/origami/optionalcontent.rb +147 -149
- data/lib/origami/outline.rb +46 -48
- data/lib/origami/outputintents.rb +76 -77
- data/lib/origami/page.rb +637 -596
- data/lib/origami/parser.rb +214 -221
- data/lib/origami/parsers/fdf.rb +44 -45
- data/lib/origami/parsers/pdf/lazy.rb +147 -154
- data/lib/origami/parsers/pdf/linear.rb +104 -109
- data/lib/origami/parsers/pdf.rb +109 -107
- data/lib/origami/parsers/ppklite.rb +44 -46
- data/lib/origami/pdf.rb +886 -896
- data/lib/origami/reference.rb +116 -120
- data/lib/origami/signature.rb +617 -625
- data/lib/origami/stream.rb +560 -558
- data/lib/origami/string.rb +366 -368
- data/lib/origami/template/patterns.rb +50 -52
- data/lib/origami/template/widgets.rb +111 -114
- data/lib/origami/trailer.rb +153 -157
- data/lib/origami/tree.rb +55 -57
- data/lib/origami/version.rb +19 -19
- data/lib/origami/webcapture.rb +87 -90
- data/lib/origami/xfa/config.rb +409 -414
- data/lib/origami/xfa/connectionset.rb +113 -117
- data/lib/origami/xfa/datasets.rb +38 -42
- data/lib/origami/xfa/localeset.rb +33 -37
- data/lib/origami/xfa/package.rb +49 -52
- data/lib/origami/xfa/pdf.rb +54 -59
- data/lib/origami/xfa/signature.rb +33 -37
- data/lib/origami/xfa/sourceset.rb +34 -38
- data/lib/origami/xfa/stylesheet.rb +35 -39
- data/lib/origami/xfa/template.rb +1630 -1634
- data/lib/origami/xfa/xdc.rb +33 -37
- data/lib/origami/xfa/xfa.rb +132 -123
- data/lib/origami/xfa/xfdf.rb +34 -38
- data/lib/origami/xfa/xmpmeta.rb +34 -38
- data/lib/origami/xfa.rb +50 -53
- data/lib/origami/xreftable.rb +462 -462
- data/lib/origami.rb +37 -38
- data/test/test_actions.rb +22 -20
- data/test/test_annotations.rb +54 -52
- data/test/test_forms.rb +23 -21
- data/test/test_native_types.rb +82 -78
- data/test/test_object_tree.rb +25 -24
- data/test/test_pages.rb +43 -41
- data/test/test_pdf.rb +2 -0
- data/test/test_pdf_attachment.rb +23 -21
- data/test/test_pdf_create.rb +16 -15
- data/test/test_pdf_encrypt.rb +69 -66
- data/test/test_pdf_parse.rb +131 -129
- data/test/test_pdf_parse_lazy.rb +53 -53
- data/test/test_pdf_sign.rb +67 -67
- data/test/test_streams.rb +145 -143
- data/test/test_xrefs.rb +46 -45
- metadata +64 -8
data/lib/origami/actions.rb
CHANGED
@@ -1,318 +1,306 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
resolve_name Names::JAVASCRIPT, name
|
29
|
-
end
|
30
|
-
|
31
|
-
#
|
32
|
-
# Calls block for each named JavaScript script.
|
33
|
-
#
|
34
|
-
def each_named_script(&b)
|
35
|
-
each_name(Names::JAVASCRIPT, &b)
|
36
|
-
end
|
22
|
+
class PDF
|
23
|
+
#
|
24
|
+
# Lookup script in the scripts name directory.
|
25
|
+
#
|
26
|
+
def get_script_by_name(name)
|
27
|
+
resolve_name Names::JAVASCRIPT, name
|
37
28
|
end
|
38
29
|
|
39
30
|
#
|
40
|
-
#
|
31
|
+
# Calls block for each named JavaScript script.
|
41
32
|
#
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
field :S, :Type => Name, :Required => true
|
47
|
-
field :Next, :Type => [ Array.of(Action), Action ], :Version => "1.2"
|
48
|
-
|
49
|
-
#
|
50
|
-
# Class representing a action going to a destination in the current document.
|
51
|
-
#
|
52
|
-
class GoTo < Action
|
53
|
-
|
54
|
-
field :S, :Type => Name, :Default => :GoTo, :Required => true
|
55
|
-
field :D, :Type => [ Destination, Name, String ], :Required => true
|
56
|
-
|
57
|
-
#
|
58
|
-
# Creates a new GoTo Action.
|
59
|
-
# _hash_:: A hash of options to set for this jump.
|
60
|
-
#
|
61
|
-
def self.[](hash = {})
|
62
|
-
if hash.is_a? Destination
|
63
|
-
self.new(:S => :GoTo, :D => hash)
|
64
|
-
else
|
65
|
-
self.new(hash)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
33
|
+
def each_named_script(&b)
|
34
|
+
each_name(Names::JAVASCRIPT, &b)
|
35
|
+
end
|
36
|
+
end
|
69
37
|
|
70
|
-
|
71
|
-
|
72
|
-
|
38
|
+
#
|
39
|
+
# Class representing an action to launch in a PDF.
|
40
|
+
#
|
41
|
+
class Action < Dictionary
|
42
|
+
include StandardObject
|
73
43
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
class URI < Action
|
78
|
-
|
79
|
-
field :S, :Type => Name, :Default => :URI, :Required => true
|
80
|
-
field :URI, :Type => String, :Required => true
|
81
|
-
field :IsMap, :Type => Boolean, :Default => false
|
82
|
-
|
83
|
-
#
|
84
|
-
# Creates a new URI Action.
|
85
|
-
# _uri_:: The URI to launch.
|
86
|
-
# _ismap_::
|
87
|
-
#
|
88
|
-
def self.[](uri, ismap = false)
|
89
|
-
self.new(:URI => uri, :IsMap => ismap)
|
90
|
-
end
|
91
|
-
end
|
44
|
+
field :Type, Type: Name, Default: :Action
|
45
|
+
field :S, Type: Name, Required: true
|
46
|
+
field :Next, Type: [Array.of(Action), Action], Version: "1.2"
|
92
47
|
|
93
|
-
|
94
|
-
|
48
|
+
#
|
49
|
+
# Class representing a action going to a destination in the current document.
|
50
|
+
#
|
51
|
+
class GoTo < Action
|
52
|
+
field :S, Type: Name, Default: :GoTo, Required: true
|
53
|
+
field :D, Type: [Destination, Name, String], Required: true
|
54
|
+
|
55
|
+
#
|
56
|
+
# Creates a new GoTo Action.
|
57
|
+
# _hash_:: A hash of options to set for this jump.
|
58
|
+
#
|
59
|
+
def self.[](hash = {})
|
60
|
+
if hash.is_a? Destination
|
61
|
+
new(S: :GoTo, D: hash)
|
62
|
+
else
|
63
|
+
new(hash)
|
95
64
|
end
|
65
|
+
end
|
66
|
+
end
|
96
67
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
class JavaScript < Action
|
101
|
-
|
102
|
-
field :S, :Type => Name, :Default => :JavaScript, :Required => true
|
103
|
-
field :JS, :Type => [ Stream, String ], :Required => true
|
104
|
-
|
105
|
-
#
|
106
|
-
# Creates a new JavaScript Action.
|
107
|
-
# _script_:: The script to be executed.
|
108
|
-
#
|
109
|
-
def self.[](script)
|
110
|
-
self.new(:JS => script)
|
111
|
-
end
|
112
|
-
end
|
68
|
+
def self.GoTo(hash = {})
|
69
|
+
Action::GoTo[hash]
|
70
|
+
end
|
113
71
|
|
114
|
-
|
115
|
-
|
116
|
-
|
72
|
+
#
|
73
|
+
# Class representing an action launching an URL.
|
74
|
+
#
|
75
|
+
class URI < Action
|
76
|
+
field :S, Type: Name, Default: :URI, Required: true
|
77
|
+
field :URI, Type: String, Required: true
|
78
|
+
field :IsMap, Type: Boolean, Default: false
|
79
|
+
|
80
|
+
#
|
81
|
+
# Creates a new URI Action.
|
82
|
+
# _uri_:: The URI to launch.
|
83
|
+
# _ismap_::
|
84
|
+
#
|
85
|
+
def self.[](uri, ismap = false)
|
86
|
+
new(URI: uri, IsMap: ismap)
|
87
|
+
end
|
88
|
+
end
|
117
89
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
class Launch < Action
|
122
|
-
|
123
|
-
#
|
124
|
-
# Dictionary for passing parameter to Windows applications during Launch.
|
125
|
-
#
|
126
|
-
class WindowsLaunchParams < Dictionary
|
127
|
-
include StandardObject
|
128
|
-
|
129
|
-
field :F, :Type => String, :Required => true
|
130
|
-
field :D, :Type => String
|
131
|
-
field :O, :Type => String, :Default => "open"
|
132
|
-
field :P, :Type => String
|
133
|
-
end
|
134
|
-
|
135
|
-
field :S, :Type => Name, :Default => :Launch, :Required => true
|
136
|
-
field :F, :Type => [ String, FileSpec ]
|
137
|
-
field :Win, :Type => WindowsLaunchParams
|
138
|
-
field :Mac, :Type => Object
|
139
|
-
field :Unix, :Type => Object
|
140
|
-
field :NewWindow, :Type => Boolean
|
141
|
-
end
|
90
|
+
def self.URI(uri, ismap = false)
|
91
|
+
Action::URI[uri, ismap]
|
92
|
+
end
|
142
93
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
94
|
+
#
|
95
|
+
# Class representing a JavaScript Action.
|
96
|
+
#
|
97
|
+
class JavaScript < Action
|
98
|
+
field :S, Type: Name, Default: :JavaScript, Required: true
|
99
|
+
field :JS, Type: [Stream, String], Required: true
|
100
|
+
|
101
|
+
#
|
102
|
+
# Creates a new JavaScript Action.
|
103
|
+
# _script_:: The script to be executed.
|
104
|
+
#
|
105
|
+
def self.[](script)
|
106
|
+
new(JS: script)
|
107
|
+
end
|
108
|
+
end
|
148
109
|
|
149
|
-
|
150
|
-
|
110
|
+
def self.JavaScript(script)
|
111
|
+
Action::JavaScript[script]
|
112
|
+
end
|
151
113
|
|
152
|
-
|
153
|
-
|
154
|
-
|
114
|
+
#
|
115
|
+
# Class representing an Action which run a command on the current system.
|
116
|
+
#
|
117
|
+
class Launch < Action
|
118
|
+
#
|
119
|
+
# Dictionary for passing parameter to Windows applications during Launch.
|
120
|
+
#
|
121
|
+
class WindowsLaunchParams < Dictionary
|
122
|
+
include StandardObject
|
155
123
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
124
|
+
field :F, Type: String, Required: true
|
125
|
+
field :D, Type: String
|
126
|
+
field :O, Type: String, Default: "open"
|
127
|
+
field :P, Type: String
|
128
|
+
end
|
129
|
+
|
130
|
+
field :S, Type: Name, Default: :Launch, Required: true
|
131
|
+
field :F, Type: [String, FileSpec]
|
132
|
+
field :Win, Type: WindowsLaunchParams
|
133
|
+
field :Mac, Type: Object
|
134
|
+
field :Unix, Type: Object
|
135
|
+
field :NewWindow, Type: Boolean
|
136
|
+
end
|
162
137
|
|
163
|
-
|
164
|
-
|
165
|
-
|
138
|
+
#
|
139
|
+
# Class representing a Named Action.
|
140
|
+
# Named actions are predefined GoTo actions.
|
141
|
+
#
|
142
|
+
class Named < Action
|
143
|
+
field :S, Type: Name, Default: :Named, Required: true
|
144
|
+
field :N, Type: Name, Required: true
|
145
|
+
|
146
|
+
def self.[](type)
|
147
|
+
new(N: type)
|
148
|
+
end
|
149
|
+
|
150
|
+
NEXT_PAGE = self[:NextPage]
|
151
|
+
PREV_PAGE = self[:PrevPage]
|
152
|
+
FIRST_PAGE = self[:FirstPage]
|
153
|
+
LAST_PAGE = self[:LastPage]
|
154
|
+
PRINT = self[:Print]
|
155
|
+
end
|
166
156
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
class GoToR < Action
|
171
|
-
|
172
|
-
field :S, :Type => Name, :Default => :GoToR, :Required => true
|
173
|
-
field :F, :Type => [ String, FileSpec ], :Required => true
|
174
|
-
field :D, :Type => [ Destination, Name, String ], :Required => true
|
175
|
-
field :NewWindow, :Type => Boolean, :Version => "1.2"
|
176
|
-
|
177
|
-
#
|
178
|
-
# Creates a new GoTo remote Action.
|
179
|
-
# _file_:: A FileSpec describing the file.
|
180
|
-
# _dest_:: A Destination in the file.
|
181
|
-
# _new_window_:: Specifies whether the file has to be opened in a new window.
|
182
|
-
#
|
183
|
-
def self.[](file, dest: Destination::GlobalFit[0], new_window: false)
|
184
|
-
self.new(:F => file, :D => dest, :NewWindow => new_window)
|
185
|
-
end
|
186
|
-
end
|
157
|
+
def self.Named(type)
|
158
|
+
Action::Named[type]
|
159
|
+
end
|
187
160
|
|
188
|
-
|
189
|
-
|
190
|
-
|
161
|
+
#
|
162
|
+
# Class representing a GoTo Action to an external file.
|
163
|
+
#
|
164
|
+
class GoToR < Action
|
165
|
+
field :S, Type: Name, Default: :GoToR, Required: true
|
166
|
+
field :F, Type: [String, FileSpec], Required: true
|
167
|
+
field :D, Type: [Destination, Name, String], Required: true
|
168
|
+
field :NewWindow, Type: Boolean, Version: "1.2"
|
169
|
+
|
170
|
+
#
|
171
|
+
# Creates a new GoTo remote Action.
|
172
|
+
# _file_:: A FileSpec describing the file.
|
173
|
+
# _dest_:: A Destination in the file.
|
174
|
+
# _new_window_:: Specifies whether the file has to be opened in a new window.
|
175
|
+
#
|
176
|
+
def self.[](file, dest: Destination::GlobalFit[0], new_window: false)
|
177
|
+
new(F: file, D: dest, NewWindow: new_window)
|
178
|
+
end
|
179
|
+
end
|
191
180
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
class GoToE < Action
|
196
|
-
|
197
|
-
#
|
198
|
-
# A class representing a target for a GoToE to an embedded file.
|
199
|
-
#
|
200
|
-
class EmbeddedTarget < Dictionary
|
201
|
-
include StandardObject
|
202
|
-
|
203
|
-
module Relationship
|
204
|
-
PARENT = :P
|
205
|
-
CHILD = :C
|
206
|
-
end
|
207
|
-
|
208
|
-
field :R, :Type => Name, :Required => true
|
209
|
-
field :N, :Type => String
|
210
|
-
field :P, :Type => [ Integer, String ]
|
211
|
-
field :A, :Type => [ Integer, String ]
|
212
|
-
field :T, :Type => Dictionary
|
213
|
-
end
|
214
|
-
|
215
|
-
field :S, :Type => Name, :Default => :GoToE, :Required => true
|
216
|
-
field :F, :Type => [ String, FileSpec ]
|
217
|
-
field :D, :Type => [ Destination, Name, String ], :Required => true
|
218
|
-
field :NewWindow, :Type => Boolean
|
219
|
-
field :T, :Type => EmbeddedTarget
|
220
|
-
|
221
|
-
def self.[](filename, dest: Destination::GlobalFit[0], new_window: false)
|
222
|
-
self.new(:T => EmbeddedTarget.new(:R => :C, :N => filename), :D => dest, :NewWindow => new_window)
|
223
|
-
end
|
224
|
-
end
|
181
|
+
def self.GoToR(file, dest: Destination::GlobalFit[0], new_window: false)
|
182
|
+
Action::GoToR[file, dest: dest, new_window: new_window]
|
183
|
+
end
|
225
184
|
|
226
|
-
|
227
|
-
|
228
|
-
|
185
|
+
#
|
186
|
+
# Class representing a GoTo Action to an embedded pdf file.
|
187
|
+
#
|
188
|
+
class GoToE < Action
|
189
|
+
#
|
190
|
+
# A class representing a target for a GoToE to an embedded file.
|
191
|
+
#
|
192
|
+
class EmbeddedTarget < Dictionary
|
193
|
+
include StandardObject
|
229
194
|
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
class SubmitForm < Action
|
234
|
-
module Flags
|
235
|
-
INCLUDEEXCLUDE = 1 << 0
|
236
|
-
INCLUDENOVALUEFIELDS = 1 << 1
|
237
|
-
EXPORTFORMAT = 1 << 2
|
238
|
-
GETMETHOD = 1 << 3
|
239
|
-
SUBMITCOORDINATES = 1 << 4
|
240
|
-
XFDF = 1 << 5
|
241
|
-
INCLUDEAPPENDSAVES = 1 << 6
|
242
|
-
INCLUDEANNOTATIONS = 1 << 7
|
243
|
-
SUBMITPDF = 1 << 8
|
244
|
-
CANONICALFORMAT = 1 << 9
|
245
|
-
EXCLNONUSERANNOTS = 1 << 10
|
246
|
-
EXCLFKEY = 1 << 11
|
247
|
-
EMBEDFORM = 1 << 12
|
248
|
-
end
|
249
|
-
|
250
|
-
field :S, :Type => Name, :Default => :SubmitForm, :Required => true
|
251
|
-
field :F, :Type => FileSpec
|
252
|
-
field :Fields, :Type => Array
|
253
|
-
field :Flags, :Type => Integer, :Default => 0
|
254
|
-
|
255
|
-
def self.[](url, fields = [], flags = 0)
|
256
|
-
url = FileSpec.new(:FS => :URL, :F => url) unless url.is_a? FileSpec
|
257
|
-
self.new(:F => url, :Fields => fields, :Flags => flags)
|
258
|
-
end
|
195
|
+
module Relationship
|
196
|
+
PARENT = :P
|
197
|
+
CHILD = :C
|
259
198
|
end
|
260
199
|
|
261
|
-
|
262
|
-
|
263
|
-
|
200
|
+
field :R, Type: Name, Required: true
|
201
|
+
field :N, Type: String
|
202
|
+
field :P, Type: [Integer, String]
|
203
|
+
field :A, Type: [Integer, String]
|
204
|
+
field :T, Type: Dictionary
|
205
|
+
end
|
206
|
+
|
207
|
+
field :S, Type: Name, Default: :GoToE, Required: true
|
208
|
+
field :F, Type: [String, FileSpec]
|
209
|
+
field :D, Type: [Destination, Name, String], Required: true
|
210
|
+
field :NewWindow, Type: Boolean
|
211
|
+
field :T, Type: EmbeddedTarget
|
212
|
+
|
213
|
+
def self.[](filename, dest: Destination::GlobalFit[0], new_window: false)
|
214
|
+
new(T: EmbeddedTarget.new(R: :C, N: filename), D: dest, NewWindow: new_window)
|
215
|
+
end
|
216
|
+
end
|
264
217
|
|
265
|
-
|
218
|
+
def self.GoToE(filename, dest: Destination::GlobalFit[0], new_window: false)
|
219
|
+
Action::GoToE[filename, dest: dest, new_window: new_window]
|
220
|
+
end
|
266
221
|
|
267
|
-
|
268
|
-
|
222
|
+
#
|
223
|
+
# Class representing a SubmitForm action.
|
224
|
+
#
|
225
|
+
class SubmitForm < Action
|
226
|
+
module Flags
|
227
|
+
INCLUDEEXCLUDE = 1 << 0
|
228
|
+
INCLUDENOVALUEFIELDS = 1 << 1
|
229
|
+
EXPORTFORMAT = 1 << 2
|
230
|
+
GETMETHOD = 1 << 3
|
231
|
+
SUBMITCOORDINATES = 1 << 4
|
232
|
+
XFDF = 1 << 5
|
233
|
+
INCLUDEAPPENDSAVES = 1 << 6
|
234
|
+
INCLUDEANNOTATIONS = 1 << 7
|
235
|
+
SUBMITPDF = 1 << 8
|
236
|
+
CANONICALFORMAT = 1 << 9
|
237
|
+
EXCLNONUSERANNOTS = 1 << 10
|
238
|
+
EXCLFKEY = 1 << 11
|
239
|
+
EMBEDFORM = 1 << 12
|
240
|
+
end
|
241
|
+
|
242
|
+
field :S, Type: Name, Default: :SubmitForm, Required: true
|
243
|
+
field :F, Type: FileSpec
|
244
|
+
field :Fields, Type: Array
|
245
|
+
field :Flags, Type: Integer, Default: 0
|
246
|
+
|
247
|
+
def self.[](url, fields = [], flags = 0)
|
248
|
+
url = FileSpec.new(FS: :URL, F: url) unless url.is_a? FileSpec
|
249
|
+
new(F: url, Fields: fields, Flags: flags)
|
250
|
+
end
|
251
|
+
end
|
269
252
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
end
|
274
|
-
end
|
253
|
+
def self.SubmitForm(url, fields = [], flags = 0)
|
254
|
+
Action::SubmitForm[url, fields, flags]
|
255
|
+
end
|
275
256
|
|
276
|
-
|
277
|
-
|
278
|
-
|
257
|
+
class ImportData < Action
|
258
|
+
field :S, Type: Name, Default: :ImportData, Required: true
|
259
|
+
field :F, Type: Dictionary, Required: true
|
279
260
|
|
280
|
-
|
261
|
+
def self.[](file)
|
262
|
+
file = FileSpec.new(FS: :File, F: file) unless file.is_a? FileSpec
|
263
|
+
new(F: file)
|
264
|
+
end
|
265
|
+
end
|
281
266
|
|
282
|
-
|
283
|
-
|
267
|
+
def self.ImportData(file)
|
268
|
+
Action::ImportData[file]
|
269
|
+
end
|
284
270
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
end
|
271
|
+
class RichMediaExecute < Action
|
272
|
+
class Command < Dictionary
|
273
|
+
include StandardObject
|
289
274
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
275
|
+
field :Type, Type: Name, Default: :RichMediaCommand, Version: "1.7", ExtensionLevel: 3
|
276
|
+
field :C, Type: String, Version: "1.7", ExtensionLevel: 3, Required: true
|
277
|
+
field :A, Type: Object, Version: "1.7", ExtensionLevel: 3
|
278
|
+
end
|
294
279
|
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
280
|
+
field :S, Type: Name, Default: :RichMediaExecute, Version: "1.7", ExtensionLevel: 3, Required: true
|
281
|
+
field :TA, Type: Annotation::RichMedia, Version: "1.7", ExtensionLevel: 3, Required: true
|
282
|
+
field :TI, Type: Annotation::RichMedia::Instance, Version: "1.7", ExtensionLevel: 3
|
283
|
+
field :CMD, Type: Command, Version: "1.7", ExtensionLevel: 3, Required: true
|
299
284
|
|
300
|
-
|
301
|
-
|
302
|
-
|
285
|
+
def self.[](annotation, command, *params)
|
286
|
+
new(TA: annotation, CMD: Command.new(C: command, A: params))
|
287
|
+
end
|
288
|
+
end
|
303
289
|
|
304
|
-
|
290
|
+
def self.RichMediaExecute(annotation, command, *params)
|
291
|
+
Action::RichMediaExecute[annotation, command, *params]
|
292
|
+
end
|
305
293
|
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
294
|
+
class SetOCGState < Action
|
295
|
+
module State
|
296
|
+
ON = :ON
|
297
|
+
OFF = :OFF
|
298
|
+
TOGGLE = :Toggle
|
299
|
+
end
|
311
300
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
end
|
301
|
+
field :S, Type: Name, Default: :SetOCGState, Required: true
|
302
|
+
field :State, Type: Array.of([Name, OptionalContent::Group]), Required: true
|
303
|
+
field :PreserveRB, Type: Boolean, Default: true
|
316
304
|
end
|
317
|
-
|
305
|
+
end
|
318
306
|
end
|