aspose_pdf_cloud 19.3.0 → 19.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +35 -5
  3. data/docs/BorderCornerStyle.md +11 -0
  4. data/docs/BorderInfo.md +13 -0
  5. data/docs/Cell.md +21 -0
  6. data/docs/ColumnAdjustment.md +12 -0
  7. data/docs/CryptoAlgorithm.md +14 -0
  8. data/docs/GraphInfo.md +19 -0
  9. data/docs/ImageFooter.md +23 -0
  10. data/docs/ImageHeader.md +23 -0
  11. data/docs/ImageStamp.md +5 -5
  12. data/docs/MarginInfo.md +5 -5
  13. data/docs/PageNumberStamp.md +24 -0
  14. data/docs/PdfApi.md +451 -27
  15. data/docs/PdfPageStamp.md +5 -5
  16. data/docs/PermissionsFlags.md +17 -0
  17. data/docs/Row.md +19 -0
  18. data/docs/StampBase.md +0 -5
  19. data/docs/Table.md +31 -0
  20. data/docs/TableBroken.md +12 -0
  21. data/docs/TextFooter.md +23 -0
  22. data/docs/TextHeader.md +23 -0
  23. data/docs/TextStamp.md +5 -5
  24. data/lib/aspose_pdf_cloud.rb +15 -0
  25. data/lib/aspose_pdf_cloud/api/pdf_api.rb +1530 -215
  26. data/lib/aspose_pdf_cloud/models/border_corner_style.rb +44 -0
  27. data/lib/aspose_pdf_cloud/models/border_info.rb +241 -0
  28. data/lib/aspose_pdf_cloud/models/cell.rb +323 -0
  29. data/lib/aspose_pdf_cloud/models/column_adjustment.rb +45 -0
  30. data/lib/aspose_pdf_cloud/models/crypto_algorithm.rb +46 -0
  31. data/lib/aspose_pdf_cloud/models/graph_info.rb +303 -0
  32. data/lib/aspose_pdf_cloud/models/image_footer.rb +343 -0
  33. data/lib/aspose_pdf_cloud/models/image_header.rb +343 -0
  34. data/lib/aspose_pdf_cloud/models/image_stamp.rb +54 -54
  35. data/lib/aspose_pdf_cloud/models/margin_info.rb +5 -21
  36. data/lib/aspose_pdf_cloud/models/page_number_stamp.rb +353 -0
  37. data/lib/aspose_pdf_cloud/models/pdf_page_stamp.rb +54 -54
  38. data/lib/aspose_pdf_cloud/models/permissions_flags.rb +50 -0
  39. data/lib/aspose_pdf_cloud/models/row.rb +308 -0
  40. data/lib/aspose_pdf_cloud/models/stamp_base.rb +1 -51
  41. data/lib/aspose_pdf_cloud/models/table.rb +425 -0
  42. data/lib/aspose_pdf_cloud/models/table_broken.rb +45 -0
  43. data/lib/aspose_pdf_cloud/models/text_footer.rb +343 -0
  44. data/lib/aspose_pdf_cloud/models/text_header.rb +343 -0
  45. data/lib/aspose_pdf_cloud/models/text_stamp.rb +54 -54
  46. data/lib/aspose_pdf_cloud/version.rb +1 -1
  47. data/test/pdf_tests.rb +407 -5
  48. data/test_data/4pagesEncrypted.pdf +0 -0
  49. metadata +33 -2
