pdf4me 2.0.3 → 2.0.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.
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