pdf4me 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +0 -0
  3. data/README.md +246 -15
  4. data/lib/pdf4me.rb +30 -0
  5. data/lib/pdf4me/actions/complex_action.rb +5 -0
  6. data/lib/pdf4me/actions/convert_file_to_pdf.rb +3 -1
  7. data/lib/pdf4me/actions/convert_to_pdf.rb +1 -5
  8. data/lib/pdf4me/actions/create_images.rb +10 -0
  9. data/lib/pdf4me/actions/create_pdf_a.rb +0 -0
  10. data/lib/pdf4me/actions/create_thumbnail.rb +3 -1
  11. data/lib/pdf4me/actions/extract.rb +10 -0
  12. data/lib/pdf4me/actions/extract_pages.rb +4 -2
  13. data/lib/pdf4me/actions/merge.rb +35 -0
  14. data/lib/pdf4me/actions/merge_two_pdfs.rb +5 -4
  15. data/lib/pdf4me/actions/optimize.rb +0 -0
  16. data/lib/pdf4me/actions/optimize_by_profile.rb +3 -1
  17. data/lib/pdf4me/actions/pdf_a.rb +10 -0
  18. data/lib/pdf4me/actions/split.rb +10 -0
  19. data/lib/pdf4me/actions/split_by_page_nr.rb +0 -0
  20. data/lib/pdf4me/actions/stamp.rb +10 -0
  21. data/lib/pdf4me/actions/text_stamp.rb +9 -2
  22. data/lib/pdf4me/actions/wrapper_action.rb +0 -0
  23. data/lib/pdf4me/client.rb +0 -0
  24. data/lib/pdf4me/configuration.rb +0 -0
  25. data/lib/pdf4me/exceptions.rb +0 -0
  26. data/lib/pdf4me/models/base.rb +5 -1
  27. data/lib/pdf4me/models/color.rb +10 -0
  28. data/lib/pdf4me/models/convert_to_pdf_action.rb +0 -0
  29. data/lib/pdf4me/models/convert_to_pdf_res.rb +2 -1
  30. data/lib/pdf4me/models/create_images_res.rb +9 -0
  31. data/lib/pdf4me/models/custom_cms_config.rb +23 -0
  32. data/lib/pdf4me/models/doc_log.rb +0 -0
  33. data/lib/pdf4me/models/doc_metadata.rb +0 -0
  34. data/lib/pdf4me/models/document.rb +0 -0
  35. data/lib/pdf4me/models/extract_action.rb +28 -0
  36. data/lib/pdf4me/models/extract_res.rb +9 -0
  37. data/lib/pdf4me/models/image.rb +11 -0
  38. data/lib/pdf4me/models/image_action.rb +110 -0
  39. data/lib/pdf4me/models/merge_action.rb +8 -0
  40. data/lib/pdf4me/models/merge_res.rb +8 -0
  41. data/lib/pdf4me/models/notification.rb +1 -1
  42. data/lib/pdf4me/models/optimize_action.rb +0 -0
  43. data/lib/pdf4me/models/optimize_res.rb +2 -1
  44. data/lib/pdf4me/models/page.rb +0 -0
  45. data/lib/pdf4me/models/page_selection.rb +21 -0
  46. data/lib/pdf4me/models/pdf_a_action.rb +33 -0
  47. data/lib/pdf4me/models/pdf_a_res.rb +8 -0
  48. data/lib/pdf4me/models/pdf_font.rb +9 -0
  49. data/lib/pdf4me/models/rgb_set.rb +10 -0
  50. data/lib/pdf4me/models/rotate.rb +12 -0
  51. data/lib/pdf4me/models/split_action.rb +11 -0
  52. data/lib/pdf4me/models/split_res.rb +8 -0
  53. data/lib/pdf4me/models/stamp_action.rb +60 -0
  54. data/lib/pdf4me/models/stamp_res.rb +8 -0
  55. data/lib/pdf4me/models/text.rb +37 -0
  56. data/lib/pdf4me/models/transform.rb +16 -0
  57. data/lib/pdf4me/models/translate.rb +12 -0
  58. data/lib/pdf4me/utils/assigner.rb +0 -0
  59. data/lib/pdf4me/utils/serializer.rb +2 -0
  60. data/lib/pdf4me/version.rb +1 -1
  61. data/spec/actions/complex_action_spec.rb +12 -0
  62. data/spec/actions/convert_file_to_pdf_spec.rb +21 -0
  63. data/spec/actions/convert_to_pdf_spec.rb +16 -0
  64. data/spec/actions/create_pdf_a_spec.rb +0 -0
  65. data/spec/actions/create_thumbnail_spec.rb +27 -0
  66. data/spec/actions/extract_pages_spec.rb +24 -0
  67. data/spec/actions/extract_spec.rb +16 -0
  68. data/spec/actions/merge_spec.rb +17 -0
  69. data/spec/actions/merge_two_pdfs_spec.rb +21 -0
  70. data/spec/actions/optimize_by_profile_spec.rb +22 -0
  71. data/spec/actions/optimize_spec.rb +16 -0
  72. data/spec/actions/pdf_a_spec.rb +16 -0
  73. data/spec/actions/split_by_page_nr_spec.rb +21 -0
  74. data/spec/actions/split_spec.rb +16 -0
  75. data/spec/actions/stamp_spec.rb +16 -0
  76. data/spec/actions/text_stamp_spec.rb +24 -0
  77. data/spec/actions/wrapper_action_spec.rb +0 -0
  78. data/spec/files/4.pdf +0 -0
  79. data/spec/models/base_spec.rb +9 -0
  80. data/spec/models/color_spec.rb +7 -0
  81. data/spec/models/convert_to_pdf_action_spec.rb +23 -0
  82. data/spec/models/convert_to_pdf_res_spec.rb +7 -0
  83. data/spec/models/create_images_res_spec.rb +7 -0
  84. data/spec/models/custom_cms_config_spec.rb +7 -0
  85. data/spec/models/doc_log_spec.rb +36 -0
  86. data/spec/models/doc_metadata_spec.rb +7 -0
  87. data/spec/models/document_spec.rb +12 -0
  88. data/spec/models/extract_action_spec.rb +7 -0
  89. data/spec/models/extract_res_spec.rb +7 -0
  90. data/spec/models/image_action_spec.rb +46 -0
  91. data/spec/models/merge_action_spec.rb +7 -0
  92. data/spec/models/merge_res_spec.rb +7 -0
  93. data/spec/models/notification_spec.rb +13 -0
  94. data/spec/models/optimize_action_spec.rb +44 -0
  95. data/spec/models/optimize_res_spec.rb +7 -0
  96. data/spec/models/page_selection_spec.rb +17 -0
  97. data/spec/models/page_spec.rb +7 -0
  98. data/spec/models/pdf_a_action_spec.rb +22 -0
  99. data/spec/models/pdf_a_res_spec.rb +7 -0
  100. data/spec/models/pdf_font_spec.rb +7 -0
  101. data/spec/models/rgb_set_spec.rb +7 -0
  102. data/spec/models/rotate_spec.rb +13 -0
  103. data/spec/models/split_action_spec.rb +7 -0
  104. data/spec/models/split_res_spec.rb +7 -0
  105. data/spec/models/stamp_action_spec.rb +27 -0
  106. data/spec/models/stamp_res_spec.rb +7 -0
  107. data/spec/models/text_spec.rb +22 -0
  108. data/spec/models/transform_spec.rb +16 -0
  109. data/spec/models/translate_spec.rb +12 -0
  110. data/spec/spec_helper.rb +0 -0
  111. metadata +142 -90
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: daaba46ab2e5e8e3c811aa8a8be1e9bc9fded8c8
4
- data.tar.gz: 7d2c3c51965f65072a16d53246fe1a1ed484680b
3
+ metadata.gz: a5cab03031af5c80c55ae0c20a0bd35ea2da1566
4
+ data.tar.gz: 39616938411754524c95e452ac15328cda1771e7
5
5
  SHA512:
6
- metadata.gz: 5cfea5a92c49fef9fc6f971d0927ea992a347f882304e4afc040bb3bb6698f3eeb8b494f335524750cc409b694849d1144d46ed717fb7ff78df475a4147a3047
7
- data.tar.gz: 32df2610543f47fa4d0cb28fe0f41e6ad9e7cda99e30974f3ea55e1eaf865e192e32b88a3327639a35380ba29731ae44d99e159248bb63bcd073312d78b65dda
6
+ metadata.gz: 7809803d64511e1abb269457fedfa97ba27b1774b0ac55970ac88408cc0b5d97d2697c90f79d7f2814521fec505ded8140489f4a0eae5622c051e949b10a1079
7
+ data.tar.gz: 871941878cfca1d14d6497053bcc1f7e34b2d8ff9f120ca9badac0622a3128bec2a1ee45646d314f27d1c404b1348e125cf6de46e79b2cc1908114d392e8eef4
File without changes
data/README.md CHANGED
@@ -157,7 +157,18 @@ a.run
157
157
 
158
158
 
159
159
  ## Advanced Usage
160
- > These methods are more complex than the Basic Wrapper methods. The development of which is still a Work in Progress. Currently there are two methods that you can use
160
+ > These methods are more complex than the Basic Wrapper methods. The development of which is still a Work in Progress. Currently there are two methods that you can use.
161
+ >
162
+ > By default all the Advanced methods run in blocking mode -
163
+ > i.e you wait for the server to send you the response.
164
+ >
165
+ > If you want to run the operation asynchronously - you will be notified by a webhook over the result -
166
+ then please set `get_notification` to `true` in `Pdf4me::Notification`.
167
+ >
168
+ > When the `Pdf4me::Notification` object is set, it will overwrite what is the default behaviour
169
+ defined on the application/api level.
170
+ >
171
+ >See Pdf4me-Developer page to configure the webhook on application level.
161
172
 
