ilovepdf 1.3.0 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +1 -1
- data/LICENSE +0 -0
- data/README.md +21 -1
- data/ilovepdf.gemspec +4 -3
- data/lib/ilovepdf/element.rb +79 -0
- data/lib/ilovepdf/errors.rb +8 -1
- data/lib/ilovepdf/file.rb +5 -4
- data/lib/ilovepdf/ilovepdf.rb +9 -5
- data/lib/ilovepdf/refinements.rb +30 -0
- data/lib/ilovepdf/request_payload/form_url_encoded.rb +54 -0
- data/lib/ilovepdf/servers.rb +7 -0
- data/lib/ilovepdf/signature/date_element.rb +16 -0
- data/lib/ilovepdf/signature/file_element.rb +60 -0
- data/lib/ilovepdf/signature/initials_element.rb +11 -0
- data/lib/ilovepdf/signature/input_element.rb +27 -0
- data/lib/ilovepdf/signature/management.rb +103 -0
- data/lib/ilovepdf/signature/name_element.rb +11 -0
- data/lib/ilovepdf/signature/receiver.rb +87 -0
- data/lib/ilovepdf/signature/signature_element.rb +11 -0
- data/lib/ilovepdf/signature/text_element.rb +17 -0
- data/lib/ilovepdf/signature.rb +5 -0
- data/lib/ilovepdf/signature_file.rb +10 -0
- data/lib/ilovepdf/task.rb +60 -15
- data/lib/ilovepdf/tool/compress.rb +2 -2
- data/lib/ilovepdf/tool/extract.rb +2 -2
- data/lib/ilovepdf/tool/imagepdf.rb +2 -2
- data/lib/ilovepdf/tool/merge.rb +2 -2
- data/lib/ilovepdf/tool/officepdf.rb +2 -2
- data/lib/ilovepdf/tool/pagenumber.rb +2 -2
- data/lib/ilovepdf/tool/pdfa.rb +2 -2
- data/lib/ilovepdf/tool/pdfjpg.rb +31 -9
- data/lib/ilovepdf/tool/protect.rb +2 -2
- data/lib/ilovepdf/tool/repair.rb +2 -2
- data/lib/ilovepdf/tool/rotate.rb +2 -2
- data/lib/ilovepdf/tool/signature.rb +134 -0
- data/lib/ilovepdf/tool/split.rb +2 -2
- data/lib/ilovepdf/tool/unlock.rb +2 -2
- data/lib/ilovepdf/tool/validate_pdfa.rb +2 -2
- data/lib/ilovepdf/tool/watermark.rb +33 -15
- data/lib/ilovepdf/version.rb +1 -1
- data/lib/ilovepdf.rb +19 -0
- data/samples/chained_task.rb +20 -0
- data/samples/signature_advanced.rb +74 -0
- data/samples/signature_basic.rb +21 -0
- data/samples/signature_management.rb +42 -0
- data/uploads/sample_pdf.pdf +0 -0
- metadata +40 -5
@@ -0,0 +1,17 @@
|
|
1
|
+
module Ilovepdf
|
2
|
+
module Signature
|
3
|
+
class TextElement
|
4
|
+
include FileElement
|
5
|
+
def initialize(file,text)
|
6
|
+
super(file)
|
7
|
+
@type = :text
|
8
|
+
@content = text
|
9
|
+
end
|
10
|
+
|
11
|
+
def content=(value)
|
12
|
+
raise ::Ilovepdf::Errors::ArgumentError.new("value must be a String type of object") unless s.is_a?(String)
|
13
|
+
@content = value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/ilovepdf/task.rb
CHANGED
@@ -8,16 +8,50 @@ module Ilovepdf
|
|
8
8
|
API_PARAMS = []
|
9
9
|
DOWNLOAD_INFO = [:output_filename, :output_file, :output_filetype]
|
10
10
|
|
11
|
-
def initialize(public_key, secret_key)
|
11
|
+
def initialize(public_key, secret_key, make_start=false)
|
12
12
|
super(public_key, secret_key)
|
13
|
-
response = perform_create_request
|
14
|
-
self.worker_server = 'https://' + response.body['server']
|
15
|
-
self.task_id = response.body['task']
|
16
|
-
|
17
13
|
# Assign default values
|
18
14
|
self.ignore_errors = true
|
19
15
|
self.ignore_password = true
|
20
16
|
self.try_pdf_repair = true
|
17
|
+
|
18
|
+
@chained_task = (make_start == false)
|
19
|
+
if make_start
|
20
|
+
response = perform_start_request
|
21
|
+
self.worker_server = "#{Servers::PROTOCOL}://" + response.body['server']
|
22
|
+
self.task_id = response.body['task']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def chained_task?
|
27
|
+
@chained_task
|
28
|
+
end
|
29
|
+
|
30
|
+
def next(next_tool)
|
31
|
+
body = {
|
32
|
+
v: API_VERSION,
|
33
|
+
task: self.task_id,
|
34
|
+
tool: next_tool,
|
35
|
+
}
|
36
|
+
extracted_body = RequestPayload::FormUrlEncoded.new(body).extract_to_s
|
37
|
+
|
38
|
+
begin
|
39
|
+
response = send_request('post', "task/next", body: extracted_body)
|
40
|
+
no_task_present = !response.body.key?('task') || response.body['task'].to_s.empty?
|
41
|
+
raise StartError.new(response, custom_msg: "No task assigned on chained start") if no_task_present
|
42
|
+
rescue ApiError => e
|
43
|
+
raise StartError.new(e, custom_msg: "Error on start chained task")
|
44
|
+
end
|
45
|
+
|
46
|
+
next_task = self.new_task(next_tool)
|
47
|
+
next_task.send(:"worker_server=", worker_server)
|
48
|
+
next_task.send(:"task_id=", response.body['task'])
|
49
|
+
|
50
|
+
response.body['files'].each do |server_filename, filename|
|
51
|
+
next_task.files << File.new(server_filename, filename)
|
52
|
+
end
|
53
|
+
|
54
|
+
next_task
|
21
55
|
end
|
22
56
|
|
23
57
|
def assign_meta_value(key, value)
|
@@ -116,7 +150,7 @@ module Ilovepdf
|
|
116
150
|
content_disposition = response.headers[:content_disposition]
|
117
151
|
|
118
152
|
if match_data = /filename\*\=utf-8\'\'([\W\w]+)/.match(content_disposition)
|
119
|
-
filename = URI.
|
153
|
+
filename = URI.decode_www_form_component(match_data[1].gsub('"', ''))
|
120
154
|
else
|
121
155
|
match_data = / .*filename=\"([\W\w]+)\"/.match(content_disposition)
|
122
156
|
filename = match_data[1].gsub('"', '')
|
@@ -135,7 +169,7 @@ module Ilovepdf
|
|
135
169
|
server_filename: file.server_filename,
|
136
170
|
v: API_VERSION
|
137
171
|
}
|
138
|
-
response = send_request('
|
172
|
+
response = send_request('delete', "upload/#{self.task_id}/#{file.server_filename}", body: body)
|
139
173
|
end
|
140
174
|
|
141
175
|
def perform_filedownload_request
|
@@ -156,15 +190,23 @@ module Ilovepdf
|
|
156
190
|
}.merge(file_submit_params)
|
157
191
|
.merge(extract_api_params)
|
158
192
|
|
193
|
+
|
194
|
+
extracted_body = RequestPayload::FormUrlEncoded.new(body).extract_to_s
|
195
|
+
|
159
196
|
response = send_request('post', 'process', body: body)
|
160
197
|
response
|
161
198
|
end
|
162
199
|
|
163
|
-
def
|
164
|
-
|
165
|
-
|
200
|
+
def perform_start_request
|
201
|
+
body = {
|
202
|
+
v: API_VERSION
|
166
203
|
}
|
167
|
-
|
204
|
+
extracted_body = RequestPayload::FormUrlEncoded.new(body).extract_to_s
|
205
|
+
response = send_request('get', "start/#{self.tool}", body: extracted_body)
|
206
|
+
is_server_defined = response.body.key?('server') && !response.body['server'].to_s.empty?
|
207
|
+
raise ::Ilovepdf::Errors::StartError.new("No server assigned on start") if !is_server_defined
|
208
|
+
|
209
|
+
response
|
168
210
|
end
|
169
211
|
|
170
212
|
def perform_upload_request filepath
|
@@ -202,11 +244,14 @@ module Ilovepdf
|
|
202
244
|
h
|
203
245
|
end
|
204
246
|
|
247
|
+
def extract_api_param_value(param_name)
|
248
|
+
send(param_name)
|
249
|
+
end
|
250
|
+
|
205
251
|
def extract_api_params
|
206
|
-
{}
|
207
|
-
|
208
|
-
|
209
|
-
}
|
252
|
+
self.class::API_PARAMS.inject({}) do |result,param_name|
|
253
|
+
result[param_name] = extract_api_param_value(param_name)
|
254
|
+
result
|
210
255
|
end
|
211
256
|
end
|
212
257
|
end
|
@@ -6,9 +6,9 @@ module Ilovepdf
|
|
6
6
|
|
7
7
|
COMPRESSION_LEVEL_VALUES = ["extreme", "recommended", "low"]
|
8
8
|
|
9
|
-
def initialize(public_key, secret_key)
|
9
|
+
def initialize(public_key, secret_key, make_start=true)
|
10
10
|
self.tool = :compress
|
11
|
-
super(public_key, secret_key)
|
11
|
+
super(public_key, secret_key, make_start)
|
12
12
|
end
|
13
13
|
|
14
14
|
def compression_level= level
|
@@ -4,9 +4,9 @@ module Ilovepdf
|
|
4
4
|
API_PARAMS = [:detailed]
|
5
5
|
attr_accessor *API_PARAMS
|
6
6
|
|
7
|
-
def initialize(public_key, secret_key)
|
7
|
+
def initialize(public_key, secret_key, make_start=true)
|
8
8
|
self.tool = :extract
|
9
|
-
super(public_key, secret_key)
|
9
|
+
super(public_key, secret_key, make_start)
|
10
10
|
end
|
11
11
|
|
12
12
|
def detailed
|
@@ -7,10 +7,10 @@ module Ilovepdf
|
|
7
7
|
ORIENTATION_VALUES = ['portrait', 'landscape']
|
8
8
|
PAGESIZE_VALUES = ['fit', 'A4', 'letter']
|
9
9
|
|
10
|
-
def initialize(public_key, secret_key)
|
10
|
+
def initialize(public_key, secret_key, make_start=true)
|
11
11
|
self.tool = :imagepdf
|
12
12
|
self.merge_after = true
|
13
|
-
super(public_key, secret_key)
|
13
|
+
super(public_key, secret_key, make_start)
|
14
14
|
end
|
15
15
|
|
16
16
|
def orientation=(new_val)
|
data/lib/ilovepdf/tool/merge.rb
CHANGED
@@ -4,9 +4,9 @@ module Ilovepdf
|
|
4
4
|
API_PARAMS = []
|
5
5
|
attr_accessor *API_PARAMS
|
6
6
|
|
7
|
-
def initialize(public_key, secret_key)
|
7
|
+
def initialize(public_key, secret_key, make_start=true)
|
8
8
|
self.tool = :merge
|
9
|
-
super(public_key, secret_key)
|
9
|
+
super(public_key, secret_key, make_start)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -4,9 +4,9 @@ module Ilovepdf
|
|
4
4
|
API_PARAMS = []
|
5
5
|
attr_accessor *API_PARAMS
|
6
6
|
|
7
|
-
def initialize(public_key, secret_key)
|
7
|
+
def initialize(public_key, secret_key, make_start=true)
|
8
8
|
self.tool = :officepdf
|
9
|
-
super(public_key, secret_key)
|
9
|
+
super(public_key, secret_key, make_start)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -16,9 +16,9 @@ module Ilovepdf
|
|
16
16
|
'WenQuanYi Zen Hei', 'Lohit Marathi'
|
17
17
|
]
|
18
18
|
|
19
|
-
def initialize(public_key, secret_key)
|
19
|
+
def initialize(public_key, secret_key, make_start=true)
|
20
20
|
self.tool = :pagenumber
|
21
|
-
super(public_key, secret_key)
|
21
|
+
super(public_key, secret_key, make_start)
|
22
22
|
end
|
23
23
|
|
24
24
|
def vertical_position=(new_val)
|
data/lib/ilovepdf/tool/pdfa.rb
CHANGED
@@ -8,9 +8,9 @@ module Ilovepdf
|
|
8
8
|
'pdfa-2a', 'pdfa-3b', 'pdfa-3u', 'pdfa-3a'
|
9
9
|
]
|
10
10
|
|
11
|
-
def initialize(public_key, secret_key)
|
11
|
+
def initialize(public_key, secret_key, make_start=true)
|
12
12
|
self.tool = :pdfa
|
13
|
-
super(public_key, secret_key)
|
13
|
+
super(public_key, secret_key, make_start)
|
14
14
|
self.allow_downgrade = true
|
15
15
|
end
|
16
16
|
|
data/lib/ilovepdf/tool/pdfjpg.rb
CHANGED
@@ -1,22 +1,44 @@
|
|
1
1
|
module Ilovepdf
|
2
2
|
module Tool
|
3
3
|
class Pdfjpg < ::Ilovepdf::Task
|
4
|
-
API_PARAMS = [
|
4
|
+
API_PARAMS = [
|
5
|
+
:view_width, :view_height, :navigation_timeout, :delay,
|
6
|
+
:page_size, :page_orientation, :page_margin, :remove_popups,
|
7
|
+
:single_page
|
8
|
+
]
|
9
|
+
attr_accessor *API_PARAMS
|
5
10
|
|
6
|
-
|
11
|
+
PAGE_SIZE_VALUES = ['A3', 'A4', 'A5', 'A6', 'Letter']
|
12
|
+
PAGE_ORIENTATION_VALUES = ['portrait', 'landscape']
|
7
13
|
|
8
|
-
def initialize(public_key, secret_key)
|
14
|
+
def initialize(public_key, secret_key, make_start=true)
|
9
15
|
self.tool = :pdfjpg
|
10
|
-
super(public_key, secret_key)
|
16
|
+
super(public_key, secret_key, make_start)
|
17
|
+
|
18
|
+
# Assign default values
|
19
|
+
self.view_width = 1920
|
20
|
+
self.navigation_timeout = 10
|
21
|
+
self.delay = 2
|
22
|
+
self.page_margin = 0
|
23
|
+
# raise Errors::ArgumentEnumError.new(CONFORMANCE_VALUES) unless CONFORMANCE_VALUES.include? new_val
|
11
24
|
end
|
12
25
|
|
13
|
-
def
|
14
|
-
raise Errors::ArgumentEnumError.new(MODE_VALUES) unless MODE_VALUES.include?(new_val)
|
15
|
-
@mode = new_val
|
26
|
+
def navigation_timeout=(new_val)
|
16
27
|
end
|
17
|
-
|
18
|
-
|
28
|
+
|
29
|
+
def delay=(new_val)
|
19
30
|
end
|
31
|
+
|
32
|
+
def page_size(new_val)
|
33
|
+
end
|
34
|
+
|
35
|
+
def page_orientation=(new_val)
|
36
|
+
end
|
37
|
+
|
38
|
+
def addUrl(file_url)
|
39
|
+
add_file_from_url(file_url)
|
40
|
+
end
|
41
|
+
|
20
42
|
end
|
21
43
|
end
|
22
44
|
end
|
@@ -4,9 +4,9 @@ module Ilovepdf
|
|
4
4
|
API_PARAMS = [:password]
|
5
5
|
attr_accessor *API_PARAMS
|
6
6
|
|
7
|
-
def initialize(public_key, secret_key)
|
7
|
+
def initialize(public_key, secret_key, make_start=true)
|
8
8
|
self.tool = :protect
|
9
|
-
super(public_key, secret_key)
|
9
|
+
super(public_key, secret_key, make_start)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/lib/ilovepdf/tool/repair.rb
CHANGED
@@ -3,9 +3,9 @@ module Ilovepdf
|
|
3
3
|
class Repair < ::Ilovepdf::Task
|
4
4
|
API_PARAMS = []
|
5
5
|
|
6
|
-
def initialize(public_key, secret_key)
|
6
|
+
def initialize(public_key, secret_key, make_start=true)
|
7
7
|
self.tool = :repair
|
8
|
-
super(public_key, secret_key)
|
8
|
+
super(public_key, secret_key, make_start)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/ilovepdf/tool/rotate.rb
CHANGED
@@ -3,9 +3,9 @@ module Ilovepdf
|
|
3
3
|
class Rotate < ::Ilovepdf::Task
|
4
4
|
API_PARAMS = []
|
5
5
|
|
6
|
-
def initialize(public_key, secret_key)
|
6
|
+
def initialize(public_key, secret_key, make_start=true)
|
7
7
|
self.tool = :rotate
|
8
|
-
super(public_key, secret_key)
|
8
|
+
super(public_key, secret_key, make_start)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
module Ilovepdf
|
2
|
+
module Tool
|
3
|
+
class Signature < ::Ilovepdf::Task
|
4
|
+
using ::Ilovepdf::Refinements::Crush
|
5
|
+
|
6
|
+
undef_method :next,:chained_task?,:enable_file_encryption,:download,
|
7
|
+
:delete!,:perform_filedownload_request, :assign_meta_value,
|
8
|
+
:perform_process_request, :ignore_password, :ignore_errors,
|
9
|
+
:try_pdf_repair, :packaged_filename, :output_filename
|
10
|
+
|
11
|
+
API_PARAMS = [:brand_name,:brand_logo,
|
12
|
+
:language,:lock_order,
|
13
|
+
:message_signer,:subject_signer,:uuid_visible,:expiration_days,
|
14
|
+
:signer_reminders,:signer_reminder_days_cycle,:verify_enabled ]
|
15
|
+
|
16
|
+
attr_accessor *API_PARAMS
|
17
|
+
|
18
|
+
def initialize(public_key, secret_key, make_start=true)
|
19
|
+
self.tool = :sign
|
20
|
+
super(public_key, secret_key, make_start)
|
21
|
+
end
|
22
|
+
|
23
|
+
def execute
|
24
|
+
@result = perform_process_request
|
25
|
+
end
|
26
|
+
|
27
|
+
def uuid_visible=(value)
|
28
|
+
@uuid_visible = !!value
|
29
|
+
end
|
30
|
+
|
31
|
+
def brand_name=(value)
|
32
|
+
raise ::Ilovepdf::Errors::UnsupportedFunctionalityError.new("Method not implemented")
|
33
|
+
end
|
34
|
+
|
35
|
+
def brand_logo=(value)
|
36
|
+
raise ::Ilovepdf::Errors::UnsupportedFunctionalityError.new("Method not implemented")
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_receiver(receiver)
|
40
|
+
raise ::Ilovepdf::Errors::ArgumentError.new("value is not receiver") unless receiver.is_a?(Ilovepdf::Signature::Receiver)
|
41
|
+
@signers << receiver
|
42
|
+
end
|
43
|
+
|
44
|
+
def language=(value)
|
45
|
+
raise ::Ilovepdf::Errors::ArgumentError.new("value is not a string") unless value.is_a?(String)
|
46
|
+
@language = value
|
47
|
+
end
|
48
|
+
|
49
|
+
def lock_order=(value)
|
50
|
+
@lock_order = !!value ? "1" : "0"
|
51
|
+
end
|
52
|
+
|
53
|
+
def email_content(subject:,body:)
|
54
|
+
@subject_signer = subject
|
55
|
+
@message_signer = body
|
56
|
+
{subject: @subject_signer,body: @message_signer}
|
57
|
+
end
|
58
|
+
|
59
|
+
def expiration_days=(value)
|
60
|
+
raise ::Ilovepdf::Errors::ArgumentError.new("value is not an Integer") unless value.is_a?(Integer)
|
61
|
+
@expiration_days = value
|
62
|
+
end
|
63
|
+
|
64
|
+
def reminders=(value)
|
65
|
+
raise ::Ilovepdf::Errors::ArgumentError.new("value is not an Integer") unless value.is_a?(Integer)
|
66
|
+
if(value <= 0)
|
67
|
+
@signer_reminders = false
|
68
|
+
@signer_reminder_days_cycle = nil
|
69
|
+
else
|
70
|
+
@signer_reminders = true
|
71
|
+
@signer_reminder_days_cycle = value
|
72
|
+
end
|
73
|
+
value
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
def add_brand(name:,logo:)
|
78
|
+
brand_logo_file = perform_upload_request(logo)
|
79
|
+
@brand_logo = brand_logo_file.server_filename
|
80
|
+
@brand_name = name
|
81
|
+
end
|
82
|
+
|
83
|
+
def verify_enabled=(value)
|
84
|
+
@verify_enabled = !!value
|
85
|
+
end
|
86
|
+
|
87
|
+
def signers
|
88
|
+
@signers ||= []
|
89
|
+
end
|
90
|
+
|
91
|
+
def <<(receiver)
|
92
|
+
raise ::Ilovepdf::Errors::ArgumentError.new("value is not an Ilovepdf::Signature::Receive") unless receiver.is_a?(::Ilovepdf::Signature::Receiver)
|
93
|
+
@signers ||= []
|
94
|
+
@signers << receiver
|
95
|
+
end
|
96
|
+
|
97
|
+
def extract_api_params
|
98
|
+
params = super
|
99
|
+
params[:task] = task_id
|
100
|
+
params[:files] = files.map do |file|
|
101
|
+
{server_filename: file.server_filename,filename: file.filename}
|
102
|
+
end
|
103
|
+
params[:signers] = signers.map do |signer|
|
104
|
+
{
|
105
|
+
name: signer.name,
|
106
|
+
email: signer.email,
|
107
|
+
phone: signer.phone,
|
108
|
+
files: signer.elements.group_by do |element|
|
109
|
+
element.file.server_filename
|
110
|
+
end.inject([]) do |result,(server_filename,elements)|
|
111
|
+
result << {
|
112
|
+
server_filename: server_filename,
|
113
|
+
elements: elements.map(&:to_h)
|
114
|
+
}
|
115
|
+
result
|
116
|
+
end,
|
117
|
+
type: signer.type,
|
118
|
+
access_code: signer.access_code,
|
119
|
+
force_signature_type: signer.force_signature_type
|
120
|
+
}
|
121
|
+
end
|
122
|
+
params.crush
|
123
|
+
end
|
124
|
+
|
125
|
+
def send_to_sign
|
126
|
+
body = extract_api_params
|
127
|
+
extracted_body = RequestPayload::FormUrlEncoded.new(body).extract_to_s
|
128
|
+
response = send_request('post', 'signature', body: extracted_body)
|
129
|
+
response
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
data/lib/ilovepdf/tool/split.rb
CHANGED
@@ -4,9 +4,9 @@ module Ilovepdf
|
|
4
4
|
API_PARAMS = [:ranges, :split_mode, :fixed_range, :remove_pages, :merge_after]
|
5
5
|
attr_accessor *API_PARAMS
|
6
6
|
|
7
|
-
def initialize(public_key, secret_key)
|
7
|
+
def initialize(public_key, secret_key, make_start=true)
|
8
8
|
self.tool = :split
|
9
|
-
super(public_key, secret_key)
|
9
|
+
super(public_key, secret_key, make_start)
|
10
10
|
end
|
11
11
|
|
12
12
|
def fixed_range=(range=1)
|
data/lib/ilovepdf/tool/unlock.rb
CHANGED
@@ -3,9 +3,9 @@ module Ilovepdf
|
|
3
3
|
class Unlock < ::Ilovepdf::Task
|
4
4
|
API_PARAMS = []
|
5
5
|
|
6
|
-
def initialize(public_key, secret_key)
|
6
|
+
def initialize(public_key, secret_key, make_start=true)
|
7
7
|
self.tool = :unlock
|
8
|
-
super(public_key, secret_key)
|
8
|
+
super(public_key, secret_key, make_start)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -8,9 +8,9 @@ module Ilovepdf
|
|
8
8
|
'pdfa-2a', 'pdfa-3b', 'pdfa-3u', 'pdfa-3a'
|
9
9
|
]
|
10
10
|
|
11
|
-
def initialize(public_key, secret_key)
|
11
|
+
def initialize(public_key, secret_key, make_start=true)
|
12
12
|
self.tool = :validatepdfa
|
13
|
-
super(public_key, secret_key)
|
13
|
+
super(public_key, secret_key, make_start)
|
14
14
|
end
|
15
15
|
|
16
16
|
def conformance= new_val
|
@@ -5,45 +5,63 @@ module Ilovepdf
|
|
5
5
|
:mode, :text, :image, :pages, :vertical_position, :horizontal_position,
|
6
6
|
:vertical_position_adjustment, :horizontal_position_adjustment, :mosaic,
|
7
7
|
:rotate, :font_family, :font_style, :font_size, :font_color, :transparency,
|
8
|
-
:layer
|
8
|
+
:layer, :elements
|
9
9
|
]
|
10
10
|
|
11
|
+
MODE_VALUES = ['image', 'text', 'multi']
|
12
|
+
|
11
13
|
attr_accessor *API_PARAMS
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
'Lohit Marathi'
|
18
|
-
]
|
15
|
+
def initialize(public_key, secret_key, make_start=true)
|
16
|
+
self.tool = :watermark
|
17
|
+
super(public_key, secret_key, make_start)
|
18
|
+
end
|
19
19
|
|
20
|
-
|
20
|
+
def add_element(element)
|
21
|
+
raise Errors::ArgumentError.new("Element must be of type 'Ilovepdf::Element'") unless element.instance_of?(::Ilovepdf::Element)
|
22
|
+
elements << element
|
23
|
+
end
|
21
24
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
+
def elements
|
26
|
+
@elements ||= []
|
27
|
+
end
|
28
|
+
|
29
|
+
def mode=(new_val)
|
30
|
+
raise Errors::ArgumentEnumError.new(MODE_VALUES) unless MODE_VALUES.include? new_val
|
31
|
+
@mode = new_val
|
25
32
|
end
|
26
33
|
|
27
34
|
def vertical_position=(new_val)
|
28
|
-
raise Errors::ArgumentEnumError.new(VERTICAL_POSITION_VALUES) unless VERTICAL_POSITION_VALUES.include? new_val
|
35
|
+
raise Errors::ArgumentEnumError.new(::Ilovepdf::Element::VERTICAL_POSITION_VALUES) unless ::Ilovepdf::Element::VERTICAL_POSITION_VALUES.include? new_val
|
29
36
|
@vertical_position = new_val
|
30
37
|
end
|
31
38
|
|
32
39
|
def horizontal_position=(new_val)
|
33
|
-
raise Errors::ArgumentEnumError.new(HORIZONTAL_POSITION_VALUES) unless HORIZONTAL_POSITION_VALUES.include? new_val
|
40
|
+
raise Errors::ArgumentEnumError.new(::Ilovepdf::Element::HORIZONTAL_POSITION_VALUES) unless ::Ilovepdf::Element::HORIZONTAL_POSITION_VALUES.include? new_val
|
34
41
|
@horizontal_position = new_val
|
35
42
|
end
|
36
43
|
|
37
44
|
def font_family=(new_val)
|
38
|
-
raise Errors::ArgumentEnumError.new(FONT_FAMILY_VALUES) unless FONT_FAMILY_VALUES.include? new_val
|
45
|
+
raise Errors::ArgumentEnumError.new(::Ilovepdf::Element::FONT_FAMILY_VALUES) unless ::Ilovepdf::Element::FONT_FAMILY_VALUES.include? new_val
|
39
46
|
@font_family = new_val
|
40
47
|
end
|
41
48
|
|
42
49
|
def layer=(new_val)
|
43
|
-
raise Errors::ArgumentEnumError.new(LAYER_VALUES) unless LAYER_VALUES.include? new_val
|
50
|
+
raise Errors::ArgumentEnumError.new(::Ilovepdf::Element::LAYER_VALUES) unless ::Ilovepdf::Element::LAYER_VALUES.include? new_val
|
44
51
|
@layer = new_val
|
45
52
|
end
|
46
53
|
|
54
|
+
private
|
55
|
+
|
56
|
+
# Do nothing; Use 'add_element' method to alter the elements array
|
57
|
+
def elements=(val)
|
58
|
+
end
|
59
|
+
|
60
|
+
def extract_api_param_value(param_name)
|
61
|
+
return self.elements.map{|elem| elem.to_api_hash } if param_name == :elements
|
62
|
+
super
|
63
|
+
end # /extract_api_param_value
|
64
|
+
|
47
65
|
end
|
48
66
|
end
|
49
67
|
end
|
data/lib/ilovepdf/version.rb
CHANGED
data/lib/ilovepdf.rb
CHANGED
@@ -6,13 +6,18 @@ require 'securerandom'
|
|
6
6
|
require 'jwt'
|
7
7
|
require 'rest-client'
|
8
8
|
|
9
|
+
|
9
10
|
# Base classes
|
11
|
+
require "ilovepdf/refinements"
|
12
|
+
require "ilovepdf/servers"
|
10
13
|
require "ilovepdf/errors"
|
11
14
|
require "ilovepdf/response"
|
12
15
|
require "ilovepdf/helper"
|
13
16
|
require "ilovepdf/ilovepdf"
|
14
17
|
require "ilovepdf/file"
|
15
18
|
require "ilovepdf/task"
|
19
|
+
require 'ilovepdf/element'
|
20
|
+
require 'ilovepdf/request_payload/form_url_encoded'
|
16
21
|
|
17
22
|
# Load tool classes
|
18
23
|
require 'ilovepdf/tool/compress'
|
@@ -30,6 +35,20 @@ require 'ilovepdf/tool/unlock'
|
|
30
35
|
require 'ilovepdf/tool/watermark'
|
31
36
|
require 'ilovepdf/tool/protect'
|
32
37
|
require 'ilovepdf/tool/extract'
|
38
|
+
require 'ilovepdf/tool/signature'
|
39
|
+
|
40
|
+
# Load signature classes
|
41
|
+
require 'ilovepdf/signature'
|
42
|
+
require 'ilovepdf/signature/file_element'
|
43
|
+
require 'ilovepdf/signature/signature_element'
|
44
|
+
require 'ilovepdf/signature/initials_element'
|
45
|
+
require 'ilovepdf/signature/input_element'
|
46
|
+
require 'ilovepdf/signature/name_element'
|
47
|
+
require 'ilovepdf/signature/date_element'
|
48
|
+
require 'ilovepdf/signature/text_element'
|
49
|
+
require 'ilovepdf/signature/receiver'
|
50
|
+
require 'ilovepdf/signature/management'
|
51
|
+
require 'ilovepdf/tool/signature'
|
33
52
|
|
34
53
|
module Ilovepdf
|
35
54
|
class << self
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
require 'ilovepdf'
|
3
|
+
|
4
|
+
# You can call task class directly
|
5
|
+
my_task = Ilovepdf::Tool::Split.new("PUBLIC_KEY", "SECRET_KEY");
|
6
|
+
|
7
|
+
# File object keeps information about its server_filename and the properties you can set
|
8
|
+
file = my_task.add_file '/path/to/file/document.pdf'
|
9
|
+
|
10
|
+
# get the 2nd page
|
11
|
+
$splitTask.ranges = "2";
|
12
|
+
|
13
|
+
# Process files
|
14
|
+
response = my_task.execute
|
15
|
+
|
16
|
+
# and create a new task from last action
|
17
|
+
chained_task = my_task.next(:pdfjpg)
|
18
|
+
|
19
|
+
chained_task.execute
|
20
|
+
chained_task.download
|