diff --git a/DotNET/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.cs b/DotNET/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.cs new file mode 100644 index 0000000..b7b00ee --- /dev/null +++ b/DotNET/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.cs @@ -0,0 +1,29 @@ +using System.Text; + +using (var httpClient = new HttpClient { BaseAddress = new Uri("https://api.pdfrest.com") }) +{ + using (var request = new HttpRequestMessage(HttpMethod.Post, "pdf-with-added-attachment")) + { + request.Headers.TryAddWithoutValidation("Api-Key", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); + request.Headers.Accept.Add(new("application/json")); + var multipartContent = new MultipartFormDataContent(); + + var byteArray = File.ReadAllBytes("/path/to/file"); + var byteAryContent = new ByteArrayContent(byteArray); + multipartContent.Add(byteAryContent, "file", "file_name"); + byteAryContent.Headers.TryAddWithoutValidation("Content-Type", "application/pdf"); + + var byteArray2 = File.ReadAllBytes("/path/to/file"); + var byteAryContent2 = new ByteArrayContent(byteArray2); + multipartContent.Add(byteAryContent2, "file_to_attach", "file_name"); + byteAryContent2.Headers.TryAddWithoutValidation("Content-Type", "application/xml"); // Update content type + + request.Content = multipartContent; + var response = await httpClient.SendAsync(request); + + var apiResult = await response.Content.ReadAsStringAsync(); + + Console.WriteLine("API response received."); + Console.WriteLine(apiResult); + } +} diff --git a/Java/Endpoint Examples/Multipart Payload/PdfWithAddedAttachment.java b/Java/Endpoint Examples/Multipart Payload/PdfWithAddedAttachment.java new file mode 100644 index 0000000..73caf6a --- /dev/null +++ b/Java/Endpoint Examples/Multipart Payload/PdfWithAddedAttachment.java @@ -0,0 +1,69 @@ +import io.github.cdimascio.dotenv.Dotenv; +import java.io.File; +import java.io.IOException; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import org.json.JSONObject; + +public class PdfWithAddedAttachment { + + // Specify the path to your file here, or as the first argument when running the program. + private static final String DEFAULT_FILE_PATH = "/path/to/file.pdf"; + + // Specify the path to your file attachment here, or as the second argument when running the + // program. + private static final String DEFAULT_ATTACHMENT_PATH = "/path/to/file.xml"; + + // Specify your API key here, or in the environment variable PDFREST_API_KEY. + // You can also put the environment variable in a .env file. + private static final String DEFAULT_API_KEY = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; + + public static void main(String[] args) { + File inputFile, attachmentFile; + if (args.length > 1) { + inputFile = new File(args[0]); + attachmentFile = new File(args[1]); + } else { + inputFile = new File(DEFAULT_FILE_PATH); + attachmentFile = new File(DEFAULT_ATTACHMENT_PATH); + } + + final Dotenv dotenv = Dotenv.configure().ignoreIfMalformed().ignoreIfMissing().load(); + + final RequestBody inputFileRequestBody = + RequestBody.create(inputFile, MediaType.parse("application/pdf")); + final RequestBody attachmentFileRequestBody = + RequestBody.create(attachmentFile, MediaType.parse("application/xml")); + RequestBody requestBody = + new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("file", inputFile.getName(), inputFileRequestBody) + .addFormDataPart("file_to_attach", attachmentFile.getName(), attachmentFileRequestBody) + .build(); + Request request = + new Request.Builder() + .header("Api-Key", dotenv.get("PDFREST_API_KEY", DEFAULT_API_KEY)) + .url("https://api.pdfrest.com/pdf-with-added-attachment") + .post(requestBody) + .build(); + try { + OkHttpClient client = new OkHttpClient().newBuilder().build(); + Response response = client.newCall(request).execute(); + System.out.println("Result code " + response.code()); + if (response.body() != null) { + System.out.println(prettyJson(response.body().string())); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static String prettyJson(String json) { + // https://stackoverflow.com/a/9583835/11996393 + return new JSONObject(json).toString(4); + } +} diff --git a/JavaScript/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.js b/JavaScript/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.js new file mode 100644 index 0000000..438b8a3 --- /dev/null +++ b/JavaScript/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.js @@ -0,0 +1,36 @@ +/** + * This request demonstrates how to apply a file watermark to a PDF. This kind of watermark uses another PDF (using either watermark_file or watermark_file_id as a form-data parameter) and applies it as a watermark to the primary input document (file or id). + * Horizontal and vertical offsets of the watermark are measured in PDF units. (1 inch = 72 PDF units) + */ +var axios = require('axios'); +var FormData = require('form-data'); +var fs = require('fs'); + +// Create a new form data instance and append the PDF file and parameters to it +var data = new FormData(); +data.append('file', fs.createReadStream('/path/to/file')); +data.append('file_to_attach', fs.createReadStream('/path/to/file')); +data.append('output', 'pdfrest_pdf_with_added_attachment'); + +// define configuration options for axios request +var config = { + method: 'post', + maxBodyLength: Infinity, // set maximum length of the request body + url: 'https://api.pdfrest.com/pdf-with-added-attachment', + headers: { + 'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // Replace with your API key + ...data.getHeaders() // set headers for the request + }, + data : data // set the data to be sent with the request +}; + +// send request and handle response or error +axios(config) +.then(function (response) { + console.log(JSON.stringify(response.data)); +}) +.catch(function (error) { + console.log(error); +}); + +// If you would like to download the file instead of getting the JSON response, please see the 'get-resource-id-endpoint.js' sample. diff --git a/PHP/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.php b/PHP/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.php new file mode 100644 index 0000000..f1dad92 --- /dev/null +++ b/PHP/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.php @@ -0,0 +1,43 @@ + 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' // Set the API key in the headers for authentication. +]; + +$options = [ + 'multipart' => [ + [ + 'name' => 'file', // Specify the field name for the main PDF file. + 'contents' => Utils::tryFopen('/path/to/file', 'r'), // Open the main PDF file specified by the '/path/to/file' for reading. + 'filename' => '/path/to/file', // Set the filename for the main PDF file to be processed, in this case, '/path/to/file'. + 'headers' => [ + 'Content-Type' => '' // Set the Content-Type header for the main PDF file. + ] + ], + [ + 'name' => 'file_to_attach', // Specify the field name for the file attachment. + 'contents' => Utils::tryFopen('/path/to/file', 'r'), // Open the file attachment specified by the '/path/to/file' for reading. + 'filename' => '/path/to/file', // Set the filename for the file attachment to be added, in this case, '/path/to/file'. + 'headers' => [ + 'Content-Type' => '' // Set the Content-Type header for the file attachment. + ] + ], + [ + 'name' => 'output', // Specify the field name for the output option. + 'contents' => 'pdfrest_pdf_with_added_attachment' // Set the value for the output option (in this case, 'pdfrest_pdf_with_added_attachment'). + ] + ] +]; + +$request = new Request('POST', 'https://api.pdfrest.com/pdf-with-added-attachment', $headers); // Create a new HTTP POST request with the API endpoint and headers. + +$res = $client->sendAsync($request, $options)->wait(); // Send the asynchronous request and wait for the response. + +echo $res->getBody(); // Output the response body, which contains the processed PDF with the added attachment. diff --git a/Python/Endpoint Examples/JSON Payload/pdf-with-added-attachment.py b/Python/Endpoint Examples/JSON Payload/pdf-with-added-attachment.py new file mode 100644 index 0000000..3760cf2 --- /dev/null +++ b/Python/Endpoint Examples/JSON Payload/pdf-with-added-attachment.py @@ -0,0 +1,55 @@ +import requests +import json + +with open('/path/to/pdf_file', 'rb') as f: + upload_pdf_data = f.read() + +print("Uploading PDF file...") +upload_pdf_response = requests.post(url='https://api.pdfrest.com/upload', + data=upload_pdf_data, + headers={'Content-Type': 'application/octet-stream', 'content-filename': 'pdf_file.pdf', "API-Key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}) + +print("Upload PDF response status code: " + str(upload_pdf_response.status_code)) + + +with open('/path/to/file_attachment', 'rb') as f: + upload_attachment_data = f.read() + +print("Uploading file attachment...") +upload_attachment_response = requests.post(url='https://api.pdfrest.com/upload', + data=upload_attachment_data, + headers={'Content-Type': 'application/octet-stream', 'Content-Filename': 'data_file.xml', "API-Key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}) + +print("Upload data file response status code: " + str(upload_attachment_response.status_code)) + +if upload_pdf_response.ok and upload_attachment_response.ok: + upload_pdf_response_json = upload_pdf_response.json() + print(json.dumps(upload_pdf_response_json, indent = 2)) + + upload_attachment_response_json = upload_attachment_response.json() + print(json.dumps(upload_attachment_response_json, indent = 2)) + + + uploaded_pdf_id = upload_pdf_response_json['files'][0]['id'] + uploaded_attachment_id = upload_attachment_response_json['files'][0]['id'] + added_attachment_data = { "id" : uploaded_pdf_id, "id_to_attach": uploaded_attachment_id } + print(json.dumps(added_attachment_data, indent = 2)) + + + print("Processing file...") + added_attachment_response = requests.post(url='https://api.pdfrest.com/pdf-with-added-attachment', + data=json.dumps(added_attachment_data), + headers={'Content-Type': 'application/json', "API-Key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}) + + + + print("Processing response status code: " + str(added_attachment_response.status_code)) + if added_attachment_response.ok: + added_attachment_response_json = added_attachment_response.json() + print(json.dumps(added_attachment_response_json, indent = 2)) + + else: + print(added_attachment_response.text) +else: + print(upload_pdf_response.text) + print(upload_attachment_response.text) diff --git a/Python/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.py b/Python/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.py new file mode 100644 index 0000000..f760ad4 --- /dev/null +++ b/Python/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.py @@ -0,0 +1,30 @@ +from requests_toolbelt import MultipartEncoder +import requests +import json + +pdf_with_added_attachment_endpoint_url = 'https://api.pdfrest.com/pdf-with-added-attachment' + +mp_encoder_pdfWithAddedAttachment = MultipartEncoder( + fields={ + 'file': ('file_name', open('/path/to/file', 'rb'), 'application/pdf'), + 'file_to_attach': ('file_name', open('/path/to/file', 'rb'), 'application/xml'), # Update content type + 'output' : 'example_out', + } +) + +headers = { + 'Accept': 'application/json', + 'Content-Type': mp_encoder_pdfWithAddedAttachment.content_type, + 'Api-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # place your api key here +} + +print("Sending POST request to pdf-with-added-attachment endpoint...") +response = requests.post(pdf_with_added_attachment_endpoint_url, data=mp_encoder_pdfWithAddedAttachment, headers=headers) + +print("Response status code: " + str(response.status_code)) + +if response.ok: + response_json = response.json() + print(json.dumps(response_json, indent = 2)) +else: + print(response.text) diff --git a/cURL/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.sh b/cURL/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.sh new file mode 100644 index 0000000..b725b93 --- /dev/null +++ b/cURL/Endpoint Examples/Multipart Payload/pdf-with-added-attachment.sh @@ -0,0 +1,7 @@ +curl -X POST "https://api.pdfrest.com/pdf-with-added-attachment" \ + -H "Accept: application/json" \ + -H "Content-Type: multipart/form-data" \ + -H "Api-Key: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \ + -F "file=@/path/to/file" \ + -F "file_to_attach=@/path/to/file" \ + -F "output=example_out"