Class: GroupDocs::Document

Inherits:
Api::Entity show all
Extended by:
Api::Helpers::MIME
Includes:
Api::Helpers::AccessMode, Api::Helpers::AccessRights, Api::Helpers::Status
Defined in:
lib/groupdocs/document.rb

Defined Under Namespace

Classes: Annotation, Change, Field, MetaData, Page, Rectangle, TemplateEditorFieldOption, TemplateEditorFieldStyle, TemplateEditorFields, View

Constant Summary collapse

ACCESS_MODES =
{
    :private    => 0,
    :restricted => 1,
    :public     => 2,
    :inherited  => 254,
    :denied     => 255,
}

Constants included from Api::Helpers::AccessRights

Api::Helpers::AccessRights::ACCESS_RIGHTS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Api::Helpers::ByteFlag

#array_from_byte, #byte_from_array

Methods inherited from Api::Entity

#inspect, #to_hash

Methods included from Api::Helpers::Accessor

#alias_accessor

Constructor Details

#initialize(options = {}, &blk) ⇒ Document

Creates new GroupDocs::Document.

You should avoid creating documents directly. Instead, use #to_document instance method of GroupDocs::Storage::File.

Raises:

  • (ArgumentError)

    If file is not passed or is not an instance of GroupDocs::Storage::File



322
323
324
325
326
# File 'lib/groupdocs/document.rb', line 322

def initialize(options = {}, &blk)
  super(options, &blk)
  file.is_a?(GroupDocs::Storage::File) or raise ArgumentError,
                                                "You have to pass GroupDocs::Storage::File object: #{file.inspect}."
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &blk) ⇒ Object



1305
1306
1307
# File 'lib/groupdocs/document.rb', line 1305

def method_missing(method, *args, &blk)
  file.respond_to?(method) ? file.send(method, *args, &blk) : super
end

Instance Attribute Details

#dependent_questionnaires_countObject



220
221
222
# File 'lib/groupdocs/document.rb', line 220

def dependent_questionnaires_count
  @dependent_questionnaires_count
end

#documentDescriptionObject

added in release 2.0.0



227
228
229
# File 'lib/groupdocs/document.rb', line 227

def documentDescription
  @documentDescription
end

#field_countObject



214
215
216
# File 'lib/groupdocs/document.rb', line 214

def field_count
  @field_count
end

#fieldTypeObject

added in release 1.6.0



218
219
220
# File 'lib/groupdocs/document.rb', line 218

def fieldType
  @fieldType
end

#fileObject



202
203
204
# File 'lib/groupdocs/document.rb', line 202

def file
  @file
end

#orderObject



212
213
214
# File 'lib/groupdocs/document.rb', line 212

def order
  @order
end

#output_formatsArray<Symbol>

Returns output formats in human-readable format.

Returns:

  • (Array<Symbol>)


208
209
210
# File 'lib/groupdocs/document.rb', line 208

def output_formats
  @output_formats
end

#outputsObject



206
207
208
# File 'lib/groupdocs/document.rb', line 206

def outputs
  @outputs
end

#process_dateTime

Converts timestamp which is return by API server to Time object.

Returns:

  • (Time)


204
205
206
# File 'lib/groupdocs/document.rb', line 204

def process_date
  @process_date
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


210
211
212
# File 'lib/groupdocs/document.rb', line 210

def status
  @status
end

#upload_timeObject



222
223
224
# File 'lib/groupdocs/document.rb', line 222

def upload_time
  @upload_time
end

Class Method Details

.metadata!(path, access = {}) ⇒ Array<GroupDocs::Document::View>

Cnanged in release 2.0.0

Returns a document metadata by given path.

Parameters:

  • path (String)

    Full path to document

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/groupdocs/document.rb', line 181

def self.metadata!(path, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{path}"
  end.execute!

  Document::MetaData.new do ||
    .id = json[:id]
    .guid = json[:guid]
    .page_count = json[:page_count]
    .views_count = json[:views_count]
    .type = json[:type]
    .url = json[:url]
    if json[:last_view]
      .last_view = json[:last_view]
    end
  end
end

.public_fields!(access = {}) ⇒ Array

Changed in release 1.5.8

Get document fields

Parameters:

  • document (String)

    Document GUID

  • settings (Hash)

    Settings of the signing document

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array)


