diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 9b111f7ef..07ab8a87f 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -25,6 +25,9 @@ downloadPdf=Download PDF text=Text font=Font element-id=Element ID +group-id=Group ID +comma-separated-values=Element values (separated by commas) +element-value=Element value selectFillter=-- Select -- pageNum=Page Number sizes.small=Small @@ -521,8 +524,11 @@ add-elements.header=Add Elements add-elements.upload=Upload Image add-elements.draw=Draw Signature add-elements.text=Text Input -add-elements.textbox=Text Box add-elements.checkbox=Check Box +add-elements.dropdown=Dropdown +add-elements.optionList=Option List +add-elements.radioButton=Radio Button +add-elements.textbox=Text Box add-elements.clear=Clear add-elements.add=Add diff --git a/src/main/resources/static/js/draggable-utils.js b/src/main/resources/static/js/draggable-utils.js index 1be0224e7..288bdb2a6 100644 --- a/src/main/resources/static/js/draggable-utils.js +++ b/src/main/resources/static/js/draggable-utils.js @@ -184,7 +184,9 @@ const DraggableUtils = { parseTransform(element) { }, - async getOverlayedPdfDocument() { + async getOverlaidPdfDocument() { + var radioGroups = new Map(); + const pdfBytes = await this.pdfDoc.getData(); const pdfDocModified = await PDFLib.PDFDocument.load(pdfBytes, { ignoreEncryption: true }); this.storePageContents(); @@ -213,18 +215,46 @@ const DraggableUtils = { // draw the image page.drawImage(pdfImageObject, translatedPositions); - } else if (draggableElement.firstChild.nodeName == "INPUT" && draggableElement.firstChild.getAttribute("type") == "textarea") { - const translatedPositions = this.rescaleForPage(page, draggableData, offsetWidth, offsetHeight); - const fieldKey = draggableElement.firstChild.getAttribute("name"); - const form = pdfDocModified.getForm(); - const field = form.createTextField(fieldKey); - field.addToPage(page, translatedPositions); } else if (draggableElement.firstChild.nodeName == "INPUT" && draggableElement.firstChild.getAttribute("type") == "checkbox") { const translatedPositions = this.rescaleForPage(page, draggableData, offsetWidth, offsetHeight); const fieldKey = draggableElement.firstChild.getAttribute("name"); const form = pdfDocModified.getForm(); const field = form.createCheckBox(fieldKey); field.addToPage(page, translatedPositions); + } else if (draggableElement.firstChild.nodeName == "DIV" && draggableElement.firstChild.getAttribute("type") == "dropdown") { + const translatedPositions = this.rescaleForPage(page, draggableData, offsetWidth, offsetHeight); + const fieldKey = draggableElement.firstChild.getAttribute("name"); + const fieldValues = JSON.parse(draggableElement.firstChild.getAttribute("values")); + const form = pdfDocModified.getForm(); + const field = form.createDropdown(fieldKey); + field.addOptions(fieldValues) + field.addToPage(page, translatedPositions); + } else if (draggableElement.firstChild.nodeName == "DIV" && draggableElement.firstChild.getAttribute("type") == "optionList") { + const translatedPositions = this.rescaleForPage(page, draggableData, offsetWidth, offsetHeight); + const fieldKey = draggableElement.firstChild.getAttribute("name"); + const fieldValues = JSON.parse(draggableElement.firstChild.getAttribute("values")); + const form = pdfDocModified.getForm(); + const field = form.createOptionList(fieldKey); + field.addOptions(fieldValues) + field.addToPage(page, translatedPositions); + } else if (draggableElement.firstChild.nodeName == "INPUT" && draggableElement.firstChild.getAttribute("type") == "radio") { // + const translatedPositions = this.rescaleForPage(page, draggableData, offsetWidth, offsetHeight); + const fieldKey = draggableElement.firstChild.getAttribute("name"); + const buttonValue = draggableElement.firstChild.getAttribute("buttonValue"); + const form = pdfDocModified.getForm(); + var radioGroup = radioGroups.get(fieldKey); + if (!radioGroup) { + radioGroup = form.createRadioGroup(fieldKey); + radioGroups.set(fieldKey, radioGroup); + } + radioGroup.addOptionToPage(buttonValue, page, translatedPositions) + console.log("added radio") + } else if (draggableElement.firstChild.nodeName == "INPUT" && draggableElement.firstChild.getAttribute("type") == "textarea") { + const translatedPositions = this.rescaleForPage(page, draggableData, offsetWidth, offsetHeight); + const fieldKey = draggableElement.firstChild.getAttribute("name"); + const form = pdfDocModified.getForm(); + const field = form.createTextField(fieldKey); + field.addToPage(page, translatedPositions); } } } diff --git a/src/main/resources/templates/add-elements.html b/src/main/resources/templates/add-elements.html index 11de314b8..7d0d07885 100644 --- a/src/main/resources/templates/add-elements.html +++ b/src/main/resources/templates/add-elements.html @@ -64,16 +64,6 @@ -