@@ -0,0 +1,50 @@
1
+ =begin
2
+ --------------------------------------------------------------------------------------------------------------------
3
+ Copyright (c) 2019 Aspose.PDF Cloud
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
+ SOFTWARE.
19
+ --------------------------------------------------------------------------------------------------------------------
20
+ =end
21
+
22
+ require 'date'
23
+ require 'time'
24
+
25
+ module AsposePdfCloud
26
+ class PermissionsFlags
27
+
28
+ PRINT_DOCUMENT = "PrintDocument".freeze
29
+ MODIFY_CONTENT = "ModifyContent".freeze
30
+ EXTRACT_CONTENT = "ExtractContent".freeze
31
+ MODIFY_TEXT_ANNOTATIONS = "ModifyTextAnnotations".freeze
32
+ FILL_FORM = "FillForm".freeze
33
+ EXTRACT_CONTENT_WITH_DISABILITIES = "ExtractContentWithDisabilities".freeze
34
+ ASSEMBLE_DOCUMENT = "AssembleDocument".freeze
35
+ PRINTING_QUALITY = "PrintingQuality".freeze
36
+
37
+ # Builds the enum from string
38
+ # @param [String] The enum value in the form of the string
39
+ # @return [String] The enum value
40
+ def build_from_hash(value)
41
+ # resolve issue with Concstant Name modification (ex: "FooName" to :FOO_NAME)
42
+ # consantValues = PermissionsFlags.constants.select{|c| c.to_s == value}
43
+ constantValues = PermissionsFlags.constants.select{ |const_name| PermissionsFlags.const_get(const_name) == value}
44
+
45
+ raise "Invalid ENUM value #{value} for class #PermissionsFlags" if constantValues.empty?
46
+ value
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,308 @@
1
+ =begin
2
+ --------------------------------------------------------------------------------------------------------------------
3
+ Copyright (c) 2019 Aspose.PDF Cloud
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
+ SOFTWARE.
19
+ --------------------------------------------------------------------------------------------------------------------
20
+ =end
21
+
22
+ require 'date'
23
+ require 'time'
24
+
25
+ module AsposePdfCloud
26
+ # Represents a row of the table.
27
+ class Row
28
+ # Gets or sets the background color.
29
+ attr_accessor :background_color
30
+
31
+ # Gets or sets the border.
32
+ attr_accessor :border
33
+
34
+ # Sets the cells of the row.
35
+ attr_accessor :cells
36
+
37
+ # Gets default cell border;
38
+ attr_accessor :default_cell_border
39
+
40
+ # Gets height for row;
41
+ attr_accessor :min_row_height
42
+
43
+ # Gets fixed row height - row may have fixed height;
44
+ attr_accessor :fixed_row_height
45
+
46
+ # Gets fixed row is in new page - page with this property should be printed to next page Default false;
47
+ attr_accessor :is_in_new_page
48
+
49
+ # Gets is row can be broken between two pages
50
+ attr_accessor :is_row_broken
51
+
52
+ # Gets or sets default text state for row cells
53
+ attr_accessor :default_cell_text_state
54
+
55
+ # Gets or sets default margin for row cells
56
+ attr_accessor :default_cell_padding
57
+
58
+ # Gets or sets the vertical alignment.
59
+ attr_accessor :vertical_alignment
60
+
61
+
62
+ # Attribute mapping from ruby-style variable name to JSON key.
63
+ def self.attribute_map
64
+ {
65
+ :'background_color' => :'BackgroundColor',
66
+ :'border' => :'Border',
67
+ :'cells' => :'Cells',
68
+ :'default_cell_border' => :'DefaultCellBorder',
69
+ :'min_row_height' => :'MinRowHeight',
70
+ :'fixed_row_height' => :'FixedRowHeight',
71
+ :'is_in_new_page' => :'IsInNewPage',
72
+ :'is_row_broken' => :'IsRowBroken',
73
+ :'default_cell_text_state' => :'DefaultCellTextState',
74
+ :'default_cell_padding' => :'DefaultCellPadding',
75
+ :'vertical_alignment' => :'VerticalAlignment'
76
+ }
77
+ end
78
+
79
+ # Attribute type mapping.
80
+ def self.swagger_types
81
+ {
82
+ :'background_color' => :'Color',
83
+ :'border' => :'BorderInfo',
84
+ :'cells' => :'Array<Cell>',
85
+ :'default_cell_border' => :'BorderInfo',
86
+ :'min_row_height' => :'Float',
87
+ :'fixed_row_height' => :'Float',
88
+ :'is_in_new_page' => :'BOOLEAN',
89
+ :'is_row_broken' => :'BOOLEAN',
90
+ :'default_cell_text_state' => :'TextState',
91
+ :'default_cell_padding' => :'MarginInfo',
92
+ :'vertical_alignment' => :'VerticalAlignment'
93
+ }
94
+ end
95
+
96
+ # Initializes the object
97
+ # @param [Hash] attributes Model attributes in the form of hash
98
+ def initialize(attributes = {})
99
+ return unless attributes.is_a?(Hash)
100
+
101
+ # convert string to symbol for hash key
102
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
103
+
104
+ if attributes.has_key?(:'BackgroundColor')
105
+ self.background_color = attributes[:'BackgroundColor']
106
+ end
107
+
108
+ if attributes.has_key?(:'Border')
109
+ self.border = attributes[:'Border']
110
+ end
111
+
112
+ if attributes.has_key?(:'Cells')
113
+ if (value = attributes[:'Cells']).is_a?(Array)
114
+ self.cells = value
115
+ end
116
+ end
117
+
118
+ if attributes.has_key?(:'DefaultCellBorder')
119
+ self.default_cell_border = attributes[:'DefaultCellBorder']
120
+ end
121
+
122
+ if attributes.has_key?(:'MinRowHeight')
123
+ self.min_row_height = attributes[:'MinRowHeight']
124
+ end
125
+
126
+ if attributes.has_key?(:'FixedRowHeight')
127
+ self.fixed_row_height = attributes[:'FixedRowHeight']
128
+ end
129
+
130
+ if attributes.has_key?(:'IsInNewPage')
131
+ self.is_in_new_page = attributes[:'IsInNewPage']
132
+ end
133
+
134
+ if attributes.has_key?(:'IsRowBroken')
135
+ self.is_row_broken = attributes[:'IsRowBroken']
136
+ end
137
+
138
+ if attributes.has_key?(:'DefaultCellTextState')
139
+ self.default_cell_text_state = attributes[:'DefaultCellTextState']
140
+ end
141
+
142
+ if attributes.has_key?(:'DefaultCellPadding')
143
+ self.default_cell_padding = attributes[:'DefaultCellPadding']
144
+ end
145
+
146
+ if attributes.has_key?(:'VerticalAlignment')
147
+ self.vertical_alignment = attributes[:'VerticalAlignment']
148
+ end
149
+
150
+ end
151
+
152
+ # Show invalid properties with the reasons. Usually used together with valid?
153
+ # @return Array for valid properies with the reasons
154
+ def list_invalid_properties
155
+ invalid_properties = Array.new
156
+ if @cells.nil?
157
+ invalid_properties.push("invalid value for 'cells', cells cannot be nil.")
158
+ end
159
+
160
+ return invalid_properties
161
+ end
162
+
163
+ # Check to see if the all the properties in the model are valid
164
+ # @return true if the model is valid
165
+ def valid?
166
+ return false if @cells.nil?
167
+ return true
168
+ end
169
+
170
+ # Checks equality by comparing each attribute.
171
+ # @param [Object] Object to be compared
172
+ def ==(o)
173
+ return true if self.equal?(o)
174
+ self.class == o.class &&
175
+ background_color == o.background_color &&
176
+ border == o.border &&
177
+ cells == o.cells &&
178
+ default_cell_border == o.default_cell_border &&
179
+ min_row_height == o.min_row_height &&
180
+ fixed_row_height == o.fixed_row_height &&
181
+ is_in_new_page == o.is_in_new_page &&
182
+ is_row_broken == o.is_row_broken &&
183
+ default_cell_text_state == o.default_cell_text_state &&
184
+ default_cell_padding == o.default_cell_padding &&
185
+ vertical_alignment == o.vertical_alignment
186
+ end
187
+
188
+ # @see the `==` method
189
+ # @param [Object] Object to be compared
190
+ def eql?(o)
191
+ self == o
192
+ end
193
+
194
+ # Calculates hash code according to all attributes.
195
+ # @return [Fixnum] Hash code
196
+ def hash
197
+ [background_color, border, cells, default_cell_border, min_row_height, fixed_row_height, is_in_new_page, is_row_broken, default_cell_text_state, default_cell_padding, vertical_alignment].hash
198
+ end
199
+
200
+ # Builds the object from hash
201
+ # @param [Hash] attributes Model attributes in the form of hash
202
+ # @return [Object] Returns the model itself
203
+ def build_from_hash(attributes)
204
+ return nil unless attributes.is_a?(Hash)
205
+ self.class.swagger_types.each_pair do |key, type|
206
+ if type =~ /\AArray<(.*)>/i
207
+ # check to ensure the input is an array given that the the attribute
208
+ # is documented as an array but the input is not
209
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
210
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
211
+ end
212
+ elsif !attributes[self.class.attribute_map[key]].nil?
213
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
214
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
215
+ end
216
+
217
+ self
218
+ end
219
+
220
+ # Deserializes the data based on type
221
+ # @param string type Data type
222
+ # @param string value Value to be deserialized
223
+ # @return [Object] Deserialized data
224
+ def _deserialize(type, value)
225
+ case type.to_sym
226
+ when :DateTime
227
+ format = (value.include? '+') ? '/Date(%Q%z)/' : '/Date(%Q)/'
228
+ Time.strptime(value, format).utc.to_datetime
229
+ when :Date
230
+ format = (value.include? '+') ? '/Date(%Q%z)/' : '/Date(%Q)/'
231
+ Time.strptime(value, format).utc.to_datetime.to_date
232
+ when :String
233
+ value.to_s
234
+ when :Integer
235
+ value.to_i
236
+ when :Float
237
+ value.to_f
238
+ when :BOOLEAN
239
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
240
+ true
241
+ else
242
+ false
243
+ end
244
+ when :Object
245
+ # generic object (usually a Hash), return directly
246
+ value
247
+ when /\AArray<(?<inner_type>.+)>\z/
248
+ inner_type = Regexp.last_match[:inner_type]
249
+ value.map { |v| _deserialize(inner_type, v) }
250
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
251
+ k_type = Regexp.last_match[:k_type]
252
+ v_type = Regexp.last_match[:v_type]
253
+ {}.tap do |hash|
254
+ value.each do |k, v|
255
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
256
+ end
257
+ end
258
+ else # model
259
+ temp_model = AsposePdfCloud.const_get(type).new
260
+ temp_model.build_from_hash(value)
261
+ end
262
+ end
263
+
264
+ # Returns the string representation of the object
265
+ # @return [String] String presentation of the object
266
+ def to_s
267
+ to_hash.to_s
268
+ end
269
+
270
+ # to_body is an alias to to_hash (backward compatibility)
271
+ # @return [Hash] Returns the object in the form of hash
272
+ def to_body
273
+ to_hash
274
+ end
275
+
276
+ # Returns the object in the form of hash
277
+ # @return [Hash] Returns the object in the form of hash
278
+ def to_hash
279
+ hash = {}
280
+ self.class.attribute_map.each_pair do |attr, param|
281
+ value = self.send(attr)
282
+ next if value.nil?
283
+ hash[param] = _to_hash(value)
284
+ end
285
+ hash
286
+ end
287
+
288
+ # Outputs non-array value in the form of hash
289
+ # For object, use to_hash. Otherwise, just return the value
290
+ # @param [Object] value Any valid value
291
+ # @return [Hash] Returns the value in the form of hash
292
+ def _to_hash(value)
293
+ if value.is_a?(Array)
294
+ value.compact.map{ |v| _to_hash(v) }
295
+ elsif value.is_a?(Hash)
296
+ {}.tap do |hash|
297
+ value.each { |k, v| hash[k] = _to_hash(v) }
298
+ end
299
+ elsif value.respond_to? :to_hash
300
+ value.to_hash
301
+ else
302
+ value
303
+ end
304
+ end
305
+
306
+ end
307
+
308
+ end
@@ -31,33 +31,18 @@ module AsposePdfCloud
31
31
  # Sets or gets a bool value that indicates the content is stamped as background. If the value is true, the stamp content is layed at the bottom. By defalt, the value is false, the stamp content is layed at the top.