162
173
  ###convert_to_pdf
163
174
 
@@ -165,20 +176,28 @@ a.run
165
176
  `convert_file_to_pdf`. The request is instantiated as a hash with the `:req` key,
166
177
  that takes in `Pdf4me::ConvertToPdf` model.
167
178
 
168
- > The action takes three different models `:document`, `:convertToPdfAction` and `:notification` and returns
179
+ > The action takes three different models `:document`, `:convert_to_pdf_action` and `:notification` and returns
169
180
  `Pdf4me::ConvertToPdfRes`
170
181
 
182
+ > To get more information regarding the models, please refer the provided [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?java#converttopdfreq)
183
+
171
184
  ```ruby
172
185
  file_path = '/path/to/file/TestDocToConvert.docx'
173
186
 
174
- d = Pdf4me::ConvertToPdf.new(
187
+ action = Pdf4me::ConvertToPdf.new(
175
188
  document: Pdf4me::Document.new(
176
189
  doc_data: Base64.encode64(File.open(file_path, 'rb', &:read)),
177
190
  name: "TestDocToConvert.docx"
178
191
  ),
179
- convert_to_pdf_action: Pdf4me::ConvertToPdfAction.new
192
+ convert_to_pdf_action: Pdf4me::ConvertToPdfAction.new,
193
+ notification: Pdf4me::Notification.new(get_notification: true) # async, set false to invoke blocking mode.
180
194
  )
181
- response = d.run
195
+ response = action.run
196
+
197
+ # saving converted file
198
+ File.open('path/to/save.pdf', 'wb') do |f|
199
+ f.write(Base64.decode64(response.document.doc_data))
200
+ end
182
201
  ```
183
202
 
184
203
  ###optimize
@@ -187,23 +206,235 @@ that takes in `Pdf4me::ConvertToPdf` model.
187
206
  >
188
207
  > `:optimize` takes three different models `document`, `optimize_action` and `notification`
189
208
  >
190
- > `Pdf4me::OptimizeAction` takes multiple arguments, but most importantly `profile` is important
209
+ > `Pdf4me::OptimizeAction` takes multiple arguments, important amongst them being `profile`
191
210
  > * profile, valid values are `default`, `web`, `print`, `max`, `mRC`
192
211
 
212
+ > The finer details on configuration can be found at the [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#optimizereq)
213
+
193
214
  ```ruby
194
- file = '/path/to/file/4.pdf'
215
+ file_path = '/path/to/file/4.pdf'
216
+
217
+ action = Pdf4me::Optimize.new(
218
+ document: Pdf4me::Document.new(
219
+ doc_data: Base64.encode64(File.open(file_path, 'rb', &:read))
220
+ ),
221
+ optimize_action: Pdf4me::OptimizeAction.new(
222
+ use_profile: true,
223
+ profile: 'max'
224
+ )
225
+ )
226
+ response = action.run
195
227
 
196
- Pdf4me::Optimize.new(
197
- document: Pdf4me::Document.new(
198
- doc_data: Base64.encode64(File.open(fi, 'rb', &:read))
199
- ),
200
- optimize_action: Pdf4me::OptimizeAction.new(
201
- use_profile: true,
202
- profile: 'max'
228
+ # saving optimized file
229
+ File.open('path/to/optimized.pdf', 'wb') do |f|
230
+ f.write(Base64.decode64(response.document.doc_data))
231
+ end
232
+ ```
233
+
234
+ ### extract
235
+ > Extract out pages from PDF. You can choose from the pages you want to get.
236
+
237
+ > `extract` takes three model arguments
238
+ > * `extract_action`
239
+ > * `document`
240
+ > * `notification` - non mandatory
241
+
242
+ > To list all possible options for the models please refer the [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#extractreq)
243
+
244
+ ```ruby
245
+ file_path = '/path/to/file/4.pdf'
246
+
247
+ action = Pdf4me::Extract.new(
248
+ document: Pdf4me::Document.new(
249
+ doc_data: Base64.encode64(File.open(file_path, 'rb', &:read))
250
+ ),
251
+ extract_action: Pdf4me::ExtractAction.new(
252
+ extract_pages: [1, 2, 5]
253
+ ),
254
+ notification: Pdf4me::Notification.new(get_notification: true) # async
203
255
  )
204
- )
256
+ response = action.run
257
+
258
+ # saving extracted pages
259
+ File.open('path/to/extracted.pdf', 'wb') do |f|
260
+ f.write(Base64.decode64(response.document.doc_data))
261
+ end
262
+ ```
263
+
264
+ ### create_images
265
+ > Creates images from the PDF Document. This is useful if you want to create thumbnails for the PDF.<br>
266
+ > The options are highly configurable to get the desired output.
267
+ > The output would be a base64 encoded object that you have to save.
268
+ > `create_images` takes three different arguments.
269
+ > * `document`
270
+ > * `image_action`
271
+ > * `notification` - non mandatory
272
+
273
+ > Each model has their own set of attributes and hence can be configured further.
274
+ The full documentation of model attributes are available at [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#createimagesreq)
275
+
276
+ ```ruby
277
+ file_path = '/path/to/file/4.pdf'
278
+
279
+ action = Pdf4me::CreateImages.new(
280
+ document: Pdf4me::Document.new(
281
+ doc_data: Base64.encode64(File.open(file_path, 'rb', &:read))
282
+ ),
283
+ image_action: Pdf4me::ImageAction.new(
284
+ page_selection: Pdf4me::PageSelection.new(
285
+ page_nrs: [1]
286
+ ),
287
+ image_extension: 'png',
288
+ center: true,
289
+ fit_page: true,
290
+ bits_per_pixel: 24,
291
+ bilevel_threshold: 181,
292
+ render_options: %w(noAntialiasing),
293
+ rotate_mode: 'none',
294
+ preserve_aspect_ratio: true,
295
+ compression: 'raw'
296
+ )
297
+ )
298
+ response = action.run
299
+
300
+ # saving the extracted thumbnail
301
+ File.open('thumbnail.png', 'wb') do |f|
302
+ f.write(Base64.decode64(response.document.pages.first.thumbnail))
303
+ end
205
304
  ```
206
305
 
306
+ ### merge
307
+ > Merges two or more PDF and gives MergeRes, a Base64 Encoded file
308
+ > `merge` takes three model arguments
309
+ > * `documents` - An Array of `Pdf4me::Document`
310
+ > * `merge_action` - `Pdf4me::MergeAction` model - non mandatory
311
+ > * `notification` - `Pdf4me::Notification` model - non mandatory
312
+
313
+ > To list all possible options for the models please refer the [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#mergereq)
314
+
315
+ ```ruby
316
+
317
+ file_path_1 = '/path/to/file/4.pdf'
318
+ file_path_2 = '/path/to/file/3.pdf'
319
+ file_path_3 = '/path/to/file/2.pdf'
320
+
321
+ action = Pdf4me::Merge.new(
322
+ documents: [
323
+ Pdf4me::Document.new(
324
+ doc_data: Base64.encode64(File.open(file_path_1, 'rb', &:read))
325
+ ),
326
+ Pdf4me::Document.new(
327
+ doc_data: Base64.encode64(File.open(file_path_2, 'rb', &:read))
328
+ ),
329
+ Pdf4me::Document.new(
330
+ doc_data: Base64.encode64(File.open(file_path_3, 'rb', &:read))
331
+ )
332
+ ]
333
+ )
334
+ response = action.run
335
+
336
+ # saving the merged PDF
337
+ File.open('merged.pdf', 'wb') do |f|
338
+ f.write(Base64.decode64(response.document.doc_data))
339
+ end
340
+ ```
341
+
342
+ ### pdf_a
343
+ > Creates PDF/A Documents from normal PDF document.
344
+ > `pdf_a` takes three model arguments.
345
+ > * `document` - a valid instance of `Pdf4me::Document`
346
+ > * `pdf_a_action` - a valid instance of `Pdf4me::PdfAAction`
347
+ > * `notification` - a valid instance of `Pdf4me::Notification` - non mandatory
348
+ >
349
+ > To list all possible options for the models please refer the [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#createpdfareq)
350
+ ```ruby
351
+ file_path = '/path/to/file/4.pdf'
352
+
353
+ action = Pdf4me::PdfA.new(
354
+ document: Pdf4me::Document.new(
355
+ doc_data: Base64.encode64(File.open(file_path, 'rb', &:read))
356
+ ),
357
+ pdf_a_action: Pdf4me::PdfAAction.new(
358
+ compliance: 'pdfA1a',
359
+ allowDowngrade: true,
360
+ allowUpgrade: true,
361
+ outputIntentProfile: 'sRGBColorSpace',
362
+ linearize: true
363
+ )
364
+ )
365
+ response = action.run
366
+
367
+ # saving the PDF/A document
368
+ File.open('pdf_a.pdf', 'wb') do |f|
369
+ f.write(Base64.decode64(response.document.doc_data))
370
+ end
371
+ ```
372
+
373
+
374
+ ### split
375
+ > Given a PDF, split the PDF into parts
376
+ > `split` takes up three models
377
+ > * `document` - a valid instance of `Pdf4me::Document`
378
+ > * `split_action` - a valid instance of `Pdf4me::SplitAction` which defines the number of parts the PDF splits into
379
+ > * `notification` - non mandatory, an instance of `Pdf4me::Notification`
380
+ >
381
+ > To list all possible options for the models please refer the [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#splitreq)
382
+
383
+ ```ruby
384
+ file_path = '/path/to/file/4.pdf'
385
+
386
+ action = Pdf4me::Split.new(
387
+ document: Pdf4me::Document.new(
388
+ doc_data: Base64.encode64(File.open(file_path, 'rb', &:read)),
389
+ ),
390
+ split_action: Pdf4me::SplitAction.new(
391
+ split_after_page: 3
392
+ )
393
+ )
394
+ response = action.run
395
+
396
+ # save documents
397
+ response.documents.each_with_index do |document, index|
398
+ File.open("split_#{index}.pdf", 'wb') do |f|
399
+ f.write(Base64.decode64(document.doc_data))
400
+ end
401
+ end
402
+ ```
403
+
404
+ # stamp
405
+ > Stamp a PDF, based on Stamp Action.
406
+ > You can stamp either a text or image to PDF, There are two separate methods defined to help you with stamping
407
+ > - Stamp PDF with image
408
+ > - Stamp PDF with Text
409
+ > `stamp` takes three model arguments
410
+ * `document` - a valid instance of `Pdf4me::Document`
411
+ > * `stamp_action` - a valid instance of `Pdf4me::StampAction` which defines the stamp type, and position.
412
+ > * `notification` - non mandatory, an instance of `Pdf4me::Notification`
413
+ >
414
+ > To list all possible options for the models please refer the [model definition](https://pdf4medoc.blob.core.windows.net/doc/index.html?curl#stampreq)
415
+
416
+ ```ruby
417
+ file_path = '/path/to/file/4.pdf'
418
+
419
+ action = Pdf4me::Stamp.new(
420
+ document: Pdf4me::Document.new(
421
+ doc_data: Base64.encode64(File.open(file_path, 'rb', &:read)),
422
+ ),
423
+ stamp_action: Pdf4me::StampAction.new(
424
+ image: Pdf4me::Image.new(
425
+ image_data: Base64.encode64(File.open(image_path, 'rb', &:read))
426
+ )
427
+ )
428
+ )
429
+ response = action.run
430
+
431
+ # save stamped document
432
+ File.open('pdf_stamped.pdf', 'wb') do |f|
433
+ f.write(Base64.decode64(response.document.doc_data))
434
+ end
435
+ ```
436
+
437
+
207
438
  ## Contributing
208
439
 
209
440
  Bug reports and pull requests are welcome on GitHub at https://github.com/pdf4me/pdf4me-clientapi-ruby.
@@ -28,6 +28,12 @@ require 'pdf4me/actions/text_stamp'
28
28
  require 'pdf4me/actions/complex_action'
29
29
  require 'pdf4me/actions/convert_to_pdf'
30
30
  require 'pdf4me/actions/optimize'
31
+ require 'pdf4me/actions/create_images'
32
+ require 'pdf4me/actions/extract'
33
+ require 'pdf4me/actions/merge'
34
+ require 'pdf4me/actions/pdf_a'
35
+ require 'pdf4me/actions/split'
36
+ require 'pdf4me/actions/stamp'
31
37
 
32
38
  # models
33
39
  require 'pdf4me/models/base'
@@ -40,6 +46,30 @@ require 'pdf4me/models/doc_metadata'
40
46
  require 'pdf4me/models/page'
41
47
  require 'pdf4me/models/optimize_action'
42
48
  require 'pdf4me/models/optimize_res'
49
+ require 'pdf4me/models/color'
50
+ require 'pdf4me/models/custom_cms_config'
51
+ require 'pdf4me/models/extract_action'
52
+ require 'pdf4me/models/extract_res'
53
+ require 'pdf4me/models/image_action'
54
+ require 'pdf4me/models/create_images_res'
55
+ require 'pdf4me/models/merge_action'
56
+ require 'pdf4me/models/merge_res'
57
+ require 'pdf4me/models/page_selection'
58
+ require 'pdf4me/models/pdf_a_action'
59
+ require 'pdf4me/models/pdf_a_res'
60
+ require 'pdf4me/models/pdf_font'
61
+ require 'pdf4me/models/rgb_set'
62
+ require 'pdf4me/models/rotate'
63
+ require 'pdf4me/models/split_action'
64
+ require 'pdf4me/models/split_res'
65
+ require 'pdf4me/models/stamp_action'
66
+ require 'pdf4me/models/stamp_res'
67
+ require 'pdf4me/models/text'
68
+ require 'pdf4me/models/transform'
69
+ require 'pdf4me/models/translate'
70
+ require 'pdf4me/models/image'
71
+
72
+
43
73
 
44
74
  module Pdf4me
45
75
  def self.configure
@@ -1,5 +1,6 @@
1
1
  module Pdf4me
2
2
  class ComplexAction
3
+ attr_accessor :notification
3
4
  attr_reader :client
4
5
 
5
6
  def client
@@ -37,6 +38,10 @@ module Pdf4me
37
38
  errors.flatten
38
39
  end
39
40
 
41
+ def notification
42
+ @notification || Pdf4me::Notification.new
43
+ end
44
+
40
45
  protected
41
46
 
42
47
  def attributes
@@ -14,7 +14,9 @@ module Pdf4me
14
14
  end
15
15
 
16
16
  def save_path
17
- @save_path ||= File.join(File.dirname(file), "#{File.basename(file, ".*")}.pdf")
17
+ @save_path ||= unless file.nil?
18
+ File.join(File.dirname(file), "#{File.basename(file, ".*")}.pdf")
19
+ end
18
20
  end
19
21
 
20
22
  def call_api
@@ -1,14 +1,10 @@
1
1
  module Pdf4me
2
2
  class ConvertToPdf < ComplexAction
3
- ATTRIBUTES = %w|document convert_to_pdf_action notification|
3
+ ATTRIBUTES = %w|document convert_to_pdf_action|
4
4
  attr_accessor *ATTRIBUTES
5
5
 
6
6
  def path
7
7
  '/Convert/ConvertToPdf'
8
8
  end
9
-
10
- def notification
11
- @notification || Pdf4me::Notification.new
12
- end
13
9
  end
14
10
  end
@@ -0,0 +1,10 @@
1
+ module Pdf4me
2
+ class CreateImages < ComplexAction
3
+ ATTRIBUTES = %w|document image_action|
4
+ attr_accessor *ATTRIBUTES
5
+
6
+ def path
7
+ '/Image/CreateImages'
8
+ end
9
+ end
10
+ end
File without changes
@@ -36,7 +36,9 @@ module Pdf4me
36
36
  end
37
37
 
38
38
  def save_path
39
- @save_path ||= File.join(File.dirname(file), "#{File.basename(file, ".*")}-thumbnail.#{image_format}")
39
+ @save_path ||= unless file.nil?
40
+ File.join(File.dirname(file), "#{File.basename(file, ".*")}-thumbnail.#{image_format}")
41
+ end
40
42
  end
41
43
 
42
44
  def call_api
@@ -0,0 +1,10 @@
1
+ module Pdf4me
2
+ class Extract < ComplexAction
3
+ ATTRIBUTES = %w|document extract_action|
4
+ attr_accessor *ATTRIBUTES
5
+
6
+ def path
7
+ '/Extract/Extract'
8
+ end
9
+ end
10
+ end
@@ -21,7 +21,9 @@ module Pdf4me
21
21
  end
22
22
 
23
23
  def save_path
24
- @save_path ||= File.join(File.dirname(file), "extracted_pages.pdf")
24
+ @save_path ||= unless file.nil?
25
+ File.join(File.dirname(file), "extracted_pages.pdf")
26
+ end
25
27
  end
26
28
 
27
29
  def call_api
@@ -41,7 +43,7 @@ module Pdf4me
41
43
  errors.add(:pages, 'must be valid numeric value')
42
44
  end
43
45
 
44
- unless pages.all? {|i| i.is_a?(Integer) }
46
+ unless pages.all? { |i| i.is_a?(Integer) }
45
47
  errors.add(:pages, 'contains values that are not numbers')
46
48
  end
47
49
  end