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
@@ -1,183 +1,181 @@
|
|
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) 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
|
-
|
24
|
-
|
25
|
-
class Usage < Dictionary
|
26
|
-
include StandardObject
|
26
|
+
class CreatorInfo < Dictionary
|
27
|
+
include StandardObject
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
field :Creator, Type: String, Required: true
|
30
|
+
field :Subtype, Type: Name, Required: true
|
31
|
+
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
end
|
33
|
+
class Language < Dictionary
|
34
|
+
include StandardObject
|
34
35
|
|
35
|
-
|
36
|
-
|
36
|
+
field :Lang, Type: String, Required: true
|
37
|
+
field :Preferred, Type: Name, Default: :OFF
|
38
|
+
end
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
end
|
40
|
+
class Export < Dictionary
|
41
|
+
include StandardObject
|
41
42
|
|
42
|
-
|
43
|
-
|
43
|
+
field :ExportState, Type: Name, Required: true
|
44
|
+
end
|
44
45
|
|
45
|
-
|
46
|
-
|
46
|
+
class Zoom < Dictionary
|
47
|
+
include StandardObject
|
47
48
|
|
48
|
-
|
49
|
-
|
49
|
+
field :min, Type: Real, Default: 0
|
50
|
+
field :max, Type: Real, Default: Float::INFINITY
|
51
|
+
end
|
50
52
|
|
51
|
-
|
52
|
-
|
53
|
-
end
|
53
|
+
class Print < Dictionary
|
54
|
+
include StandardObject
|
54
55
|
|
55
|
-
|
56
|
-
|
56
|
+
field :Subtype, Type: Name
|
57
|
+
field :PrintState, Type: Name
|
58
|
+
end
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
-
end
|
60
|
+
class View < Dictionary
|
61
|
+
include StandardObject
|
61
62
|
|
62
|
-
|
63
|
-
|
63
|
+
field :ViewState, Type: Name, Required: true
|
64
|
+
end
|
64
65
|
|
65
|
-
|
66
|
-
|
66
|
+
class User < Dictionary
|
67
|
+
include StandardObject
|
67
68
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
92
|
-
|
79
|
+
class PageElement < Dictionary
|
80
|
+
include StandardObject
|
93
81
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
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
|
-
|
105
|
-
|
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
|
-
|
108
|
-
|
109
|
-
DESIGN = :Design
|
110
|
-
end
|
102
|
+
class Group < Dictionary
|
103
|
+
include StandardObject
|
111
104
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
end
|
105
|
+
module Intent
|
106
|
+
VIEW = :View
|
107
|
+
DESIGN = :Design
|
108
|
+
end
|
117
109
|
|
118
|
-
|
119
|
-
|
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
|
-
|
122
|
-
|
123
|
-
ANY_ON = :AnyOn
|
124
|
-
ALL_OFF = :AllOff
|
125
|
-
ANY_OFF = :AnyOff
|
126
|
-
end
|
116
|
+
class Membership < Dictionary
|
117
|
+
include StandardObject
|
127
118
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
119
|
+
module Policy
|
120
|
+
ALL_ON = :AllOn
|
121
|
+
ANY_ON = :AnyOn
|
122
|
+
ALL_OFF = :AllOff
|
123
|
+
ANY_OFF = :AnyOff
|
124
|
+
end
|
133
125
|
|
134
|
-
|
135
|
-
|
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
|
-
|
138
|
-
|
139
|
-
PRINT = :Print
|
140
|
-
EXPORT = :Export
|
141
|
-
end
|
132
|
+
class UsageApplication < Dictionary
|
133
|
+
include StandardObject
|
142
134
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
135
|
+
module Event
|
136
|
+
VIEW = :View
|
137
|
+
PRINT = :Print
|
138
|
+
EXPORT = :Export
|
139
|
+
end
|
147
140
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
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
|
-
|
176
|
-
|
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
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
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
|
data/lib/origami/outline.rb
CHANGED
@@ -1,54 +1,52 @@
|
|
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
|
+
class OutlineItem < Dictionary
|
23
|
+
include StandardObject
|
22
24
|
|
23
|
-
|
24
|
-
|
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
|
-
|
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
|
+
class OutputIntent < Dictionary
|
23
|
+
include StandardObject
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|