1379
1380
1381
1382
1383
1384
1385
# File 'lib/groupdocs/document.rb', line 1379

def self.public_fields!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/signature/public/documents/#{file.guid}/fields"
  end.execute!
end

.sign_documents!(documents, signatures, options = {}, access = {}) ⇒ Object

Signs given documents with signatures.

Examples:

# prepare documents
file_one = GroupDocs::Storage::File.new(name: 'document_one.doc', local_path: '~/Documents/document_one.doc')
file_two = GroupDocs::Storage::File.new(name: 'document_one.pdf', local_path: '~/Documents/document_one.pdf')
document_one = file_one.to_document
document_two = file_two.to_document
# prepare signatures
signature_one = GroupDocs::Signature.new(name: 'John Smith', image_path: '~/Documents/signature_one.png')
signature_two = GroupDocs::Signature.new(name: 'Sara Smith', image_path: '~/Documents/signature_two.png')
signature_one.position = { top: 0.1, left: 0.07, width: 50, height: 50 }
signature_one.email = "[email protected]"
signature_two.position = { top: 0.2, left: 0.2, width: 100, height: 100 }
signature_one.email = "[email protected]"
# sign documents and download results
signed_documents = GroupDocs::Document.sign_documents!([document_one, document_two], [signature_one, signature_two])
signed_documents.each do |document|
  document.file.download! '~/Documents'
end

Parameters:

  • documents (Array<GroupDocs::Document>)

    Each document file should have “#name” and “#local_path”

  • signatures (Array<GroupDocs::Signature>)

    Each signature should have “#name”, “#image_path” and “#position”



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/groupdocs/document.rb', line 103

def self.sign_documents!(documents, signatures, options = {}, access = {})
  documents.each do |document|
    document.is_a?(Document) or raise ArgumentError, "Each document should be GroupDocs::Document object, received: #{document.inspect}"
    document.file.name       or raise ArgumentError, "Each document file should have name, received: #{document.file.name.inspect}"
    document.file.local_path or raise ArgumentError, "Each document file should have local_path, received: #{document.file.local_path.inspect}"
  end
  signatures.each do |signature|
    signature.is_a?(Signature) or raise ArgumentError, "Each signature should be GroupDocs::Signature object, received: #{signature.inspect}"
    signature.name             or raise ArgumentError, "Each signature should have name, received: #{signature.name.inspect}"
    signature.image_path       or raise ArgumentError, "Each signature should have image_path, received: #{signature.image_path.inspect}"
    signature.position         or raise ArgumentError, "Each signature should have position, received: #{signature.position.inspect}"
  end

  documents_to_sign = []
  documents.map(&:file).each do |file|
    document = { :name => file.name }
    contents = File.open(file.local_path, 'rb').read
    contents = Base64.strict_encode64(contents)
    document.merge!(:data => "data:#{mime_type(file.local_path)};base64,#{contents}")

    documents_to_sign << document

  end

  signers = []
  signatures.each do |signature|
    contents = File.open(signature.image_path, 'rb').read
    contents = Base64.strict_encode64(contents)
    signer = { :name => signature.name, :data => "data:#{mime_type(signature.image_path)};base64,#{contents}" }
    signer.merge!(signature.position)
    # place signature on is not implemented yet
    signer.merge!(:placeSignatureOn => nil)
    signer.merge!(:email => signature.email)

    signers << signer


  end

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = '/signature/{{client_id}}/sign'
    request[:request_body] = { :documents => documents_to_sign, :signers => signers }
  end.execute!
  json[:jobId]

end

.templates!(options = {}, access = {}) ⇒ Array<GroupDocs::Document>

Returns an array of all templates (documents in “Templates” directory).

Parameters:

  • options (Hash) (defaults to: {})

    Options

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :orderBy (String)

    Order by column

  • :isAscending (Boolean)

    Order by ascending or descending

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/groupdocs/document.rb', line 64

