Skip to content

Commit fba4a59

Browse files
committed
834148 Added Sample and README.md file for Form Field
1 parent 74d1d30 commit fba4a59

File tree

6 files changed

+251
-2
lines changed

6 files changed

+251
-2
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.6.33417.168
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormFieldSample", "FormFieldSample\FormFieldSample.csproj", "{3E766E28-20B2-46B2-B843-B1422A5D0466}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{3E766E28-20B2-46B2-B843-B1422A5D0466}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{3E766E28-20B2-46B2-B843-B1422A5D0466}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{3E766E28-20B2-46B2-B843-B1422A5D0466}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{3E766E28-20B2-46B2-B843-B1422A5D0466}.Release|Any CPU.Build.0 = Release|Any CPU
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
GlobalSection(ExtensibilityGlobals) = postSolution
23+
SolutionGuid = {13028B57-84D9-4AD1-8DC7-AF875EC170E3}
24+
EndGlobalSection
25+
EndGlobal
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net6.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="Syncfusion.Pdf.Net.Core" Version="21.2.4" />
12+
</ItemGroup>
13+
14+
</Project>
73.5 KB
Loading
77.3 KB
Loading
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using Syncfusion.Pdf;
2+
using Syncfusion.Pdf.Interactive;
3+
using Syncfusion.Pdf.Graphics;
4+
using Syncfusion.Drawing;
5+
using Syncfusion.Pdf.Parsing;
6+
7+
namespace FormFieldSample {
8+
internal class Program {
9+
static void Main(string[] args) {
10+
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("Mgo+DSMBMAY9C3t2VFhhQlVEfV5AQmBIYVp/TGpJfl96cVxMZVVBJAtUQF1hSn5Qd0FjUH5fdX1RR2ZZ ");
11+
12+
CreateForm();
13+
FillForm();
14+
}
15+
static void CreateForm() {
16+
PdfDocument document = new PdfDocument();
17+
PdfPage page = document.Pages.Add();
18+
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 16);
19+
page.Graphics.DrawString("Job Application", font,PdfBrushes.Black, new PointF(250,0));
20+
21+
font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);
22+
page.Graphics.DrawString("Name", font, PdfBrushes.Black, new PointF(10, 20));
23+
PdfTextBoxField textBoxField1 = new PdfTextBoxField(page, "Name");
24+
textBoxField1.Bounds = new RectangleF(10, 40, 200, 20);
25+
textBoxField1.ToolTip = "Name";
26+
document.Form.Fields.Add(textBoxField1);
27+
28+
page.Graphics.DrawString("Email address", font, PdfBrushes.Black, new PointF(10, 80));
29+
PdfTextBoxField textBoxField2 = new PdfTextBoxField(page, "Email address");
30+
textBoxField2.Bounds = new RectangleF(10, 100, 200, 20);
31+
textBoxField2.ToolTip = "Email address";
32+
document.Form.Fields.Add(textBoxField2);
33+
34+
page.Graphics.DrawString("Phone", font, PdfBrushes.Black, new PointF(10, 140));
35+
PdfTextBoxField textBoxField3 = new PdfTextBoxField(page, "Phone");
36+
textBoxField3.Bounds = new RectangleF(10, 160, 200, 20);
37+
textBoxField3.ToolTip = "Phone";
38+
document.Form.Fields.Add(textBoxField3);
39+
40+
page.Graphics.DrawString("Gender", font, PdfBrushes.Black, new PointF(10, 200));
41+
PdfRadioButtonListField employeesRadioList = new PdfRadioButtonListField(page, "Gender");
42+
document.Form.Fields.Add(employeesRadioList);
43+
page.Graphics.DrawString("Male", font, PdfBrushes.Black, new PointF(40, 220));
44+
PdfRadioButtonListItem radioButtonItem1 = new PdfRadioButtonListItem("Male");
45+
radioButtonItem1.Bounds = new RectangleF(10, 220, 20, 20);
46+
page.Graphics.DrawString("Female", font, PdfBrushes.Black, new PointF(140, 220));
47+
PdfRadioButtonListItem radioButtonItem2 = new PdfRadioButtonListItem("Female");
48+
radioButtonItem2.Bounds = new RectangleF(110, 220, 20, 20);
49+
employeesRadioList.Items.Add(radioButtonItem1);
50+
employeesRadioList.Items.Add(radioButtonItem2);
51+
52+
using (FileStream outputFileStream= new FileStream("Output.pdf", FileMode.Create, FileAccess.ReadWrite)) {
53+
document.Save(outputFileStream);
54+
}
55+
document.Close(true);
56+
}
57+
static void FillForm() {
58+
FileStream docStream = new FileStream("Output.pdf", FileMode.Open, FileAccess.Read);
59+
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream);
60+
PdfLoadedForm form = loadedDocument.Form;
61+
PdfLoadedFormFieldCollection fieldCollection = form.Fields as PdfLoadedFormFieldCollection;
62+
PdfLoadedField loadedField = null;
63+
64+
if(fieldCollection.TryGetField("Name", out loadedField)) {
65+
(loadedField as PdfLoadedTextBoxField).Text = "Simons";
66+
}
67+
if (fieldCollection.TryGetField("Email address", out loadedField)) {
68+
(loadedField as PdfLoadedTextBoxField).Text = "simonsbistro@outlook.com";
69+
}
70+
71+
if (fieldCollection.TryGetField("Phone", out loadedField)) {
72+
(loadedField as PdfLoadedTextBoxField).Text = "31 12 34 56";
73+
}
74+
75+
if (fieldCollection.TryGetField("Gender", out loadedField)) {
76+
(loadedField as PdfLoadedRadioButtonListField).SelectedIndex = 0;
77+
}
78+
form.Flatten=true;
79+
80+
using (FileStream outputFileStream = new FileStream("FilledPDF.pdf", FileMode.Create, FileAccess.ReadWrite)) {
81+
loadedDocument.Save(outputFileStream);
82+
}
83+
loadedDocument.Close(true);
84+
}
85+
}
86+
}

