pdf4me 1.0.0

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 (271) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +472 -0
  4. data/Rakefile +8 -0
  5. data/docs/ActionFlow.md +8 -0
  6. data/docs/ApiUsageRes.md +11 -0
  7. data/docs/ArchiveConfig.md +11 -0
  8. data/docs/ArchiveJobReq.md +12 -0
  9. data/docs/ArchiveJobRes.md +9 -0
  10. data/docs/Color.md +10 -0
  11. data/docs/ConvertApi.md +102 -0
  12. data/docs/ConvertToPdf.md +10 -0
  13. data/docs/ConvertToPdfAction.md +10 -0
  14. data/docs/ConvertToPdfRes.md +8 -0
  15. data/docs/CreateImages.md +10 -0
  16. data/docs/CreateImagesRes.md +8 -0
  17. data/docs/CreatePdfA.md +10 -0
  18. data/docs/CreatePdfARes.md +8 -0
  19. data/docs/CustomCMSConfig.md +23 -0
  20. data/docs/DocAction.md +8 -0
  21. data/docs/DocLog.md +12 -0
  22. data/docs/DocMetadata.md +16 -0
  23. data/docs/Document.md +16 -0
  24. data/docs/DocumentApi.md +203 -0
  25. data/docs/DropDocumentReq.md +20 -0
  26. data/docs/DropDocumentRes.md +15 -0
  27. data/docs/ExecutionTrigger.md +10 -0
  28. data/docs/Extract.md +10 -0
  29. data/docs/ExtractAction.md +9 -0
  30. data/docs/ExtractApi.md +102 -0
  31. data/docs/ExtractRes.md +8 -0
  32. data/docs/GetDocumentListRes.md +13 -0
  33. data/docs/GetDocumentReq.md +14 -0
  34. data/docs/GetDocumentRes.md +14 -0
  35. data/docs/IFormFile.md +13 -0
  36. data/docs/Image.md +15 -0
  37. data/docs/ImageAction.md +30 -0
  38. data/docs/ImageApi.md +107 -0
  39. data/docs/Job.md +10 -0
  40. data/docs/JobApi.md +197 -0
  41. data/docs/JobConfig.md +18 -0
  42. data/docs/JobConfigRes.md +8 -0
  43. data/docs/KeyValuePairStringObject.md +9 -0
  44. data/docs/KeyValuePairStringString.md +9 -0
  45. data/docs/ManagementApi.md +92 -0
  46. data/docs/Merge.md +10 -0
  47. data/docs/MergeAction.md +8 -0
  48. data/docs/MergeApi.md +102 -0
  49. data/docs/MergeRes.md +8 -0
  50. data/docs/Notification.md +9 -0
  51. data/docs/OcrAction.md +12 -0
  52. data/docs/OcrApi.md +57 -0
  53. data/docs/Optimize.md +10 -0
  54. data/docs/OptimizeAction.md +35 -0
  55. data/docs/OptimizeApi.md +103 -0
  56. data/docs/OptimizeRes.md +9 -0
  57. data/docs/Page.md +14 -0
  58. data/docs/PageSelection.md +10 -0
  59. data/docs/Pdf4meAction.md +12 -0
  60. data/docs/Pdf4meDocument.md +32 -0
  61. data/docs/Pdf4meException.md +8 -0
  62. data/docs/PdfAAction.md +14 -0
  63. data/docs/PdfAApi.md +102 -0
  64. data/docs/PdfFont.md +9 -0
  65. data/docs/Pricing.md +13 -0
  66. data/docs/ProduceDocuments.md +14 -0
  67. data/docs/ProduceDocumentsRes.md +8 -0
  68. data/docs/ProduceOutput.md +8 -0
  69. data/docs/RGBSet.md +10 -0
  70. data/docs/RecognizeDocument.md +10 -0
  71. data/docs/RecognizeDocumentRes.md +9 -0
  72. data/docs/Rectangle.md +11 -0
  73. data/docs/Rotate.md +10 -0
  74. data/docs/RunJobRes.md +10 -0
  75. data/docs/SignatureConfig.md +7 -0
  76. data/docs/Split.md +10 -0
  77. data/docs/SplitAction.md +11 -0
  78. data/docs/SplitApi.md +103 -0
  79. data/docs/SplitRes.md +8 -0
  80. data/docs/Stamp.md +10 -0
  81. data/docs/StampAction.md +22 -0
  82. data/docs/StampApi.md +110 -0
  83. data/docs/StampRes.md +8 -0
  84. data/docs/StorageFolder.md +10 -0
  85. data/docs/Text.md +17 -0
  86. data/docs/Transform.md +13 -0
  87. data/docs/Translate.md +9 -0
  88. data/docs/UserFingerprint.md +9 -0
  89. data/docs/VersionRes.md +8 -0
  90. data/docs/java.md +425 -0
  91. data/git_push.sh +55 -0
  92. data/lib/pdf4me.rb +124 -0
  93. data/lib/pdf4me/api/convert_api.rb +130 -0
  94. data/lib/pdf4me/api/document_api.rb +218 -0
  95. data/lib/pdf4me/api/extract_api.rb +131 -0
  96. data/lib/pdf4me/api/image_api.rb +139 -0
  97. data/lib/pdf4me/api/job_api.rb +223 -0
  98. data/lib/pdf4me/api/management_api.rb +117 -0
  99. data/lib/pdf4me/api/merge_api.rb +131 -0
  100. data/lib/pdf4me/api/ocr_api.rb +74 -0
  101. data/lib/pdf4me/api/optimize_api.rb +139 -0
  102. data/lib/pdf4me/api/pdf_a_api.rb +134 -0
  103. data/lib/pdf4me/api/split_api.rb +135 -0
  104. data/lib/pdf4me/api/stamp_api.rb +159 -0
  105. data/lib/pdf4me/api_client.rb +380 -0
  106. data/lib/pdf4me/api_error.rb +38 -0
  107. data/lib/pdf4me/configuration.rb +109 -0
  108. data/lib/pdf4me/models/action_flow.rb +190 -0
  109. data/lib/pdf4me/models/api_usage_res.rb +219 -0
  110. data/lib/pdf4me/models/archive_config.rb +226 -0
  111. data/lib/pdf4me/models/archive_job_req.rb +249 -0
  112. data/lib/pdf4me/models/archive_job_res.rb +207 -0
  113. data/lib/pdf4me/models/color.rb +206 -0
  114. data/lib/pdf4me/models/convert_to_pdf.rb +209 -0
  115. data/lib/pdf4me/models/convert_to_pdf_action.rb +253 -0
  116. data/lib/pdf4me/models/convert_to_pdf_res.rb +189 -0
  117. data/lib/pdf4me/models/create_images.rb +209 -0
  118. data/lib/pdf4me/models/create_images_res.rb +189 -0
  119. data/lib/pdf4me/models/create_pdf_a.rb +209 -0
  120. data/lib/pdf4me/models/create_pdf_a_res.rb +189 -0
  121. data/lib/pdf4me/models/custom_cms_config.rb +323 -0
  122. data/lib/pdf4me/models/doc_action.rb +190 -0
  123. data/lib/pdf4me/models/doc_log.rb +257 -0
  124. data/lib/pdf4me/models/doc_metadata.rb +285 -0
  125. data/lib/pdf4me/models/document.rb +285 -0
  126. data/lib/pdf4me/models/drop_document_req.rb +348 -0
  127. data/lib/pdf4me/models/drop_document_res.rb +260 -0
  128. data/lib/pdf4me/models/execution_trigger.rb +206 -0
  129. data/lib/pdf4me/models/extract.rb +207 -0
  130. data/lib/pdf4me/models/extract_action.rb +201 -0
  131. data/lib/pdf4me/models/extract_res.rb +188 -0
  132. data/lib/pdf4me/models/get_document_list_res.rb +237 -0
  133. data/lib/pdf4me/models/get_document_req.rb +243 -0
  134. data/lib/pdf4me/models/get_document_res.rb +246 -0
  135. data/lib/pdf4me/models/i_form_file.rb +235 -0
  136. data/lib/pdf4me/models/image.rb +300 -0
  137. data/lib/pdf4me/models/image_action.rb +513 -0
  138. data/lib/pdf4me/models/job.rb +213 -0
  139. data/lib/pdf4me/models/job_config.rb +298 -0
  140. data/lib/pdf4me/models/job_config_res.rb +193 -0
  141. data/lib/pdf4me/models/key_value_pair_string_object.rb +197 -0
  142. data/lib/pdf4me/models/key_value_pair_string_string.rb +197 -0
  143. data/lib/pdf4me/models/merge.rb +209 -0
  144. data/lib/pdf4me/models/merge_action.rb +190 -0
  145. data/lib/pdf4me/models/merge_res.rb +188 -0
  146. data/lib/pdf4me/models/notification.rb +199 -0
  147. data/lib/pdf4me/models/ocr_action.rb +259 -0
  148. data/lib/pdf4me/models/optimize.rb +209 -0
  149. data/lib/pdf4me/models/optimize_action.rb +514 -0
  150. data/lib/pdf4me/models/optimize_res.rb +199 -0
  151. data/lib/pdf4me/models/page.rb +258 -0
  152. data/lib/pdf4me/models/page_selection.rb +246 -0
  153. data/lib/pdf4me/models/pdf4me_action.rb +259 -0
  154. data/lib/pdf4me/models/pdf4me_document.rb +511 -0
  155. data/lib/pdf4me/models/pdf4me_exception.rb +189 -0
  156. data/lib/pdf4me/models/pdf_a_action.rb +297 -0
  157. data/lib/pdf4me/models/pdf_font.rb +213 -0
  158. data/lib/pdf4me/models/pricing.rb +278 -0
  159. data/lib/pdf4me/models/produce_documents.rb +251 -0
  160. data/lib/pdf4me/models/produce_documents_res.rb +191 -0
  161. data/lib/pdf4me/models/produce_output.rb +221 -0
  162. data/lib/pdf4me/models/recognize_document.rb +209 -0
  163. data/lib/pdf4me/models/recognize_document_res.rb +198 -0
  164. data/lib/pdf4me/models/rectangle.rb +215 -0
  165. data/lib/pdf4me/models/rgb_set.rb +206 -0
  166. data/lib/pdf4me/models/rotate.rb +221 -0
  167. data/lib/pdf4me/models/run_job_res.rb +215 -0
  168. data/lib/pdf4me/models/signature_config.rb +179 -0
  169. data/lib/pdf4me/models/split.rb +207 -0
  170. data/lib/pdf4me/models/split_action.rb +219 -0
  171. data/lib/pdf4me/models/split_res.rb +190 -0
  172. data/lib/pdf4me/models/stamp.rb +209 -0
  173. data/lib/pdf4me/models/stamp_action.rb +387 -0
  174. data/lib/pdf4me/models/stamp_res.rb +189 -0
  175. data/lib/pdf4me/models/storage_folder.rb +239 -0
  176. data/lib/pdf4me/models/text.rb +320 -0
  177. data/lib/pdf4me/models/transform.rb +263 -0
  178. data/lib/pdf4me/models/translate.rb +207 -0
  179. data/lib/pdf4me/models/user_fingerprint.rb +197 -0
  180. data/lib/pdf4me/models/version_res.rb +188 -0
  181. data/lib/pdf4me/version.rb +15 -0
  182. data/pdf4me.gemspec +47 -0
  183. data/spec/api/convert_api_spec.rb +60 -0
  184. data/spec/api/document_api_spec.rb +83 -0
  185. data/spec/api/extract_api_spec.rb +60 -0
  186. data/spec/api/image_api_spec.rb +62 -0
  187. data/spec/api/job_api_spec.rb +82 -0
  188. data/spec/api/management_api_spec.rb +57 -0
  189. data/spec/api/merge_api_spec.rb +60 -0
  190. data/spec/api/ocr_api_spec.rb +47 -0
  191. data/spec/api/optimize_api_spec.rb +60 -0
  192. data/spec/api/pdf_a_api_spec.rb +60 -0
  193. data/spec/api/split_api_spec.rb +60 -0
  194. data/spec/api/stamp_api_spec.rb +63 -0
  195. data/spec/api_client_spec.rb +226 -0
  196. data/spec/configuration_spec.rb +42 -0
  197. data/spec/models/action_flow_spec.rb +42 -0
  198. data/spec/models/api_usage_res_spec.rb +60 -0
  199. data/spec/models/archive_config_spec.rb +60 -0
  200. data/spec/models/archive_job_req_spec.rb +66 -0
  201. data/spec/models/archive_job_res_spec.rb +48 -0
  202. data/spec/models/color_spec.rb +54 -0
  203. data/spec/models/convert_to_pdf_action_spec.rb +62 -0
  204. data/spec/models/convert_to_pdf_res_spec.rb +42 -0
  205. data/spec/models/convert_to_pdf_spec.rb +54 -0
  206. data/spec/models/create_images_res_spec.rb +42 -0
  207. data/spec/models/create_images_spec.rb +54 -0
  208. data/spec/models/create_pdf_a_res_spec.rb +42 -0
  209. data/spec/models/create_pdf_a_spec.rb +54 -0
  210. data/spec/models/custom_cms_config_spec.rb +132 -0
  211. data/spec/models/doc_action_spec.rb +42 -0
  212. data/spec/models/doc_log_spec.rb +70 -0
  213. data/spec/models/doc_metadata_spec.rb +90 -0
  214. data/spec/models/document_spec.rb +90 -0
  215. data/spec/models/drop_document_req_spec.rb +118 -0
  216. data/spec/models/drop_document_res_spec.rb +84 -0
  217. data/spec/models/execution_trigger_spec.rb +54 -0
  218. data/spec/models/extract_action_spec.rb +48 -0
  219. data/spec/models/extract_res_spec.rb +42 -0
  220. data/spec/models/extract_spec.rb +54 -0
  221. data/spec/models/get_document_list_res_spec.rb +72 -0
  222. data/spec/models/get_document_req_spec.rb +78 -0
  223. data/spec/models/get_document_res_spec.rb +78 -0
  224. data/spec/models/i_form_file_spec.rb +72 -0
  225. data/spec/models/image_action_spec.rb +206 -0
  226. data/spec/models/image_spec.rb +88 -0
  227. data/spec/models/job_config_res_spec.rb +42 -0
  228. data/spec/models/job_config_spec.rb +102 -0
  229. data/spec/models/job_spec.rb +54 -0
  230. data/spec/models/key_value_pair_string_object_spec.rb +48 -0
  231. data/spec/models/key_value_pair_string_string_spec.rb +48 -0
  232. data/spec/models/merge_action_spec.rb +42 -0
  233. data/spec/models/merge_res_spec.rb +42 -0
  234. data/spec/models/merge_spec.rb +54 -0
  235. data/spec/models/notification_spec.rb +48 -0
  236. data/spec/models/ocr_action_spec.rb +70 -0
  237. data/spec/models/optimize_action_spec.rb +228 -0
  238. data/spec/models/optimize_res_spec.rb +48 -0
  239. data/spec/models/optimize_spec.rb +54 -0
  240. data/spec/models/page_selection_spec.rb +58 -0
  241. data/spec/models/page_spec.rb +78 -0
  242. data/spec/models/pdf4me_action_spec.rb +70 -0
  243. data/spec/models/pdf4me_document_spec.rb +202 -0
  244. data/spec/models/pdf4me_exception_spec.rb +42 -0
  245. data/spec/models/pdf_a_action_spec.rb +86 -0
  246. data/spec/models/pdf_font_spec.rb +48 -0
  247. data/spec/models/pricing_spec.rb +80 -0
  248. data/spec/models/produce_documents_res_spec.rb +42 -0
  249. data/spec/models/produce_documents_spec.rb +78 -0
  250. data/spec/models/produce_output_spec.rb +46 -0
  251. data/spec/models/recognize_document_res_spec.rb +48 -0
  252. data/spec/models/recognize_document_spec.rb +54 -0
  253. data/spec/models/rectangle_spec.rb +60 -0
  254. data/spec/models/rgb_set_spec.rb +54 -0
  255. data/spec/models/rotate_spec.rb +54 -0
  256. data/spec/models/run_job_res_spec.rb +54 -0
  257. data/spec/models/signature_config_spec.rb +36 -0
  258. data/spec/models/split_action_spec.rb +60 -0
  259. data/spec/models/split_res_spec.rb +42 -0
  260. data/spec/models/split_spec.rb +54 -0
  261. data/spec/models/stamp_action_spec.rb +142 -0
  262. data/spec/models/stamp_res_spec.rb +42 -0
  263. data/spec/models/stamp_spec.rb +54 -0
  264. data/spec/models/storage_folder_spec.rb +58 -0
  265. data/spec/models/text_spec.rb +104 -0
  266. data/spec/models/transform_spec.rb +72 -0
  267. data/spec/models/translate_spec.rb +48 -0
  268. data/spec/models/user_fingerprint_spec.rb +48 -0
  269. data/spec/models/version_res_spec.rb +42 -0
  270. data/spec/spec_helper.rb +111 -0
  271. metadata +594 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 913225dfa467f836d3c11a20aff2ca56debcd92c