def self.templates!(options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/merge/{{client_id}}/templates'
  end
  api.add_params(options)
  json = api.execute!
  json[:templates].map do |template|
    template.merge!(:file => Storage::File.new(template))
    Document.new(template)
  end
end

.views!(options = {}, access = {}) ⇒ Array<GroupDocs::Document::View>

Returns an array of views for all documents.

Parameters:

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :page_index (Integer)

    Page to start with

  • :page_size (Integer)

    Total number of entries

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/groupdocs/document.rb', line 39

def self.views!(options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/doc/{{client_id}}/views'
  end
  api.add_params(options)
  json = api.execute!

  json[:views].map do |view|
    Document::View.new(view)
  end
end

Instance Method Details

#access_mode!(access = {}) ⇒ Symbol

Returns access mode of document.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Symbol)

    One of :private, :restricted or :public access modes



545
546
547
548
549
550
551
552
553
# File 'lib/groupdocs/document.rb', line 545

def access_mode!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/accessinfo"
  end.execute!

  parse_access_mode(json[:access])
end

#access_mode_set!(mode, access = {}) ⇒ Symbol Also known as: access_mode=

Sets access mode of document.

Parameters:

  • mode (Symbol)

    One of :private, :restricted or :public access modes

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Symbol)

    Set access mode



564
565
566
567
568
569
570
571
572
573
574
# File 'lib/groupdocs/document.rb', line 564