32
32
  attr_accessor :background
33
33
 
34
- # Gets or sets bottom margin of stamp.
35
- attr_accessor :bottom_margin
36
-
37
34
  # Gets or sets Horizontal alignment of stamp on the page.
38
35
  attr_accessor :horizontal_alignment
39
36
 
40
- # Gets or sets left margin of stamp.
41
- attr_accessor :left_margin
42
-
43
37
  # Gets or sets a value to indicate the stamp opacity. The value is from 0.0 to 1.0. By default the value is 1.0.
44
38
  attr_accessor :opacity
45
39
 
46
- # Gets or sets right margin of stamp.
47
- attr_accessor :right_margin
48
-
49
40
  # Sets or gets the rotation of stamp content according values. Note. This property is for set angles which are multiples of 90 degrees (0, 90, 180, 270 degrees). To set arbitrary angle use RotateAngle property. If angle set by ArbitraryAngle is not multiple of 90 then Rotate property returns Rotation.None.
50
41
  attr_accessor :rotate
51
42
 
52
43
  # Gets or sets rotate angle of stamp in degrees. This property allows to set arbitrary rotate angle.
53
44
  attr_accessor :rotate_angle
54
45
 
55
- # Gets or sets top margin of stamp.
56
- attr_accessor :top_margin
57
-
58
- # Gets or sets vertical alignment of stamp on page.
59
- attr_accessor :vertical_alignment
60
-
61
46
  # Horizontal stamp coordinate, starting from the left.
