Class: GroupDocs::Document
- Inherits:
-
Api::Entity
- Object
- Api::Entity
- GroupDocs::Document
- Extended by:
- Api::Helpers::MIME
- Defined in:
- lib/groupdocs/document.rb
Defined Under Namespace
Classes: Annotation, Change, Field, MetaData, Rectangle, 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
- #dependent_questionnaires_count ⇒ Object
- #field_count ⇒ Object
-
#fieldType ⇒ Object
added in release 1.6.0.
- #file ⇒ Object
- #order ⇒ Object
-
#output_formats ⇒ Array<Symbol>
Returns output formats in human-readable format.
- #outputs ⇒ Object
-
#process_date ⇒ Time
Converts timestamp which is return by API server to Time object.
-
#status ⇒ Symbol
Converts status to human-readable format.
- #upload_time ⇒ Object
Class Method Summary collapse
-
.metadata!(path, access = {}) ⇒ Array<GroupDocs::Document::View>
Returns a document metadata by given path.
-
.public_fields!(access = {}) ⇒ Array
Changed in release 1.5.8.
-
.sign_documents!(documents, signatures, options = {}, access = {}) ⇒ Object
Signs given documents with signatures.
-
.templates!(options = {}, access = {}) ⇒ Array<GroupDocs::Document>
Returns an array of all templates (documents in “Templates” directory).
-
.views!(options = {}, access = {}) ⇒ Array<GroupDocs::Document::View>
Returns an array of views for all documents.
Instance Method Summary collapse
-
#access_mode!(access = {}) ⇒ Symbol
Returns access mode of document.
-
#access_mode_set!(mode, access = {}) ⇒ Symbol
(also: #access_mode=)
Sets access mode of document.
-
#add_collaborator!(collaborator, access = {}) ⇒ Object
Adds document annotations collaborator.
-
#add_questionnaire!(questionnaire, access = {}) ⇒ Object
Adds questionnaire to document.
-
#annotations!(access = {}) ⇒ Array<GroupDocs::Document::Annotation>
Returns an array of annotations.
-
#changes!(access = {}) ⇒ Object
Returns an array of changes in document.
-
#collaborators!(access = {}) ⇒ Array<GroupDocs::User>
Returns document annotations collaborators.
-
#compare!(document, callback, access = {}) ⇒ GroupDocs::Job
Changed in release 1.5.8 Schedules a job for comparing document with given.
-
#content!(content_type, access = {}) ⇒ String
Returns document content.
-
#convert!(format, options = {}, access = {}) ⇒ GroupDocs::Job
Converts document to given format.
-
#create_questionnaire!(questionnaire, access = {}) ⇒ GroupDocs::Questionnaire
Creates questionnaire and adds it to document.
-
#datasource!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job
Creates new job to merge datasource into document.
-
#datasource_fields!(datasource, options = {}, access = {}) ⇒ GroupDocs::Job
Creates new job to merge datasource fields into document.
-
#details!(access = {}) ⇒ Hash
Changed in release 1.5.8 Returns document details.
-
#document_status!(job_guid, access = {}) ⇒ Object
Get sign documents status.
-
#download!(path, options = {}, access = {}) ⇒ Object
Changed in release 1.5.8 Download comparison result file.
-
#editlock!(access = {}) ⇒ Object
Returns editing metadata.
-
#editlock_clear!(options = {}, access = {}) ⇒ Integer
Removes edit lock for a document and replaces the document with its edited copy.
-
#editor_fields!(access = {}) ⇒ Object
added in release 1.7.0.
-
#fields!(access = {}) ⇒ Array<GroupDocs::Document::Field>
Returns an array of document fields.
-
#formats!(access = {}) ⇒ Array<Symbol>
Returns array of file formats document can be converted to.
-
#hyperlinks!(access = {}) ⇒ Object
added in release 1.5.8.
-
#initialize(options = {}, &blk) ⇒ Document
constructor
Creates new GroupDocs::Document.
-
#metadata!(access = {}) ⇒ GroupDocs::Document::MetaData
Returns document metadata.
- #method_missing(method, *args, &blk) ⇒ Object
-
#page_fixed_html!(path, name, page_number, options = {}, access = {}) ⇒ Object
Returns an HTML Fixed representation of a particular document page.
-
#page_html!(path, name, page_number, options = {}, access = {}) ⇒ Object
Returns an HTML representation of a particular document page.
-
#page_html_urls!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to html representing document pages.
-
#page_image!(path, name, page_number, dimension, options = {}, access = {}) ⇒ Object
Returns a stream of bytes representing a particular document page image.
-
#page_images!(width, height, options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages.
-
#password_set!(password, access = {}) ⇒ Array<GroupDocs::User>
Sets document password.
-
#public_sign_document!(options = {}, access = {}) ⇒ Array
Changed in release 1.5.8.
-
#questionnaire_template!(fields, access = {}) ⇒ Object
added in release 1.7.0.
-
#questionnaires!(access = {}) ⇒ Array<GroupDocs::Questionnaire>
Returns an array of questionnaires.
-
#remove_collaborators!(reviewerId, access = {}) ⇒ Object
Delete document reviewer.
-
#remove_questionnaire!(questionnaire, access = {}) ⇒ Object
Detaches questionnaire from document.
-
#representations!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages htmlRepresentations.
- #respond_to?(method) ⇒ Boolean
-
#set_collaborators!(emails, version = 1, access = {}) ⇒ Array<GroupDocs::User>
Sets document annotations collaborators to given emails.
-
#set_reviewers!(reviewers, access = {}) ⇒ Object
Sets reviewers for document.
-
#set_session_callback!(url, access = {}) ⇒ Object
Sets session callback URL.
-
#set_shared_link_access_rights!(rights, access = {}) ⇒ Array<Symbol>
Sets access rights for shared link.
-
#shared_documents!(sharers_types, options = {}, access = {}) ⇒ Array<GroupDocs::User>
Returns an array of users a document is shared with.
-
#shared_link_access_rights!(access = {}) ⇒ Array<Symbol>
Returns an array of access rights for shared link.
-
#sharers!(access = {}) ⇒ Array<GroupDocs::User>
Returns an array of users a document is shared with.
-
#sharers_clear!(access = {}) ⇒ Object
Clears sharers list.
-
#sharers_set!(emails, access = {}) ⇒ Array<GroupDocs::User>
Sets document sharers to given emails.
-
#tags!(access = {}) ⇒ Array<String>
Returns tags assigned to the document.
-
#tags_clear!(access = {}) ⇒ String
Removes tags assigned to the document.
-
#tags_set!(access = {}) ⇒ String
Assign tags to the document.
-
#thumbnails!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages thumbnails.
-
#update_changes!(changes, access = {}) ⇒ GroupDocs::Change
Schedules a job for comparing document with given.
-
#user_status_set!(status, access = {}) ⇒ String
Sets document user status.
Methods included from Api::Helpers::ByteFlag
#array_from_byte, #byte_from_array
Methods inherited from Api::Entity
Methods included from Api::Helpers::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.
305 306 307 308 309 |
# File 'lib/groupdocs/document.rb', line 305 def initialize( = {}, &blk) super(, &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
1389 1390 1391 |
# File 'lib/groupdocs/document.rb', line 1389 def method_missing(method, *args, &blk) file.respond_to?(method) ? file.send(method, *args, &blk) : super end |
Instance Attribute Details
#dependent_questionnaires_count ⇒ Object
210 211 212 |
# File 'lib/groupdocs/document.rb', line 210 def dependent_questionnaires_count @dependent_questionnaires_count end |
#field_count ⇒ Object
204 205 206 |
# File 'lib/groupdocs/document.rb', line 204 def field_count @field_count end |
#fieldType ⇒ Object
added in release 1.6.0
208 209 210 |
# File 'lib/groupdocs/document.rb', line 208 def fieldType @fieldType end |
#file ⇒ Object
192 193 194 |
# File 'lib/groupdocs/document.rb', line 192 def file @file end |
#order ⇒ Object
202 203 204 |
# File 'lib/groupdocs/document.rb', line 202 def order @order end |
#output_formats ⇒ Array<Symbol>
Returns output formats in human-readable format.
198 199 200 |
# File 'lib/groupdocs/document.rb', line 198 def output_formats @output_formats end |
#outputs ⇒ Object
196 197 198 |
# File 'lib/groupdocs/document.rb', line 196 def outputs @outputs end |
#process_date ⇒ Time
Converts timestamp which is return by API server to Time object.
194 195 196 |
# File 'lib/groupdocs/document.rb', line 194 def process_date @process_date end |
#status ⇒ Symbol
Converts status to human-readable format.
200 201 202 |
# File 'lib/groupdocs/document.rb', line 200 def status @status end |
#upload_time ⇒ Object
212 213 214 |
# File 'lib/groupdocs/document.rb', line 212 def upload_time @upload_time end |
Class Method Details
.metadata!(path, access = {}) ⇒ Array<GroupDocs::Document::View>
Returns a document metadata by given path.
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/groupdocs/document.rb', line 173 def self.(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] 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
1463 1464 1465 1466 1467 1468 1469 |
# File 'lib/groupdocs/document.rb', line 1463 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.
99 100 101 102 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 |
# File 'lib/groupdocs/document.rb', line 99 def self.sign_documents!(documents, signatures, = {}, 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) 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).
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/groupdocs/document.rb', line 62 def self.templates!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = '/merge/{{client_id}}/templates' end api.add_params() 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.
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/groupdocs/document.rb', line 37 def self.views!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = '/doc/{{client_id}}/views' end api.add_params() 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.
639 640 641 642 643 644 645 646 647 |
# File 'lib/groupdocs/document.rb', line 639 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.
658 659 660 661 662 663 664 665 666 667 668 |
# File 'lib/groupdocs/document.rb', line 658 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.
1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 |
# File 'lib/groupdocs/document.rb', line 1273 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.
994 995 996 997 998 999 1000 1001 1002 1003 |
# File 'lib/groupdocs/document.rb', line 994 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 |
#annotations!(access = {}) ⇒ Array<GroupDocs::Document::Annotation>
Returns an array of annotations.
1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 |
# File 'lib/groupdocs/document.rb', line 1060 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.
1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 |
# File 'lib/groupdocs/document.rb', line 1169 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.
1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 |
# File 'lib/groupdocs/document.rb', line 1230 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.
1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 |
# File 'lib/groupdocs/document.rb', line 1108 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
560 561 562 563 564 565 566 567 568 |
# File 'lib/groupdocs/document.rb', line 560 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.
888 889 890 891 892 893 894 895 896 897 898 899 900 |
# File 'lib/groupdocs/document.rb', line 888 def convert!(format, = {}, access = {}) .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() json = api.execute! Job.new(:id => json[:job_id]) end |
#create_questionnaire!(questionnaire, access = {}) ⇒ GroupDocs::Questionnaire
Creates questionnaire and adds it to document.
1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 |
# File 'lib/groupdocs/document.rb', line 1016 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.
916 917 918 919 920 921 922 923 924 925 926 927 928 929 |
# File 'lib/groupdocs/document.rb', line 916 def datasource!(datasource, = {}, 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() 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.
947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 |
# File 'lib/groupdocs/document.rb', line 947 def datasource_fields!(datasource, = {}, 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() json = api.execute! Job.new(:id => json[:job_id]) end |
#details!(access = {}) ⇒ Hash
Changed in release 1.5.8 Returns document details.
1086 1087 1088 1089 1090 1091 1092 1093 1094 |
# File 'lib/groupdocs/document.rb', line 1086 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
154 155 156 157 158 159 160 161 162 |
# File 'lib/groupdocs/document.rb', line 154 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.
1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 |
# File 'lib/groupdocs/document.rb', line 1201 def download!( path, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :DOWNLOAD request[:path] = "/comparison/public/#{file.guid}/download" end api.add_params() response = api.execute! if file.name.split('.').last != [:format] file_name = file.name.delete!(file.name.split('.').last) + [: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.
476 477 478 479 480 481 482 |
# File 'lib/groupdocs/document.rb', line 476 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
494 495 496 497 498 499 500 501 |
# File 'lib/groupdocs/document.rb', line 494 def editlock_clear!( = {}, 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().execute! end |
#editor_fields!(access = {}) ⇒ Object
added in release 1.7.0
Get template fields.
1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 |
# File 'lib/groupdocs/document.rb', line 1479 def editor_fields!(access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editor_fields" end.execute! json[:fields].map do |field| TemplateEditorFields.new(field) end end |
#fields!(access = {}) ⇒ Array<GroupDocs::Document::Field>
Returns an array of document fields.
726 727 728 729 730 731 732 733 734 735 736 737 738 |
# File 'lib/groupdocs/document.rb', line 726 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.
680 681 682 683 684 685 686 687 688 689 690 |
# File 'lib/groupdocs/document.rb', line 680 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
1407 1408 1409 1410 1411 1412 1413 1414 1415 |
# File 'lib/groupdocs/document.rb', line 1407 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
Returns document metadata.
700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 |
# File 'lib/groupdocs/document.rb', line 700 def (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] if json[:last_view] .last_view = json[:last_view] end end end |
#page_fixed_html!(path, name, page_number, options = {}, access = {}) ⇒ Object
Returns an HTML Fixed representation of a particular document page
360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 |
# File 'lib/groupdocs/document.rb', line 360 def page_fixed_html!(path, name, page_number, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :DOWNLOAD request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/htmlFixed" end api.add_params() response = api.execute! filepath = "#{path}/#{name}" Object::File.open(filepath, 'wb') do |file| file.write(response) end filepath end |
#page_html!(path, name, page_number, options = {}, access = {}) ⇒ Object
Returns an HTML representation of a particular document page
390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 |
# File 'lib/groupdocs/document.rb', line 390 def page_html!(path, name, page_number, = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :DOWNLOAD request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/htmlRepresentations" end api.add_params() response = api.execute! filepath = "#{path}/#{name}" Object::File.open(filepath, 'wb') do |file| file.write(response) end filepath end |
#page_html_urls!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to html representing document pages.
457 458 459 460 461 462 463 464 465 466 467 |
# File 'lib/groupdocs/document.rb', line 457 def page_html_urls!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/htmlRepresentationUrls" end api.add_params() json = api.execute! json[:url] end |
#page_image!(path, name, page_number, dimension, options = {}, access = {}) ⇒ Object
Returns a stream of bytes representing a particular document page image.
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 |
# File 'lib/groupdocs/document.rb', line 329 def page_image!(path, name, page_number, dimension, = {}, 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() 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.
429 430 431 432 433 434 435 436 437 438 439 |
# File 'lib/groupdocs/document.rb', line 429 def page_images!(width, height, = {}, 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() json = api.execute! json[:url] end |
#password_set!(password, access = {}) ⇒ Array<GroupDocs::User>
Sets document password.
820 821 822 823 824 825 826 827 828 |
# File 'lib/groupdocs/document.rb', line 820 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
1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 |
# File 'lib/groupdocs/document.rb', line 1439 def public_sign_document!( = {}, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/signature/public/documents/#{file.guid}/sign" request[:request_body] = 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!( )
1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 |
# File 'lib/groupdocs/document.rb', line 1509 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.
972 973 974 975 976 977 978 979 980 981 982 |
# File 'lib/groupdocs/document.rb', line 972 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
1294 1295 1296 1297 1298 1299 1300 1301 |
# File 'lib/groupdocs/document.rb', line 1294 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.
1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 |
# File 'lib/groupdocs/document.rb', line 1041 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 |
#representations!(options = {}, access = {}) ⇒ Array<String>
Returns array of URLs to images representing document pages htmlRepresentations.
618 619 620 621 622 623 624 625 626 627 628 |
# File 'lib/groupdocs/document.rb', line 618 def representations!( = {}, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :POST request[:path] = "/doc/{{client_id}}/files/#{file.guid}/htmlRepresentations" end api.add_params() json = api.execute! json[:pageHtml] end |
#respond_to?(method) ⇒ Boolean
1393 1394 1395 |
# File 'lib/groupdocs/document.rb', line 1393 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.
1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 |
# File 'lib/groupdocs/document.rb', line 1252 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.
1318 1319 1320 1321 1322 1323 1324 1325 |
# File 'lib/groupdocs/document.rb', line 1318 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.
1375 1376 1377 1378 1379 1380 1381 1382 |
# File 'lib/groupdocs/document.rb', line 1375 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 |
#set_shared_link_access_rights!(rights, access = {}) ⇒ Array<Symbol>
Sets access rights for shared link.
1358 1359 1360 1361 1362 1363 1364 1365 |
# File 'lib/groupdocs/document.rb', line 1358 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.
773 774 775 776 777 778 779 780 781 |
# File 'lib/groupdocs/document.rb', line 773 def shared_documents!(sharers_types, = {}, 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().execute! end |
#shared_link_access_rights!(access = {}) ⇒ Array<Symbol>
Returns an array of access rights for shared link.
1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 |
# File 'lib/groupdocs/document.rb', line 1335 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.
748 749 750 751 752 753 754 755 756 757 758 |
# File 'lib/groupdocs/document.rb', line 748 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.
857 858 859 860 861 862 863 864 |
# File 'lib/groupdocs/document.rb', line 857 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.
794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 |
# File 'lib/groupdocs/document.rb', line 794 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
511 512 513 514 515 516 517 |
# File 'lib/groupdocs/document.rb', line 511 def (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
543 544 545 546 547 548 549 |
# File 'lib/groupdocs/document.rb', line 543 def (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.
527 528 529 530 531 532 533 |
# File 'lib/groupdocs/document.rb', line 527 def (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.
589 590 591 592 593 594 595 596 597 598 599 |
# File 'lib/groupdocs/document.rb', line 589 def thumbnails!( = {}, 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() json = api.execute! json[:image_urls] end |
#update_changes!(changes, access = {}) ⇒ GroupDocs::Change
Schedules a job for comparing document with given.
1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 |
# File 'lib/groupdocs/document.rb', line 1138 def update_changes!(changes, access = {}) api = Api::Request.new do |request| request[:access] = access request[:method] = :PUT request[:path] = "/comparison/public/#{file.guid}/changes" request[:request_body] = changes end json = api.execute! json[:changes].map do |change| Document::Change.new(change) end end |
#user_status_set!(status, access = {}) ⇒ String
Sets document user status.
839 840 841 842 843 844 845 846 847 |
# File 'lib/groupdocs/document.rb', line 839 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 |