def access_mode_set!(mode, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
  end
  api.add_params(:mode => ACCESS_MODES[mode])
  json = api.execute!

  parse_access_mode(json[:access])
end

#add_collaborator!(collaborator, access = {}) ⇒ Object

Adds document annotations collaborator.

Parameters:

  • collaborator (GroupDocs::User)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
# File 'lib/groupdocs/document.rb', line 1188

def add_collaborator!(collaborator, access = {})
  collaborator.is_a?(GroupDocs::User) or raise ArgumentError,
                                               "Collaborator should be GroupDocs::User object, received: #{collaborator.inspect}"

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators"
    request[:request_body] = collaborator.to_hash
  end.execute!
end

#add_questionnaire!(questionnaire, access = {}) ⇒ Object

Adds questionnaire to document.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if questionnaire is not GroupDocs::Questionnaire object



904
905
906
907
908
909
910
911
912
913
# File 'lib/groupdocs/document.rb', line 904

def add_questionnaire!(questionnaire, access = {})
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
                                                         "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires/#{questionnaire.id}"
  end.execute!
end

#add_questionnaire_template!(fields, access = {}) ⇒ Object

added in release 1.8.0

Add template editor fields to the specific document

@example

file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = GroupDocs::Document::TemplateEditorFields.new field.name = ‘test’ field.fieldtype = ‘TextBox’ field.page = 1 file.add_questionnaire_template!( )

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
# File 'lib/groupdocs/document.rb', line 1459

def add_questionnaire_template!(fields, access = {})

  fields.each do |field|
    field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError,
                                                                    "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}"
  end

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates/add"
    request[:request_body] = fields
  end.execute!
  json[:templateFields].map do |field|
    Document::Field.new(field)
  end
end

#annotations!(access = {}) ⇒ Array<GroupDocs::Document::Annotation>

Returns an array of annotations.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
# File 'lib/groupdocs/document.rb', line 970

def annotations!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/annotations"
  end.execute!

  if json[:annotations]
    json[:annotations].map do |annotation|
      annotation.merge!(:document => self)
      Document::Annotation.new(annotation)
    end
  else
    []
  end
end

#changes!(access = {}) ⇒ Object

Returns an array of changes in document.

Examples:

document_one = GroupDocs::Storage::Folder.list![0].to_document
document_two = GroupDocs::Storage::Folder.list![1].to_document
job = document_one.compare!(document_two)
sleep(5) # wait for server to finish comparing
result = job.documents![:outputs].first
result.changes!

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
# File 'lib/groupdocs/document.rb', line 1084

def changes!(access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/comparison/public/#{file.guid}/changes"
  end
  json = api.execute!

  json[:changes].map do |change|
    Document::Change.new(change)
  end
end

#collaborators!(access = {}) ⇒ Array<GroupDocs::User>

Returns document annotations collaborators.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
# File 'lib/groupdocs/document.rb', line 1145

def collaborators!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators"
  end.execute!

  json[:collaborators].map do |collaborator|
    User.new(collaborator)
  end
end

#compare!(document, callback, access = {}) ⇒ GroupDocs::Job

Changed in release 1.5.8 Schedules a job for comparing document with given.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

Raises:

  • (ArgumentError)

    if document is not GroupDocs::Document object



1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
# File 'lib/groupdocs/document.rb', line 1018

def compare!(document, callback, access = {})
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
                                               "Document should be GroupDocs::Document object, received: #{document.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/comparison/{{client_id}}/compare"
  end
  api.add_params(:source => file.guid, :target => document.file.guid, :callback => callback)
  json = api.execute!

  Job.new(:id => json[:job_id])
end

#content!(content_type, access = {}) ⇒ String

Returns document content

Parameters:

  • content_type (String)

    Content type

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (String)


494
495
496
497
498
499
500
501
502
# File 'lib/groupdocs/document.rb', line 494

def content!(content_type, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/content/#{content_type}"
  end.execute!

  json[:content]
end

#convert!(format, options = {}, access = {}) ⇒ GroupDocs::Job

Converts document to given format.

Examples:

document = GroupDocs::Storage::Folder.list!.first.to_document
job = document.convert!(:docx)
sleep(5) # wait for server to finish converting
original_document = job.documents![:inputs].first
converted_file = original_file.outputs.first
converted_file.download!(File.dirname(__FILE__))

Parameters:

  • format (Symbol)
  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :email_results (Boolean)
  • :new_description (String)
  • :print_script (String)
  • :callback (String)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



798
799
800
801
802
803
804
805
806
807
808
809
810
# File 'lib/groupdocs/document.rb', line 798

def convert!(format, options = {}, access = {})
  options.merge!(:new_type => format)

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/async/{{client_id}}/files/#{file.guid}"
  end
  api.add_params(options)
  json = api.execute!

  Job.new(:id => json[:job_id])
end

#create_questionnaire!(questionnaire, access = {}) ⇒ GroupDocs::Questionnaire

Creates questionnaire and adds it to document.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

Raises:

  • (ArgumentError)

    if questionnaire is not GroupDocs::Questionnaire object



926
927
928
929
930
931
932
933
934
935
936
937
938
939
# File 'lib/groupdocs/document.rb', line 926

def create_questionnaire!(questionnaire, access = {})
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
                                                         "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires"
    request[:request_body] = questionnaire.to_hash
  end.execute!

  questionnaire.id = json[:questionnaire_id]
  questionnaire
end

#datasource!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job

Creates new job to merge datasource into document.

Parameters:

  • datasource (GroupDocs::DataSource)
  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :new_type (Boolean)

    New file format type

  • :email_results (Boolean)

    Set to true if converted document should be emailed

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

Raises:

  • (ArgumentError)

    if datasource is not GroupDocs::DataSource object



826
827
828
829
830
831
832
833
834
835
836
837
838
839
# File 'lib/groupdocs/document.rb', line 826

def datasource!(datasource, options = {}, access = {})
  datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
                                                   "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/datasources/#{datasource.id}"
  end
  api.add_params(options)
  json = api.execute!

  Job.new(:id => json[:job_id])
end

#datasource_fields!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job

Creates new job to merge datasource fields into document.

Parameters:

  • datasource (GroupDocs::DataSource)
  • options (Hash) (defaults to: {})
  • datasourceFields (Array)

    (:name [String], :value [String], :contentType [String], :type [String], :nested_fields [<Array> datasourceFields])

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :new_type (Boolean)

    New file format type

  • :email_results (Boolean)

    Set to true if converted document should be emailed

  • :assembly_name (Boolean)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

Raises:

  • (ArgumentError)

    if datasource is not GroupDocs::DataSource object



857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
# File 'lib/groupdocs/document.rb', line 857

def datasource_fields!(datasource, options = {}, access = {})
  datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
                                                   "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/datasources"
    request[:request_body] = datasource.fields
  end
  api.add_params(options)
  json = api.execute!

  Job.new(:id => json[:job_id])
end

#delete_questionnaire_template!(fields, access = {}) ⇒ Object

added in release 1.8.0

Delete template’s fields

@example

file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = file.editor_fields! file.delete_questionnaire_template!( )

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
# File 'lib/groupdocs/document.rb', line 1531

def delete_questionnaire_template!(fields, access = {})

  fields.each do |field|
    field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError,
                                                                    "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}"
  end

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates/delete"
    request[:request_body] = fields
  end.execute!
  json[:templateFields].map do |field|
    Document::Field.new(field)
  end
end

#details!(access = {}) ⇒ Hash

Changed in release 1.5.8 Returns document details.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Hash)


996
997
998
999
1000
1001
1002
1003
1004
# File 'lib/groupdocs/document.rb', line 996

def details!(access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/comparison/{{client_id}}document"
  end
  api.add_params(:guid => file.guid)
  api.execute!
end

#document_status!(job_guid, access = {}) ⇒ Object

Get sign documents status

Parameters:

  • job_guid (String)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


160
161
162
163
164
165
166
167
168
# File 'lib/groupdocs/document.rb', line 160

def document_status!(job_guid,  access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/signature/{{client_id}}/documents/#{job_guid}"
  end.execute!

   json[:documents]
end

#download!(path, options = {}, access = {}) ⇒ Object

Changed in release 1.5.8 Download comparison result file.

Examples:

document_one = GroupDocs::Storage::Folder.list![0].to_document
document_two = GroupDocs::Storage::Folder.list![1].to_document
job = document_one.compare!(document_two)
sleep(5) # wait for server to finish comparing
result = job.documents![:outputs].first
result.download!("#{File.dirname(__FILE__)}", {:format => 'pdf'})

Parameters:

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

  • format (Hash)

    a customizable set of options

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
# File 'lib/groupdocs/document.rb', line 1116

def download!( path, options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DOWNLOAD
    request[:path] = "/comparison/public/#{file.guid}/download"
  end
  api.add_params(options)
  response = api.execute!

  if file.name.split('.').last != options[:format]
    file_name = file.name.delete!(file.name.split('.').last) +  options[:format]
  else
    file_name = file.name
  end
  filepath = "#{path}/#{file_name}"
  Object::File.open(filepath, 'wb') do |file|
    file.write(response)
  end

end

#editlock!(access = {}) ⇒ Object

Returns editing metadata.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


410
411
412
413
414
415
416
# File 'lib/groupdocs/document.rb', line 410

def editlock!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editlock"
  end.execute!
end

#editlock_clear!(options = {}, access = {}) ⇒ Integer

Removes edit lock for a document and replaces the document with its edited copy

Parameters:

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :lockId (String)

    Start page to return image for (starting with 0)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Integer)


428
429
430
431
432
433
434
435
# File 'lib/groupdocs/document.rb', line 428

def editlock_clear!(options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editlock"
  end
  api.add_params(options).execute!
end

#editor_fields!(access = {}) ⇒ Object

changed in release 2.1.0

Get template fields.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1395
1396
1397
1398
1399
1400
1401
# File 'lib/groupdocs/document.rb', line 1395

def editor_fields!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editor_fields"
  end.execute!
end

#fields!(access = {}) ⇒ Array<GroupDocs::Document::Field>

Returns an array of document fields.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



636
637
638
639
640
641
642
643
644
645
646
647
648
# File 'lib/groupdocs/document.rb', line 636

def fields!(access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/fields"
  end
  api.add_params(:include_geometry => true)
  json = api.execute!

  json[:fields].map do |field|
    Document::Field.new(field)
  end
end

#formats!(access = {}) ⇒ Array<Symbol>

Returns array of file formats document can be converted to.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array<Symbol>)


586
587
588
589
590
591
592
593
594
595
596
# File 'lib/groupdocs/document.rb', line 586

def formats!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.id}/formats"
  end.execute!

  json[:types].map do |format|
    format.downcase.to_sym
  end
end

#hyperlinks!(access = {}) ⇒ Object

added in release 1.5.8

Returns document hyperlinks

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1323
1324
1325
1326
1327
1328
1329
1330
1331
# File 'lib/groupdocs/document.rb', line 1323

def hyperlinks!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/hyperlinks"
  end.execute!

  json[:links]
end

#metadata!(access = {}) ⇒ GroupDocs::Document::MetaData

Cnanged in release 2.0.0

Returns document metadata.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
# File 'lib/groupdocs/document.rb', line 608

def metadata!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/metadata"
  end.execute!

  Document::MetaData.new do ||
    .id = json[:id]
    .guid = json[:guid]
    .page_count = json[:page_count]
    .views_count = json[:views_count]
    .type = json[:type]
    .url = json[:url]
    if json[:last_view]
      .last_view = json[:last_view]
    end
  end
end

#page_image!(path, name, page_number, dimension, options = {}, access = {}) ⇒ Object

Returns a stream of bytes representing a particular document page image.

Examples:

path = “#File.dirname(__FILE__)”

name = "test.jpg"

Parameters:

  • path (String)

    Document path

  • name (String)

    Name document (format - jpg)

  • page_number (Integer)

    Document page number to get image for

  • dimension (Integer)

    Image dimension “<width>x<height>”(500x600)

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :quality (Integer)

    Image quality in range 1-100.

  • :use_pdf (Boolean)

    A flag indicating whether a document should be converted to PDF format before generating the image.

  • :expires (Boolean)

    The date and time in milliseconds since epoch the URL expires.

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
# File 'lib/groupdocs/document.rb', line 346

def page_image!(path, name, page_number, dimension, options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DOWNLOAD
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/images/#{dimension}"
  end
  api.add_params(options)
  response = api.execute!

  filepath = "#{path}/#{name}"
  Object::File.open(filepath, 'wb') do |file|
    file.write(response)
  end

  filepath

end

#page_images!(width, height, options = {}, access = {}) ⇒ Array<String>

Returns array of URLs to images representing document pages.

Examples:

file = GroupDocs::Storage::Folder.list!.last
document = file.to_document
document.page_images! 1024, 768, first_page: 0, page_count: 1

Parameters:

  • width (Integer)

    Image width

  • height (Integer)

    Image height

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :first_page (Integer)

    Start page to return image for (starting with 0)

  • :page_count (Integer)

    Number of pages to return image for

  • :quality (Integer)
  • :use_pdf (Boolean)
  • :token (Boolean)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array<String>)


390
391
392
393
394
395
396
397
398
399
400
# File 'lib/groupdocs/document.rb', line 390

def page_images!(width, height, options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/images/#{width}x#{height}/urls"
  end
  api.add_params(options)
  json = api.execute!

  json[:url]
end

#password_set!(password, access = {}) ⇒ Array<GroupDocs::User>

Sets document password.

Parameters:

  • password (String)

    New password for document

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



730
731
732
733
734
735
736
737
738
# File 'lib/groupdocs/document.rb', line 730

def password_set!(password, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/password"
    request[:request_body] = password
  end.execute!

end

#public_sign_document!(options = {}, access = {}) ⇒ Array

Changed in release 1.5.8

Public Sign document

Parameters:

  • document (String)

    Document GUID

  • settings (Hash)

    Settings of the signing document

  • settings (String)

    waterMarkText

  • settings (String)

    waterMarkImage

  • settings (String)

    name (required)

  • settings (Double)

    top (required)

  • settings (Double)

    left (required)

  • settings (Double)

    width (required)

  • settings (Double)

    height (required)

  • settings (String)

    placeSignatureOn (required)

  • settings (String)

    data

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array)


1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
# File 'lib/groupdocs/document.rb', line 1355

def public_sign_document!(options = {}, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/signature/public/documents/#{file.guid}/sign"
    request[:request_body] = options
  end.execute!

  json[:jobId]
end

#questionnaire_template!(fields, access = {}) ⇒ Object

added in release 1.7.0

Create questionnaire template from file.

@example

file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = GroupDocs::Document::TemplateEditorFields.new field.name = ‘test’ field.fieldtype = ‘TextBox’ field.page = 1 file.questionnaire_template!( )

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
# File 'lib/groupdocs/document.rb', line 1422

def questionnaire_template!(fields, access = {})

  fields.each do |field|
    field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError,
                                                                    "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}"
  end

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates"
    request[:request_body] = fields
  end.execute!
  json[:templateFields].map do |field|
    Document::Field.new(field)
  end
end

#questionnaires!(access = {}) ⇒ Array<GroupDocs::Questionnaire>

Returns an array of questionnaires.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



882
883
884
885
886
887
888
889
890
891
892
# File 'lib/groupdocs/document.rb', line 882

def questionnaires!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires"
  end.execute!

  json[:questionnaires].map do |questionnaire|
    Questionnaire.new(questionnaire)
  end
end

#remove_collaborators!(reviewerId, access = {}) ⇒ Object

Delete document reviewer

Parameters:

  • reviewerId (String)

    Reviewer Id

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1209
1210
1211
1212
1213
1214
1215
1216
# File 'lib/groupdocs/document.rb', line 1209

def remove_collaborators!(reviewerId, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators/#{reviewerId}"
  end.execute!

end

#remove_questionnaire!(questionnaire, access = {}) ⇒ Object

Detaches questionnaire from document.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    if questionnaire is not GroupDocs::Questionnaire object



951
952
953
954
955
956
957
958
959
960
# File 'lib/groupdocs/document.rb', line 951

def remove_questionnaire!(questionnaire, access = {})
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
                                                         "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires/#{questionnaire.id}"
  end.execute!
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


1309
1310
1311
# File 'lib/groupdocs/document.rb', line 1309

def respond_to?(method)
  super or file.respond_to?(method)
end

#set_collaborators!(emails, version = 1, access = {}) ⇒ Array<GroupDocs::User>

Sets document annotations collaborators to given emails.

Parameters:

  • emails (Array<String>)

    List of collaborators’ email addresses

  • version (Integer) (defaults to: 1)

    Annotation version

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
# File 'lib/groupdocs/document.rb', line 1167

def set_collaborators!(emails, version = 1, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/version/#{version}/collaborators"
    request[:request_body] = emails
  end.execute!

  json[:collaborators].map do |collaborator|
    User.new(collaborator)
  end
end

#set_reviewers!(reviewers, access = {}) ⇒ Object

Sets reviewers for document.

Examples:

Change reviewer rights

reviewers = document.collaborators!
reviewers.each do |reviewer|
  reviewer.access_rights = %w(view)
end
document.set_reviewers! reviewers

Parameters:

  • reviewers (Array<GroupDocs::User>)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1233
1234
1235
1236
1237
1238
1239
1240
# File 'lib/groupdocs/document.rb', line 1233

def set_reviewers!(reviewers, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/reviewerRights"
    request[:request_body] = reviewers.map(&:to_hash)
  end.execute!
end

#set_session_callback!(url, access = {}) ⇒ Object

Sets session callback URL.

Parameters:

  • url (String)

    Callback URL

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1291
1292
1293
1294
1295
1296
1297
1298
# File 'lib/groupdocs/document.rb', line 1291

def set_session_callback!(url, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/sessionCallbackUrl"
    request[:request_body] = url
  end.execute!
end

Sets access rights for shared link.

Parameters:

  • rights (Array<Symbol>)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array<Symbol>)


1273
1274
1275
1276
1277
1278
1279
1280
1281
# File 'lib/groupdocs/document.rb', line 1273

def set_shared_link_access_rights!(rights, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/sharedLinkAccessRights"
    request[:request_body] = convert_access_rights_to_byte(rights)

  end.execute!
end

#shared_documents!(sharers_types, options = {}, access = {}) ⇒ Array<GroupDocs::User>

Returns an array of users a document is shared with.

Parameters:

  • sharers_types (String)
  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :page_index (String)
  • :page_size (String)
  • :order_by (String)
  • :order_ask (Boolean)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



683
684
685
686
687
688
689
690
691
# File 'lib/groupdocs/document.rb', line 683

def shared_documents!(sharers_types, options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/shares/#{sharers_types}"
  end
  api.add_params(options).execute!

end

Returns an array of access rights for shared link.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array<Symbol>)


1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
# File 'lib/groupdocs/document.rb', line 1250

def shared_link_access_rights!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/ant/{{client_id}}/files/#{file.guid}/sharedLinkAccessRights"
  end.execute!

  if json[:accessRights]
    convert_byte_to_access_rights json[:accessRights]
  else
    []
  end
end

#sharers!(access = {}) ⇒ Array<GroupDocs::User>

Returns an array of users a document is shared with.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



658
659
660
661
662
663
664
665
666
667
668
# File 'lib/groupdocs/document.rb', line 658

def sharers!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
  end.execute!

  json[:sharers].map do |user|
    User.new(user)
  end
end

#sharers_clear!(access = {}) ⇒ Object

Clears sharers list.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • nil



767
768
769
770
771
772
773
774
# File 'lib/groupdocs/document.rb', line 767

def sharers_clear!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers"
  end.execute![:shared_users]

end

#sharers_set!(emails, access = {}) ⇒ Array<GroupDocs::User>

Sets document sharers to given emails.

If empty array or nil passed, clears sharers.

Parameters:

  • emails (Array)

    List of email addresses to share with

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
# File 'lib/groupdocs/document.rb', line 704

def sharers_set!(emails, access = {})
  if emails.nil? || emails.empty?
    sharers_clear!(access)
  else
    json = Api::Request.new do |request|
      request[:access] = access
      request[:method] = :PUT
      request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers"
      request[:request_body] = emails
    end.execute!

    json[:shared_users].map do |user|
      User.new(user)
    end
  end
end

#tags!(access = {}) ⇒ Array<String>

Returns tags assigned to the document

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array<String>)


445
446
447
448
449
450
451
# File 'lib/groupdocs/document.rb', line 445

def tags!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags"
  end.execute!
end

#tags_clear!(access = {}) ⇒ String

Removes tags assigned to the document

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (String)


477
478
479
480
481
482
483
# File 'lib/groupdocs/document.rb', line 477

def tags_clear!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags"
  end.execute!
end

#tags_set!(access = {}) ⇒ String

Assign tags to the document.

Parameters:

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (String)


461
462
463
464
465
466
467
# File 'lib/groupdocs/document.rb', line 461

def tags_set!(access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags"
  end.execute!
end

#thumbnails!(options = {}, access = {}) ⇒ Array<String>

Returns array of URLs to images representing document pages thumbnails.

Examples:

file = GroupDocs::Storage::Folder.list!.last
document = file.to_document
document.thumbnails! first_page: 0, page_count: 1, width: 1024

Parameters:

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :page_number (Integer)

    Start page to return image for (starting with 0)

  • :page_count (Integer)

    Number of pages to return image for

  • :width (Integer)
  • :quality (Integer)
  • :use_pdf (Boolean)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Array<String>)


523
524
525
526
527
528
529
530
531
532
533
# File 'lib/groupdocs/document.rb', line 523

def thumbnails!(options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/thumbnails"
  end
  api.add_params(options)
  json = api.execute!

  json[:image_urls]
end

#update_changes!(changes, access = {}) ⇒ GroupDocs::Change

Updated in release 2.1.0

Schedules a job for comparing document with given.

Parameters:

  • changes (Array[GroupDocs::Document::Change])

    Comparison changes to update (accept or reject)

  • access (Hash) (defaults to: {})

    Access credentials

  • id (Hash)

    a customizable set of options

  • type (Hash)

    a customizable set of options

  • action (Hash)

    a customizable set of options

  • Page (Hash)

    a customizable set of options

  • box (Hash)

    a customizable set of options

  • text (Hash)

    a customizable set of options

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (GroupDocs::Change)


1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
# File 'lib/groupdocs/document.rb', line 1050

def update_changes!(changes, access = {})
  if changes.is_a?(Array)
    changes.each do |e|
      e.is_a?(GroupDocs::Document::Change) or raise ArgumentError,
                                               "Change should be GroupDocs::Document::Change object, received: #{e.inspect}"
    end
  else
    raise ArgumentError, "Changes should be Array , received: #{changes.inspect}"
  end
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/comparison/public/#{file.guid}/changes"
    request[:request_body] = changes
  end
  api.execute!
end

#update_questionnaire_template!(fields, access = {}) ⇒ Object

added in release 1.8.0

Update template’s fields

@example

file = GroupDocs::Storage::File.new(=> ‘3be4e06494caed131d912c75e17d5f22592e3044032e0f81b35f13a8c9fefb49’).to_document field = GroupDocs::Document::TemplateEditorFields.new field.name = ‘test’ field.fieldtype = ‘TextBox’ field.page = 1 file.update_questionnaire_template!( )

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
# File 'lib/groupdocs/document.rb', line 1497

def update_questionnaire_template!(fields, access = {})

  fields.each do |field|
    field.is_a?(GroupDocs::Document::TemplateEditorFields) or raise ArgumentError,
                                                                    "Fields should be List GroupDocs::Document::TemplateEditorFields objects, received: #{fields.inspect}"
  end

  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/merge/{{client_id}}/files/#{file.guid}/templates/update"
    request[:request_body] = fields
  end.execute!
  json[:templateFields].map do |field|
    Document::Field.new(field)
  end
end

#user_status_set!(status, access = {}) ⇒ String

Sets document user status.

Parameters:

  • status (String)

    (Pending = 0, Accepted = 1, Declined = 2)

  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (String)


749
750
751
752
753
754
755
756
757
# File 'lib/groupdocs/document.rb', line 749

def user_status_set!(status, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/doc/{{client_id}}/files/#{file.guid}/sharer"
    request[:request_body] = status
  end.execute!

end