ilovepdf 1.3.1 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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 +1 -1
- 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
|