README.md

Lines changed: 126 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,126 @@
1-
# how-to-create-fill-and-flatten-PDF-form-fields-in-net
2-
How to Create, Fill, and Flatten PDF Form Fields in .NET using the PDF Library
1+
# How to Create, Fill, and Flatten PDF Form Fields in .NET using the Syncfusion PDF Library
2+
3+
## Introduction
4+
A quick start .NET console project that shows how to create, fill, and flatten PDF form fields using the Syncfusion PDF Library.
5+
6+
## System requirement
7+
**Framework and SDKs**
8+
* .NET SDK (version 5.0 or later)
9+
10+
**IDEs**
11+
* Visual Studio 2019/ Visual Studio 2022
12+
13+
## Code snippet for Create, Fill, and Flatten PDF Form Fields
14+
We will create a new .NET console application, add the Syncfusion PDF library package, and write the code
15+
16+
```csharp
17+
static void CreateForm()
18+
{
19+
PdfDocument document = new PdfDocument();
20+
PdfPage page = document.Pages.Add();
21+
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 16);
22+
page.Graphics.DrawString("Job Application", font, PdfBrushes.Black, new PointF(250, 0));
23+
24+
font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);
25+
page.Graphics.DrawString("Name", font, PdfBrushes.Black, new PointF(10, 20));
26+
PdfTextBoxField textBoxField1 = new PdfTextBoxField(page, "Name");
27+
textBoxField1.Bounds = new RectangleF(10, 40, 200, 20);
28+
textBoxField1.ToolTip = "Name";
29+
document.Form.Fields.Add(textBoxField1);
30+
31+
page.Graphics.DrawString("Email address", font, PdfBrushes.Black, new PointF(10, 80));
32+
PdfTextBoxField textBoxField2 = new PdfTextBoxField(page, "Email address");
33+
textBoxField2.Bounds = new RectangleF(10, 100, 200, 20);
34+
textBoxField2.ToolTip = "Email address";
35+
document.Form.Fields.Add(textBoxField2);
36+
37+
page.Graphics.DrawString("Phone", font, PdfBrushes.Black, new PointF(10, 140));
38+
PdfTextBoxField textBoxField3 = new PdfTextBoxField(page, "Phone");
39+
textBoxField3.Bounds = new RectangleF(10, 160, 200, 20);
40+
textBoxField3.ToolTip = "Phone";
41+
document.Form.Fields.Add(textBoxField3);
42+
43+
page.Graphics.DrawString("Gender", font, PdfBrushes.Black, new PointF(10, 200));
44+
PdfRadioButtonListField employeesRadioList = new PdfRadioButtonListField(page, "Gender");
45+
document.Form.Fields.Add(employeesRadioList);
46+
page.Graphics.DrawString("Male", font, PdfBrushes.Black, new PointF(40, 220));
47+
PdfRadioButtonListItem radioButtonItem1 = new PdfRadioButtonListItem("Male");
48+
radioButtonItem1.Bounds = new RectangleF(10, 220, 20, 20);
49+
page.Graphics.DrawString("Female", font, PdfBrushes.Black, new PointF(140, 220));
50+
PdfRadioButtonListItem radioButtonItem2 = new PdfRadioButtonListItem("Female");
51+
radioButtonItem2.Bounds = new RectangleF(110, 220, 20, 20);
52+
employeesRadioList.Items.Add(radioButtonItem1);
53+
employeesRadioList.Items.Add(radioButtonItem2);
54+
55+
56+
using (FileStream outputFileStream = new FileStream("Output.pdf", FileMode.Create, FileAccess.ReadWrite))
57+
{
58+
document.Save(outputFileStream);
59+
}
60+
document.Close(true);
61+
}
62+
63+
static void FillForm()
64+
{
65+
FileStream docStream = new FileStream("Output.pdf", FileMode.Open, FileAccess.Read);
66+
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream);
67+
PdfLoadedForm form = loadedDocument.Form;
68+
PdfLoadedFormFieldCollection fieldCollection = form.Fields as PdfLoadedFormFieldCollection;
69+
PdfLoadedField loadedField = null;
70+
71+
if (fieldCollection.TryGetField("Name", out loadedField)) {
72+
(loadedField as PdfLoadedTextBoxField).Text = "Simons";
73+
}
74+
if (fieldCollection.TryGetField("Email address", out loadedField)) {
75+
(loadedField as PdfLoadedTextBoxField).Text = "simonsbistro@outlook.com";
76+
}
77+
78+
if (fieldCollection.TryGetField("Phone", out loadedField)) {
79+
(loadedField as PdfLoadedTextBoxField).Text = "31 12 34 56";
80+
}
81+
82+
if (fieldCollection.TryGetField("Gender", out loadedField)) {
83+
(loadedField as PdfLoadedRadioButtonListField).SelectedIndex = 0;
84+
}
85+
form.Flatten = true;
86+
87+
using (FileStream outputFileStream = new FileStream("FilledPDF.pdf", FileMode.Create, FileAccess.ReadWrite)) {
88+
loadedDocument.Save(outputFileStream);
89+
}
90+
loadedDocument.Close(true);
91+
}
92+
```
93+
94+
**Output Image**
95+
**CreateFormPDF**
96+
<img src="FormFieldSample/FormFieldSample/Output_images/CreateFormPDF.png" alt="Output_Image" width="100%" Height="Auto"/>
97+
98+
**FilledPDF**
99+
<img src="FormFieldSample/FormFieldSample/Output_images/FilledPDF.png" alt="output_image" width="100%" Height="Auto"/>
100+
101+
## How to run the examples
102+
* Download this project to a location in your disk.
103+
* Open the solution file using Visual Studio.
104+
* Rebuild the solution to install the required NuGet package.
105+
* Run the application.
106+
107+
## Resources
108+
* **Product page:** [Syncfusion PDF Framework](https://www.syncfusion.com/document-processing/pdf-framework/net)
109+
* **Documentation page:** [Syncfusion .NET PDF library](https://help.syncfusion.com/file-formats/pdf/overview)
110+
* **Online demo:** [Syncfusion .NET PDF library - Online demos](https://ej2.syncfusion.com/aspnetcore/PDF/CompressExistingPDF#/bootstrap5)
111+
* **Blog:** [Syncfusion .NET PDF library - Blog](https://www.syncfusion.com/blogs/category/pdf)
112+
* **Knowledge Base:** [Syncfusion .NET PDF library - Knowledge Base](https://www.syncfusion.com/kb/windowsforms/pdf)
113+
* **EBooks:** [Syncfusion .NET PDF library - EBooks](https://www.syncfusion.com/succinctly-free-ebooks)
114+
* **FAQ:** [Syncfusion .NET PDF library - FAQ](https://www.syncfusion.com/faq/)
115+
116+
## Support and feedback
117+
* For any other queries, reach our [Syncfusion support team](https://www.syncfusion.com/support/directtrac/incidents/newincident?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples) or post the queries through the [community forums](https://www.syncfusion.com/forums?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples).
118+
* Request new feature through [Syncfusion feedback portal](https://www.syncfusion.com/feedback?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples).
119+
120+
## License
121+
This is a commercial product and requires a paid license for possession or use. Syncfusion’s licensed software, including this component, is subject to the terms and conditions of [Syncfusion's EULA](https://www.syncfusion.com/eula/es/?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples). You can purchase a licnense [here](https://www.syncfusion.com/sales/products?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples) or start a free 30-day trial [here](https://www.syncfusion.com/account/manage-trials/start-trials?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples).
122+
123+
## About Syncfusion
124+
Founded in 2001 and headquartered in Research Triangle Park, N.C., Syncfusion has more than 26,000+ customers and more than 1 million users, including large financial institutions, Fortune 500 companies, and global IT consultancies.
125+
126+
Today, we provide 1600+ components and frameworks for web ([Blazor](https://www.syncfusion.com/blazor-components?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [ASP.NET Core](https://www.syncfusion.com/aspnet-core-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [ASP.NET MVC](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [ASP.NET WebForms](https://www.syncfusion.com/jquery/aspnet-webforms-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [JavaScript](https://www.syncfusion.com/javascript-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [Angular](https://www.syncfusion.com/angular-ui-components?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [React](https://www.syncfusion.com/react-ui-components?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [Vue](https://www.syncfusion.com/vue-ui-components?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), and [Flutter](https://www.syncfusion.com/flutter-widgets?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples)), mobile ([Xamarin](https://www.syncfusion.com/xamarin-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [Flutter](https://www.syncfusion.com/flutter-widgets?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [UWP](https://www.syncfusion.com/uwp-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), and [JavaScript](https://www.syncfusion.com/javascript-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples)), and desktop development ([WinForms](https://www.syncfusion.com/winforms-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [WPF](https://www.syncfusion.com/wpf-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [WinUI(Preview)](https://www.syncfusion.com/winui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples), [Flutter](https://www.syncfusion.com/flutter-widgets?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples) and [UWP](https://www.syncfusion.com/uwp-ui-controls?utm_source=github&utm_medium=listing&utm_campaign=github-docio-examples)). We provide ready-to-deploy enterprise software for dashboards, reports, data integration, and big data processing. Many customers have saved millions in licensing fees by deploying our software.

0 commit comments

Comments
 (0)