4
+ data.tar.gz: 37610fb0a739b216a951172a9b847f11a6b5f9d2
5
+ SHA512:
6
+ metadata.gz: c311ac1567c9d7d4831e61ad770352ac33da85bb6dfcc9d1ff4cab8c008b3cb60dbc5282d292052fe24c08dbe1acbc35470788e19534544662516a7378d15e64
7
+ data.tar.gz: 76acc2bf0daf9cad1024230463291c2f5bd77ae2f105874a3647abde647b2ae689b1efe828e94c0b0841ee9d65a63cf0f8cf7f7950d1711e7754d3ace2e4edc0
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem 'rake', '~> 12.0.0'
7
+ end
data/README.md ADDED
@@ -0,0 +1,472 @@
1
+ # pdf4me
2
+
3
+ **Pdf4me** is a PDF utility tool for Ruby and other languages.
4
+ The tool provides utility over common PDF related task like `merge`, `create`, `stamp` and others, which can be
5
+ found below.
6
+
7
+ ## Getting Started
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```shell
12
+ gem 'pdf4me'
13
+ ```
14
+
15
+ And then execute
16
+ ```shell
17
+ bundle install
18
+ # OR If you don't use bundler
19
+ gem install pdf4me
20
+ ```
21
+
22
+ ## Install from Git
23
+
24
+ You can also install from a git repository: https://github.com/GIT_USER_ID/GIT_REPO_ID.git, then add the following in the Gemfile:
25
+
26
+ gem 'pdf4me', :git => 'https://github.com/GIT_USER_ID/GIT_REPO_ID.git'
27
+
28
+ ## Initializing Pdf4me
29
+ Pdf4me works with any Rack application or plain old ruby script. In any regular script the configuration of Pdf4me looks like
30
+
31
+ * Require pdf4me
32
+ * Configure pdf4me with API endpoints and credentials
33
+ * Call appropriate methods.
34
+
35
+
36
+ ```ruby
37
+ require 'pdf4me'
38
+
39
+ Pdf4me.configure do |config|
40
+ config.host = 'api-dev.pdf4me.com'
41
+ config.debugging = true
42
+ config.app_id = 'your-app-id'
43
+ config.app_secret = 'your-app-secret'
44
+ end
45
+ ```
46
+
47
+ ## Basic Usage
48
+
49
+ ### convert_file_to_pdf
50
+ > Given a file, convert the file to PDF
51
+
52
+ ```ruby
53
+ api_instance = Pdf4me::ConvertApi.new
54
+ file = File.open(file_path, 'rb')
55
+ response = api_instance.convert_file_to_pdf(
56
+ file_name: 'some-name',
57
+ file: file
58
+ )
59
+ file.close
60
+ ```
61
+
62
+
63
+ ### convert_to_pdf
64
+ > Given a file, convert the file to PDF, with finer controls as opposed to
65
+ `convert_file_to_pdf`. The request is instantiated as a hash with the `:req` key,
66
+ that takes in `Pdf4me::ConvertToPdf` model.
67
+
68
+ > The model itself is comprised of three more models, `:document`, `:convertToPdfAction`
69
+ and `:notification`
70
+
71
+ ```ruby
72
+ api_instance = Pdf4me::ConvertApi.new
73
+ opts = {
74
+ req: Pdf4me::ConvertToPdf.new(
75
+ document: Pdf4me::Document.new(
76
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
77
+ ),
78
+ convertToPdfAction: Pdf4me::ConvertToPdfAction.new(
79
+ options: ""
80
+ ),
81
+ notification: Pdf4me::Notification.new(
82
+ getNotification: true
83
+ )
84
+ )
85
+ }
86
+ result = api_instance.convert_to_pdf(opts)
87
+ ```
88
+
89
+ ### extract
90
+ > Extract out pages from PDF. You can choose from the pages you want to extract
91
+
92
+ ```ruby
93
+ api_instance = Pdf4me::ExtractApi.new
94
+
95
+ opts = {
96
+ req: Pdf4me::Extract.new(
97
+ document: Pdf4me::Document.new(
98
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
99
+ ),
100
+ extractAction: Pdf4me::ExtractAction.new(
101
+ extractPages: Array.wrap(pages)
102
+ ),
103
+ notification: Pdf4me::Notification.new(
104
+ getNotification: true
105
+ )
106
+ )
107
+ }
108
+ api_instance.extract(opts)
109
+ ```
110
+
111
+
112
+ ### extract_pages
113
+ > Utility function on top of extract, that trades complexity for configuration.
114
+
115
+ ```ruby
116
+ api_instance = Pdf4me::ExtractApi.new
117
+ response = File.open(file_path, 'rb') do |file|
118
+ api_instance.extract_pages(
119
+ page_nrs: '2,3,4',
120
+ file: file
121
+ )
122
+ end
123
+
124
+ # OR
125
+ file = File.open(file_path, 'rb')
126
+ response = api_instance.extract_pages(
127
+ page_nrs: '2,3',
128
+ file: file
129
+ )
130
+ file.close
131
+
132
+ # do something with response a tempfile
133
+ FileUtils.cp(response.path, '/new/file/path.pdf')
134
+ ```
135
+
136
+ ### create_images
137
+ > Creates images from the PDF Document. This is useful if you want to create thumbnails for the PDF
138
+ > The options are highly configurable to get the desired output.
139
+ > The output would be a base64 encoded object that you have to save.
140
+
141
+ ```ruby
142
+ # initialize the API client
143
+ api_instance = Pdf4me::ImageApi.new
144
+
145
+ # make request hash
146
+ opts = {
147
+ req: Pdf4me::CreateImages.new(
148
+ document: Pdf4me::Document.new(
149
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
150
+ ),
151
+ imageAction: Pdf4me::ImageAction.new(
152
+ pageSelection: Pdf4me::PageSelection.new(
153
+ pageNrs: [1,2,3]
154
+ ),
155
+ imageExtension: 'png',
156
+ center: true,
157
+ fitPage: true,
158
+ bitsPerPixel: 24,
159
+ bilevelThreshold: 181,
160
+ renderOptions: %w(noAntialiasing),
161
+ rotateMode: 'none',
162
+ preserveAspectRatio: true,
163
+ compression: 'raw'
164
+ ),
165
+ notification: Pdf4me::Notification.new(
166
+ getNotification: true
167
+ )
168
+ )
169
+ }
170
+
171
+ # response and save
172
+ response = api_instance.create_images(opts)
173
+ File.open(save_path, 'wb') do |f|
174
+ f.write(Base64.decode64(response.document.doc_data))
175
+ end
176
+ ```
177
+
178
+ ### create_thumbnail
179
+ > This is again a wrapper method on top of `:create_images`. The configuration is little less heckling
180
+
181
+ ```ruby
182
+ api_instance = Pdf4me::ImageApi.new
183
+ file = File.open(file_path, 'rb')
184
+
185
+ response = api_instance.create_thumbnail(
186
+ 100, # width in pixels
187
+ page_nr: "1", # for which page
188
+ image_format: "png", # image format
189
+ file: file
190
+ )
191
+
192
+ file.close
193
+
194
+ # do something with response a tempfile
195
+ FileUtils.cp(response.path, '/new/file/path.png')
196
+ ````
197
+
198
+ ### merge
199
+ > Merges two or more PDF and gives MergeRes, a Base64 Encoded file
200
+
201
+ ```ruby
202
+ # Initialize the API client
203
+ api_instance = Pdf4me::MergeApi.new
204
+
205
+ # make request Hash
206
+ opts = {
207
+ req: Pdf4me::Merge.new(
208
+ documents: [
209
+ Pdf4me::Document.new(
210
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
211
+ ),
212
+ Pdf4me::Document.new(
213
+ docData: Base64.encode64(File.open(file_path_2, 'rb', &:read)),
214
+ ),
215
+ ],
216
+ mergeAction: Pdf4me::MergeAction.new,
217
+ notification: Pdf4me::Notification.new
218
+ )
219
+ }
220
+
221
+ # make request
222
+ response = api_instance.merge(opts)
223
+ File.open(save_path, 'wb') do |f|
224
+ f.write(Base64.decode64(response.document.doc_data))
225
+ end
226
+ ````
227
+
228
+ ### merge2_pdfs
229
+ > Utility method that merges two pdfs
230
+
231
+ ```ruby
232
+ api_instance = Pdf4me::MergeApi.new
233
+
234
+ file1 = File.open(file_path, 'rb')
235
+ file2 = File.open(file_path_2, 'rb')
236
+
237
+ response = api_instance.merge2_pdfs(
238
+ file1: file1,
239
+ file2: file2
240
+ )
241
+
242
+ file1.close
243
+ file2.close
244
+
245
+ # do something with response a tempfile
246
+ FileUtils.cp(response.path, '/new/file/path.pdf')
247
+ ```
248
+
249
+ ###optimize
250
+
251
+ > Given a PDF document, Optimize the document.
252
+ > `:optimize` takes multiple arguments, the arguments are
253
+ >
254
+ > * profile, valid values are `default`, `web`, `print`, `max`, `mRC`
255
+ > * dithering_mode, valid values are `none`, `floydSteinberg`, `halftone`, `pattern`, `g3Optimized`, `g4Optimized`, `atkinson`
256
+
257
+ For complete list of options, please refer the `OptimizeAction` class
258
+
259
+ ```ruby
260
+ # Initialize the API client
261
+ api_instance = Pdf4me::OptimizeApi.new
262
+
263
+ # prepare Request Hash
264
+ opts = {
265
+ req: Pdf4me::Optimize.new(
266
+ document: Pdf4me::Document.new(
267
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
268
+ ),
269
+ optimizeAction: Pdf4me::OptimizeAction.new(
270
+ profile: profile,
271
+ useProfile: true,
272
+ optimizeResources: true,
273
+ ditheringMode: dithering_mode
274
+ ),
275
+ notification: Pdf4me::Notification.new(
276
+ getNotification: true
277
+ )
278
+ )
279
+ }
280
+
281
+ # make request
282
+ response = api_instance.optimize(opts)
283
+ File.open(save_path, 'wb') do |f|
284
+ f.write(Base64.decode64(response.document.doc_data))
285
+ end
286
+
287
+ ```
288
+
289
+ ###optimize_by_profile
290
+ > Utility function, that optimizes the PDF based on Profile as mentioned above
291
+
292
+ ```ruby
293
+ api_instance = Pdf4me::OptimizeApi.new
294
+ file = File.open(file_path, 'rb')
295
+
296
+ response = api_instance.optimize_by_profile(
297
+ 'print',
298
+ file: file
299
+ )
300
+ file.close
301
+
302
+ # do something with response a tempfile
303
+ FileUtils.cp(response.path, '/new/file/path.pdf')
304
+ ```
305
+
306
+ ### pdf_a
307
+ > Creates PDF/A Documents. There are range of options that could be passed while creating the document. The options are
308
+ > - `compliance` _string_ - Anyone of the following values `unknown`, `pdf10`, `pdf11`, `pdf12`, `pdf13`, `pdf14`, `pdfA1b`, `pdfA1a`, `pdf15`, `pdf16`, `pdf17`, `pdfA2b`, `pdfA2u`, `pdfA2a`, `pdfA3b`, `pdfA3u`, `pdfA3a`
309
+ > - `downgrade` _boolean_ `true` or `false`
310
+ > - `upgrade` _boolean_ `true` or `false`
311
+ > - `linearize` _boolean_ `true` or `false`
312
+
313
+ ```ruby
314
+ api_instance = Pdf4me::PdfAApi.new
315
+
316
+ opts = {
317
+ req: Pdf4me::CreatePdfA.new(
318
+ document: Pdf4me::Document.new(
319
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
320
+ ),
321
+ pdfAAction: Pdf4me::PdfAAction.new(
322
+ compliance: 'pdfA1a',
323
+ allowDowngrade: true,
324
+ allowUpgrade: true,
325
+ outputIntentProfile: 'sRGBColorSpace',
326
+ linearize: true
327
+ ),
328
+ notification: Pdf4me::Notification.new(
329
+ getNotification: true
330
+ )
331
+ )
332
+ }
333
+
334
+ # make request
335
+ response = api_instance.pdf_a(opts)
336
+ File.open('/path/to/save.pdf', 'wb') do |f|
337
+ f.write(Base64.decode64(response.document.doc_data))
338
+ end
339
+ ```
340
+
341
+ ### create_pdf_a
342
+ > Utility function based on above function
343
+
344
+ ```ruby
345
+ api_instance = Pdf4me::PdfAApi.new
346
+ file = File.open(file_path, 'rb')
347
+
348
+ response = api_instance.create_pdf_a(
349
+ pdf_compliance: 'pdfA1a',
350
+ file: file
351
+ )
352
+
353
+ file.close
354
+
355
+ # do something with response a tempfile
356
+ FileUtils.cp(response.path, '/new/file/path.pdf')
357
+ ```
358
+
359
+ ### split
360
+ > Given a PDF, split the PDF into two parts
361
+
362
+ ```ruby
363
+ api_instance = Pdf4me::SplitApi.new
364
+
365
+ opts = {
366
+ req: Pdf4me::Split.new(
367
+ document: Pdf4me::Document.new(
368
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
369
+ ),
370
+ SplitAction: Pdf4me::SplitAction.new(
371
+ splitAfterPage: 3
372
+ ),
373
+ notificaiton: Pdf4me::Notification.new(
374
+ getNotification: true
375
+ )
376
+ )
377
+ }
378
+
379
+ response = api_instance.split(opts)
380
+
381
+ File.open(save_path, 'wb') do |f|
382
+ f.write(Base64.decode64(response.documents[0].doc_data))
383
+ end
384
+
385
+ File.open(save_path_2, 'wb') do |f|
386
+ f.write(Base64.decode64(response.documents[0].doc_data))
387
+ end
388
+ ```
389
+
390
+
391
+ ### split_by_page_nr
392
+ > Utility function to split the PDF by page number
393
+
394
+ ```ruby
395
+ api_instance = Pdf4me::SplitApi.new
396
+ file = File.open(file_path, 'rb')
397
+
398
+ response = api_instance.split_by_page_nr(
399
+ 2, # page_number
400
+ file: file
401
+ )
402
+
403
+ file.close
404
+
405
+ File.open(save_path, 'wb') do |f|
406
+ f.write(Base64.decode64(response.documents[0].doc_data))
407
+ end
408
+
409
+ File.open(save_path_2, 'wb') do |f|
410
+ f.write(Base64.decode64(response.documents[0].doc_data))
411
+ end
412
+ ```
413
+
414
+ # stamp
415
+ > Stamp a PDF, based on Stamp Action.
416
+ > You can stamp either a text or image to PDF, There are two separate methods defined to help you with stamping
417
+ > - Stamp PDF with image
418
+ > - Stamp PDF with Text
419
+ > Depending upon the type of stamp, position, size can be configured.
420
+
421
+ ```ruby
422
+ api_instance = Pdf4me::StampApi.new
423
+
424
+ opts = {
425
+ req: Pdf4me::Stamp.new(
426
+ document: Pdf4me::Document.new(
427
+ docData: Base64.encode64(File.open(file_path, 'rb', &:read)),
428
+ ),
429
+ stampAction: Pdf4me::StampAction.new(
430
+ image: Pdf4me::Image.new(
431
+ imageData: Base64.encode64(File.open(image, 'rb', &:read)),
432
+ ),
433
+ sizeX: stamp_width,
434
+ sizeY: stamp_length,
435
+ rotate: rotate,
436
+ alignX: align_x,
437
+ alignY: align_y,
438
+ scale: 'relToA4',
439
+ stampType: 'foreground',
440
+ alpha: opacity
441
+ ),
442
+ notification: Pdf4me::Notification.new(
443
+ getNotification: true
444
+ )
445
+ )
446
+ }
447
+
448
+ response = api_instance.stamp(opts)
449
+ File.open(save_path_2, 'wb') do |f|
450
+ f.write(Base64.decode64(response.document.doc_data))
451
+ end
452
+ ```
453
+
454
+ ### text_stamp
455
+ > Utility function over stamp, where you can stamp a document with text
456
+
457
+ ```ruby
458
+ api_instance = Pdf4me::StampApi.new
459
+ file = File.open(file_path, 'rb')
460
+
461
+ response = api_instance.text_stamp(
462
+ 'right', # alignment x axis
463
+ 'bottom', # alignment y axis,
464
+ text: 'Hello world, i am stamp',
465
+ pages: '1,4',
466
+ file: file
467
+ )
468
+ file.close
469
+
470
+ # do something with response a tempfile
471
+ FileUtils.cp(response.path, '/new/file/path.pdf')
472
+ ```