62
47
  attr_accessor :x_indent
63
48
 
@@ -73,15 +58,10 @@ module AsposePdfCloud
73
58
  {
74
59
  :'links' => :'Links',
75
60
  :'background' => :'Background',
76
- :'bottom_margin' => :'BottomMargin',
77
61
  :'horizontal_alignment' => :'HorizontalAlignment',
78
- :'left_margin' => :'LeftMargin',
79
62
  :'opacity' => :'Opacity',
80
- :'right_margin' => :'RightMargin',
81
63
  :'rotate' => :'Rotate',
82
64
  :'rotate_angle' => :'RotateAngle',
83
- :'top_margin' => :'TopMargin',
84
- :'vertical_alignment' => :'VerticalAlignment',
85
65
  :'x_indent' => :'XIndent',
86
66
  :'y_indent' => :'YIndent',
87
67
  :'zoom' => :'Zoom'
@@ -93,15 +73,10 @@ module AsposePdfCloud
93
73
  {
94
74
  :'links' => :'Array<Link>',
95
75
  :'background' => :'BOOLEAN',
96
- :'bottom_margin' => :'Float',
97
76
  :'horizontal_alignment' => :'HorizontalAlignment',
98
- :'left_margin' => :'Float',
99
77
  :'opacity' => :'Float',
100
- :'right_margin' => :'Float',
101
78
  :'rotate' => :'Rotation',
102
79
  :'rotate_angle' => :'Float',
103
- :'top_margin' => :'Float',
104
- :'vertical_alignment' => :'VerticalAlignment',
105
80
  :'x_indent' => :'Float',
106
81
  :'y_indent' => :'Float',
107
82
  :'zoom' => :'Float'
@@ -126,26 +101,14 @@ module AsposePdfCloud
126
101
  self.background = attributes[:'Background']
127
102
  end
128
103
 
129
- if attributes.has_key?(:'BottomMargin')
130
- self.bottom_margin = attributes[:'BottomMargin']
131
- end
132
-
133
104
  if attributes.has_key?(:'HorizontalAlignment')
134
105
  self.horizontal_alignment = attributes[:'HorizontalAlignment']
135
106
  end
136
107
 
137
- if attributes.has_key?(:'LeftMargin')
138
- self.left_margin = attributes[:'LeftMargin']
139
- end
140
-
141
108
  if attributes.has_key?(:'Opacity')
142
109
  self.opacity = attributes[:'Opacity']
143
110
  end
144
111
 
145
- if attributes.has_key?(:'RightMargin')
146
- self.right_margin = attributes[:'RightMargin']
147
- end
148
-
149
112
  if attributes.has_key?(:'Rotate')
150
113
  self.rotate = attributes[:'Rotate']
151
114
  end
@@ -154,14 +117,6 @@ module AsposePdfCloud
154
117
  self.rotate_angle = attributes[:'RotateAngle']
155
118
  end
156
119
 
157
- if attributes.has_key?(:'TopMargin')
158
- self.top_margin = attributes[:'TopMargin']
159
- end
160
-
161
- if attributes.has_key?(:'VerticalAlignment')
162
- self.vertical_alignment = attributes[:'VerticalAlignment']
163
- end
164
-
165
120
  if attributes.has_key?(:'XIndent')
166
121
  self.x_indent = attributes[:'XIndent']
167
122
  end
@@ -196,15 +151,10 @@ module AsposePdfCloud
196
151
  self.class == o.class &&
197
152
  links == o.links &&
198
153
  background == o.background &&
199
- bottom_margin == o.bottom_margin &&
200
154
  horizontal_alignment == o.horizontal_alignment &&
201
- left_margin == o.left_margin &&
202
155
  opacity == o.opacity &&
203
- right_margin == o.right_margin &&
204
156
  rotate == o.rotate &&
205
157
  rotate_angle == o.rotate_angle &&
206
- top_margin == o.top_margin &&
207
- vertical_alignment == o.vertical_alignment &&
208
158
  x_indent == o.x_indent &&
209
159
  y_indent == o.y_indent &&
210
160
  zoom == o.zoom
@@ -219,7 +169,7 @@ module AsposePdfCloud
219
169
  # Calculates hash code according to all attributes.
220
170
  # @return [Fixnum] Hash code
221
171
  def hash
222
- [links, background, bottom_margin, horizontal_alignment, left_margin, opacity, right_margin, rotate, rotate_angle, top_margin, vertical_alignment, x_indent, y_indent, zoom].hash
172
+ [links, background, horizontal_alignment, opacity, rotate, rotate_angle, x_indent, y_indent, zoom].hash
223
173
  end
224
174
 
225
175
  # Builds the object from hash