From 9cb20a8891057fb1c7f11ffba57fc63eedddd9fd Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Fri, 8 Aug 2025 12:05:57 +0530 Subject: [PATCH 1/2] 968996: Added filled form fields from HTML to PDF. --- ...form-fields-from-HTML-to-PDF-Converter.sln | 25 ++++ .../Data/Input.html | 62 ++++++++++ .../Data/PDF.pfx | Bin 0 -> 2327 bytes .../Data/signature.png | Bin 0 -> 14041 bytes ...m-fields-from-HTML-to-PDF-Converter.csproj | 16 +++ .../Output/gitkeep.txt | 0 .../Program.cs | 112 ++++++++++++++++++ 7 files changed, 215 insertions(+) create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter.sln create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/PDF.pfx create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/signature.png create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Fillable-form-fields-from-HTML-to-PDF-Converter.csproj create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Output/gitkeep.txt create mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Program.cs diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter.sln b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter.sln new file mode 100644 index 00000000..740f8b7e --- /dev/null +++ b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36221.1 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fillable-form-fields-from-HTML-to-PDF-Converter", "Fillable-form-fields-from-HTML-to-PDF-Converter\Fillable-form-fields-from-HTML-to-PDF-Converter.csproj", "{70A501A7-093A-4E77-AE84-1EDFE2A5243F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {70A501A7-093A-4E77-AE84-1EDFE2A5243F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70A501A7-093A-4E77-AE84-1EDFE2A5243F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70A501A7-093A-4E77-AE84-1EDFE2A5243F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70A501A7-093A-4E77-AE84-1EDFE2A5243F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FC5888A1-82B1-4C5C-AA60-36BBCD924490} + EndGlobalSection +EndGlobal diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html new file mode 100644 index 00000000..a0626e34 --- /dev/null +++ b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html @@ -0,0 +1,62 @@ + + + + + + + +
+

Welcome, {{name}}

+

Date: {{date}}

+

Signature: {{signature}}

+

Thank you for using our service.

+
+ + \ No newline at end of file diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/PDF.pfx b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/PDF.pfx new file mode 100644 index 0000000000000000000000000000000000000000..b50733edb8613de23c62eadd35771e601b59a9b0 GIT binary patch literal 2327 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 + + + Exe + net8.0 + Fillable_form_fields_from_HTML_to_PDF_Converter + enable + enable + + + + + + + + diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Output/gitkeep.txt b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Output/gitkeep.txt new file mode 100644 index 00000000..e69de29b diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Program.cs b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Program.cs new file mode 100644 index 00000000..94805675 --- /dev/null +++ b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Program.cs @@ -0,0 +1,112 @@ +using Syncfusion.HtmlConverter; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; +using Syncfusion.Pdf.Security; + +class Program +{ + static void Main(string[] args) + { + // Initialize HTML to PDF converter and load HTML + HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(); + string htmlFilePath = Path.GetFullPath(@"Data/Input.html"); + PdfDocument document = htmlConverter.Convert(htmlFilePath); + + // Save the PDF to a memory stream + using (MemoryStream memoryStream = new MemoryStream()) + { + document.Save(memoryStream); + document.Close(true); + + // Load back the PDF for further processing + memoryStream.Position = 0; + PdfLoadedDocument loadedDocument = new PdfLoadedDocument(memoryStream); + + // This will collect (pageIndex, word) for each form field + List<(int pageIdx, TextWord word)> fieldData = new List<(int pageIdx, TextWord word)>(); + + // Pass 1: Locate each placeholder and add a redaction on its bound + for (int i = 0; i < loadedDocument.Pages.Count; i++) + { + PdfLoadedPage page = loadedDocument.Pages[i] as PdfLoadedPage; + page.ExtractText(out TextLineCollection lines); + if (lines == null) continue; + foreach (TextLine line in lines.TextLine) + { + foreach (TextWord word in line.WordCollection) + { + if (word == null) continue; + if (word.Text == "{{name}}" || + word.Text == "{{date}}" || + word.Text == "{{signature}}") + { + page.AddRedaction(new PdfRedaction(word.Bounds)); + fieldData.Add((i, word)); + } + } + } + } + loadedDocument.Redact(); + + // Pass 2: Add form fields exactly over the bounds + foreach (var (pageIdx, word) in fieldData) + { + PdfPageBase page = loadedDocument.Pages[pageIdx]; + + if (word.Text == "{{name}}") + { + PdfTextBoxField textBox = new PdfTextBoxField(page, "FirstName") + { + Bounds = word.Bounds, + ToolTip = "First Name", + Text = "John" + }; + loadedDocument.Form.Fields.Add(textBox); + } + else if (word.Text == "{{date}}") + { + PdfTextBoxField dateField = new PdfTextBoxField(page, "DateField") + { + Bounds = word.Bounds + }; + dateField.Actions.KeyPressed = new PdfJavaScriptAction("AFDate_KeystrokeEx(\"m/d/yy\")"); + dateField.Actions.Format = new PdfJavaScriptAction("AFDate_FormatEx(\"m/d/yy\")"); + loadedDocument.Form.Fields.Add(dateField); + } + else if (word.Text == "{{signature}}") + { + PdfSignatureField sigField = new PdfSignatureField(page, "SignatureField") + { + Bounds = word.Bounds, + Signature = new PdfSignature() + }; + // Optionally draw a signature image in the field area + FileStream imageStream = new FileStream(Path.GetFullPath("Data/signature.png"), FileMode.Open, FileAccess.Read); + PdfBitmap image = new PdfBitmap(imageStream); + (page as PdfLoadedPage).Graphics.DrawImage(image, word.Bounds); + imageStream.Dispose(); + + // Optional: add digital certificate + using (FileStream certStream = new FileStream(Path.GetFullPath(@"Data/PDF.pfx"), FileMode.Open, FileAccess.Read)) + { + sigField.Signature.Certificate = new PdfCertificate(certStream, "syncfusion"); + sigField.Signature.Reason = "I am author of this document"; + } + loadedDocument.Form.Fields.Add(sigField); + } + } + //Create file stream. + using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) + { + //Save the PDF document to file stream. + loadedDocument.Save(outputFileStream); + } + + //Close the document. + loadedDocument.Close(true); + } + } +} \ No newline at end of file From 0520b731a630a6a76ca5ff02e7dea295a4643153 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Tue, 28 Oct 2025 18:39:20 +0530 Subject: [PATCH 2/2] 968996: Added proper code sample. --- .../Data/Input.html | 101 +++++------- .../Data/PDF.pfx | Bin 2327 -> 0 bytes .../Data/signature.png | Bin 14041 -> 0 bytes .../Program.cs | 154 ++++++------------ 4 files changed, 98 insertions(+), 157 deletions(-) delete mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/PDF.pfx delete mode 100644 HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/signature.png diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html index a0626e34..92491ba4 100644 --- a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html +++ b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/Input.html @@ -1,62 +1,51 @@ - + - - + Fillable PDF Form + -
-

Welcome, {{name}}

-

Date: {{date}}

-

Signature: {{signature}}

-

Thank you for using our service.

-
+
+

Job Application Form

+
+ + + + + + + + + + + +
+
\ No newline at end of file diff --git a/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/PDF.pfx b/HTML to PDF/Blink/Fillable-form-fields-from-HTML-to-PDF-Converter/.NET/Fillable-form-fields-from-HTML-to-PDF-Converter/Data/PDF.pfx deleted file mode 100644 index b50733edb8613de23c62eadd35771e601b59a9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2327 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 fieldData = new List<(int pageIdx, TextWord word)>(); - - // Pass 1: Locate each placeholder and add a redaction on its bound - for (int i = 0; i < loadedDocument.Pages.Count; i++) - { - PdfLoadedPage page = loadedDocument.Pages[i] as PdfLoadedPage; - page.ExtractText(out TextLineCollection lines); - if (lines == null) continue; - foreach (TextLine line in lines.TextLine) - { - foreach (TextWord word in line.WordCollection) - { - if (word == null) continue; - if (word.Text == "{{name}}" || - word.Text == "{{date}}" || - word.Text == "{{signature}}") - { - page.AddRedaction(new PdfRedaction(word.Bounds)); - fieldData.Add((i, word)); - } - } - } - } - loadedDocument.Redact(); - - // Pass 2: Add form fields exactly over the bounds - foreach (var (pageIdx, word) in fieldData) - { - PdfPageBase page = loadedDocument.Pages[pageIdx]; - - if (word.Text == "{{name}}") - { - PdfTextBoxField textBox = new PdfTextBoxField(page, "FirstName") - { - Bounds = word.Bounds, - ToolTip = "First Name", - Text = "John" - }; - loadedDocument.Form.Fields.Add(textBox); - } - else if (word.Text == "{{date}}") - { - PdfTextBoxField dateField = new PdfTextBoxField(page, "DateField") - { - Bounds = word.Bounds - }; - dateField.Actions.KeyPressed = new PdfJavaScriptAction("AFDate_KeystrokeEx(\"m/d/yy\")"); - dateField.Actions.Format = new PdfJavaScriptAction("AFDate_FormatEx(\"m/d/yy\")"); - loadedDocument.Form.Fields.Add(dateField); - } - else if (word.Text == "{{signature}}") - { - PdfSignatureField sigField = new PdfSignatureField(page, "SignatureField") - { - Bounds = word.Bounds, - Signature = new PdfSignature() - }; - // Optionally draw a signature image in the field area - FileStream imageStream = new FileStream(Path.GetFullPath("Data/signature.png"), FileMode.Open, FileAccess.Read); - PdfBitmap image = new PdfBitmap(imageStream); - (page as PdfLoadedPage).Graphics.DrawImage(image, word.Bounds); - imageStream.Dispose(); - - // Optional: add digital certificate - using (FileStream certStream = new FileStream(Path.GetFullPath(@"Data/PDF.pfx"), FileMode.Open, FileAccess.Read)) - { - sigField.Signature.Certificate = new PdfCertificate(certStream, "syncfusion"); - sigField.Signature.Reason = "I am author of this document"; - } - loadedDocument.Form.Fields.Add(sigField); - } - } - //Create file stream. - using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) + nameField.Text = "XYZ"; + } + // Fill the "email" field + if (form.Fields["email"] is PdfLoadedTextBoxField emailField) + { + emailField.Text = "xyz@example.com"; + } + // Select "Male" in the "gender" dropdown + if (form.Fields["gender"] is PdfLoadedComboBoxField genderField) + { + genderField.SelectedValue = "Male"; + } + // Fill the "signature" field + if (form.Fields["signature"] is PdfLoadedTextBoxField signatureTextBox) + { + // Get the original field's position and page + RectangleF bounds = signatureTextBox.Bounds; + PdfPageBase page = signatureTextBox.Page; + // Remove the original textbox field + form.Fields.Remove(signatureTextBox); + // Create a new signature field at the same location + PdfSignatureField signatureField = new PdfSignatureField(page, "ClientSignature") { - //Save the PDF document to file stream. - loadedDocument.Save(outputFileStream); - } - - //Close the document. - loadedDocument.Close(true); + Bounds = bounds + }; + // Add the new signature field to the form + form.Fields.Add(signatureField); } + // Save the PDF document + loadedDocument.Save(Path.GetFullPath(@"Output/Output2.pdf")); } } \ No newline at end of file