From 68519213226eb03e5b1e059b9fff8e822084e17d Mon Sep 17 00:00:00 2001 From: teamcrombie Date: Tue, 24 Sep 2024 09:41:09 -0300 Subject: [PATCH 1/3] Add pdfinfo and pdfform params --- src/ILovePDF/Core/RequestHelper.cs | 9 +++++++- src/ILovePDF/Model/Task/LovePdfTask.cs | 16 +++++++------- .../Model/TaskParams/BaseExtraUploadParams.cs | 22 +++++++++++++++++++ .../Model/TaskParams/SignExtraUploadParams.cs | 22 +++++++++++++++++++ 4 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 src/ILovePDF/Model/TaskParams/BaseExtraUploadParams.cs create mode 100644 src/ILovePDF/Model/TaskParams/SignExtraUploadParams.cs diff --git a/src/ILovePDF/Core/RequestHelper.cs b/src/ILovePDF/Core/RequestHelper.cs index 511b7b5..bfb147b 100644 --- a/src/ILovePDF/Core/RequestHelper.cs +++ b/src/ILovePDF/Core/RequestHelper.cs @@ -234,7 +234,7 @@ public UploadTaskResponse UploadFile(Uri serverUrl, Uri url, string taskId) } } - public UploadTaskResponse UploadFile(Uri serverUrl, FileInfo file, string taskId) + public UploadTaskResponse UploadFile(Uri serverUrl, FileInfo file, string taskId, BaseExtraUploadParams extraParams = null) { var link = GetUri($"{serverUrl}{Settings.V1}/upload"); @@ -244,6 +244,13 @@ public UploadTaskResponse UploadFile(Uri serverUrl, FileInfo file, string taskId var uploadRequest = new BaseTaskRequest(); uploadRequest.FormData.Add("file", new FileParameter(fs, file.Name)); uploadRequest.FormData.Add("task", taskId); + if (extraParams != null) + { + foreach (var param in extraParams.GetValues()) + { + uploadRequest.FormData.Add(param.Key, param.Value); + } + } SetMultiPartFormData(uploadRequest.FormData, multipartFormData); diff --git a/src/ILovePDF/Model/Task/LovePdfTask.cs b/src/ILovePDF/Model/Task/LovePdfTask.cs index b127ba7..0c4cf83 100644 --- a/src/ILovePDF/Model/Task/LovePdfTask.cs +++ b/src/ILovePDF/Model/Task/LovePdfTask.cs @@ -52,9 +52,9 @@ public void SetServerTaskId(Uri serverUrl, String taskId) /// /// Server file name [SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads")] - public UploadTaskResponse AddFile(String path) + public UploadTaskResponse AddFile(String path, BaseExtraUploadParams extraParams = null) { - return AddFile(path, TaskId); + return AddFile(path, TaskId, extraParams); } /// @@ -64,9 +64,9 @@ public UploadTaskResponse AddFile(String path) /// if no task provided will be used last one from create task method. /// Server file name [SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads")] - public UploadTaskResponse AddFile(String path, String taskId) + public UploadTaskResponse AddFile(String path, String taskId, BaseExtraUploadParams extraParams = null) { - return AddFile(path, taskId, String.Empty); + return AddFile(path, taskId, String.Empty, extraParams); } /// @@ -77,9 +77,9 @@ public UploadTaskResponse AddFile(String path, String taskId) /// /// Server file name [SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads")] - public UploadTaskResponse AddFile(String path, String taskId, String password) + public UploadTaskResponse AddFile(String path, String taskId, String password, BaseExtraUploadParams extraParams = null) { - return AddFile(path, taskId, password, Rotate.Degrees0); + return AddFile(path, taskId, password, Rotate.Degrees0, extraParams); } /// @@ -109,12 +109,12 @@ internal void AddFiles(Dictionary files) /// /// Server file name [SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads")] - public UploadTaskResponse AddFile(String path, String taskId, String password, Rotate rotate) + public UploadTaskResponse AddFile(String path, String taskId, String password, Rotate rotate, BaseExtraUploadParams extraParams = null) { var fileInfo = new FileInfo(path); if (!fileInfo.Exists) throw new FileNotFoundException("File not found", fileInfo.FullName); - var response = RequestHelper.Instance.UploadFile(ServerUrl, fileInfo, taskId); + var response = RequestHelper.Instance.UploadFile(ServerUrl, fileInfo, taskId, extraParams); Files.Add(new FileModel { diff --git a/src/ILovePDF/Model/TaskParams/BaseExtraUploadParams.cs b/src/ILovePDF/Model/TaskParams/BaseExtraUploadParams.cs new file mode 100644 index 0000000..799daaf --- /dev/null +++ b/src/ILovePDF/Model/TaskParams/BaseExtraUploadParams.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace iLovePdf.Model.TaskParams +{ + // This class is designed so that every programmer adapts it to the additional tools with specific needs and uses the SetValue method + public abstract class BaseExtraUploadParams + { + protected Dictionary extraParams = new Dictionary(); + + protected void SetValue(string key, string value) + { + extraParams[key] = value; + } + + public Dictionary GetValues() + { + return new Dictionary(extraParams); + } + } +} diff --git a/src/ILovePDF/Model/TaskParams/SignExtraUploadParams.cs b/src/ILovePDF/Model/TaskParams/SignExtraUploadParams.cs new file mode 100644 index 0000000..565e9dc --- /dev/null +++ b/src/ILovePDF/Model/TaskParams/SignExtraUploadParams.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace iLovePdf.Model.TaskParams +{ + public class SignExtraUploadParams : BaseExtraUploadParams + { + public SignExtraUploadParams SetPdfInfo(bool activate = true) + { + extraParams["pdfinfo"] = activate ? "1" : "0"; + return this; + } + + public SignExtraUploadParams SetPdfForms(bool activate = true) + { + SetPdfInfo(true); + extraParams["pdfforms"] = activate ? "1" : "0"; + return this; + } + } +} From cf1e0e516e543b94de8183a5b019b2727dd31920 Mon Sep 17 00:00:00 2001 From: teamcrombie Date: Thu, 26 Sep 2024 09:18:22 -0300 Subject: [PATCH 2/3] map pdf pages & pdfpagenumber properties --- src/ILovePDF/Core/UploadTaskResponse.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/ILovePDF/Core/UploadTaskResponse.cs b/src/ILovePDF/Core/UploadTaskResponse.cs index 8ad28ec..b0da728 100644 --- a/src/ILovePDF/Core/UploadTaskResponse.cs +++ b/src/ILovePDF/Core/UploadTaskResponse.cs @@ -13,5 +13,15 @@ public class UploadTaskResponse /// [JsonProperty("server_filename")] public String ServerFileName { get; set; } + /// + /// Server file name + /// + [JsonProperty("pdf_pages")] + public String[] PdfPages { get; set; } + /// + /// Server file name + /// + [JsonProperty("pdf_page_number")] + public String PdfPageNumber { get; set; } } } \ No newline at end of file From 618cec9ce0029c5d8742d31ead9916a12a37f392 Mon Sep 17 00:00:00 2001 From: teamcrombie Date: Wed, 2 Oct 2024 09:27:40 -0300 Subject: [PATCH 3/3] Map UploadTaskResponse --- src/ILovePDF/Core/UploadTaskResponse.cs | 70 ++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/src/ILovePDF/Core/UploadTaskResponse.cs b/src/ILovePDF/Core/UploadTaskResponse.cs index b0da728..5b7fa52 100644 --- a/src/ILovePDF/Core/UploadTaskResponse.cs +++ b/src/ILovePDF/Core/UploadTaskResponse.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Newtonsoft.Json; namespace iLovePdf.Core @@ -14,14 +15,79 @@ public class UploadTaskResponse [JsonProperty("server_filename")] public String ServerFileName { get; set; } /// - /// Server file name + /// pdf_pages /// [JsonProperty("pdf_pages")] public String[] PdfPages { get; set; } /// - /// Server file name + /// pdf_page_number /// [JsonProperty("pdf_page_number")] public String PdfPageNumber { get; set; } + /// + /// pdf_forms + /// + [JsonProperty("pdf_forms")] + public List> PdfForms { get; set; } + + + public void GetPdfFormElement() + { + + object x; + var pdfPageInfo = new Dictionary(); + + if (PdfForms == null || PdfForms.Count == 0) + { + return; + } + + foreach (var pdfFormElement in PdfForms) + { + pdfFormElement.TryGetValue("page", out x); + var pdfpageinfo = GetPdfPageInfo((int)x); + foreach (var page in pdfpageinfo) + { + pdfPageInfo.Add(page.Key, page.Value); + } + } + } + + public Dictionary GetPdfPageInfo(int pageNumber) + { + var pdfPages = GetSanitizedPdfPages(); + if (pdfPages == null) + { + return null; + } + + return pdfPages[pageNumber - 1]; + } + + public List> GetSanitizedPdfPages() + { + var result = new List>(); + + if (PdfPages == null) + { + return null; + } + + + foreach(var pdfPage in PdfPages) + { + var dimensions = pdfPage.Split('x'); + int width = int.Parse(dimensions[0]); + int height = int.Parse(dimensions[1]); + + result.Add(new Dictionary + { + { "width", width }, + { "height", height } + }); + } + + return result; + } } } \ No newline at end of file