This tutorial shows how to serialize a PDF Form and fill form fields with JSON and XML files in a C# .NET Console application using the LEADTOOLS SDK.
| Overview | |
|---|---|
| Summary | This tutorial covers how to serialize PDF forms in a C# .NET Console application. |
| Completion Time | 20 minutes |
| Visual Studio Project | Download tutorial project (1 KB) |
| Platform | C# .NET Console Application |
| IDE | Visual Studio 2022 |
| Runtime Target | .NET 6 or Higher |
| Development License | Download LEADTOOLS |
| Try it in another language |
|
Get familiar with the basic steps of creating a project by reviewing the Add References and Set a License tutorial, before working on the Serialize a PDF Form - .NET tutorial.
Start with a copy of the project created in the Add References and Set a License tutorial. If the project is not available, follow the steps in that tutorial to create it.
The references needed depend upon the purpose of the project. References can be added via NuGet packages.
This tutorial requires the following NuGet packages:
Leadtools.PdfNewtonsoft.JSONFor a complete list of which files are required for your application, refer to Files to be Included With Your Application.
The License unlocks the features needed for the project. It must be set before any toolkit function is called. For details, including tutorials for different platforms, refer to Setting a Runtime License.
There are two types of runtime licenses:
With the project created, the references added, and the license set, coding can begin.
In the Solution Explorer, open Program.cs. Add the following statements to the using block at the top of Program.cs.
using Leadtools;using Leadtools.Pdf;using Newtonsoft.Json;using System.Runtime.Serialization;using System.Xml;
Add four new methods to the Program class named SerializeToJson(string inputPdf, string jsonFile), FillFromJson(string inputPdf, string jsonFile), SerializeToXml(string inputPdf, string xmlFile), and FillFromXml(string inputPdf, string xmlFile). Call these new methods inside the Main() method, as shown below.
Also, add three string values to the Main() method, var inputPdf = @"C:\LEADTOOLS23\Resources\Images\InteractiveForm.pdf", var jsonFile = "formfields.json", and var xmlFile = "formfields.xml".
static void Main(string[] args){InitLEAD();// Set the input pdf filevar inputPdf = @"C:\LEADTOOLS23\Resources\Images\InteractiveForm.pdf";var jsonFile = "formfields.json";var xmlFile = "formfields.xml";SerializeToJson(inputPdf, jsonFile);FillFromJson(inputPdf, jsonFile);SerializeToXml(inputPdf, xmlFile);FillFromXml(inputPdf, xmlFile);}
Add the code below to the SerializeToJson(string inputPdf, string jsonFile) method to write serialized fields to a JSON file.
static void SerializeToJson(string inputPdf, string jsonFile){// Create a variable to hold the parsed field datavar formFields = ParsePdfFields(inputPdf);// Convert the field data to JSONvar json = JsonConvert.SerializeObject(formFields);// Write the JSON fileFile.WriteAllText(jsonFile, json);}
Add the code below to the FillFromJson(string inputPdf, string jsonFile) method to fill serialized fields from a JSON file.
static void FillFromJson(string inputPdf, string jsonFile){// Read the JSON contentsvar json = File.ReadAllText(jsonFile);// Create a variable to hold the converted JSON datavar formFields = JsonConvert.DeserializeObject<List<PDFFormField>>(json);// Create a new PDFFile objectvar pdfFile = new PDFFile(inputPdf);// Fill the form fieldspdfFile.FillFormFields(formFields, inputPdf);}
Add the code below to the SerializeToXml(string inputPdf, string xmlFile) method to write serialized fields to an XML file.
static void SerializeToXml(string inputPdf, string xmlFile){// Parse the PDF fieldsvar formFields = ParsePdfFields(inputPdf);// Get the type of formvar type = formFields.GetType();// Create a DataContractSerializer object that will write the XMLvar serializer = new DataContractSerializer(type);using var stringWriter = new StringWriter();using var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Indent = true });// USe the serializer object to write to XML objectsserializer.WriteObject(xmlWriter, formFields);xmlWriter.Close();// Write the text of the serialized fieldsFile.WriteAllText(xmlFile, stringWriter.ToString());}
Add the code below to the FillFromXml(string inputPdf, string xmlFile) method to write serialized fields to an XML file.
static void FillFromXml(string inputPdf, string xmlFile){// Read the XML filevar xmlString = File.ReadAllText(xmlFile);// Create the object that holds the serialized datavar serializer = new DataContractSerializer(typeof(List<PDFFormField>));// String readerusing var stringReader = new StringReader(xmlString);// XML readerusing var xmlReader = XmlReader.Create(stringReader);// Reads the form fields from the XML filevar formFields = serializer.ReadObject(xmlReader) as List<PDFFormField>;// Creates a pdf file with the datavar pdfFile = new PDFFile(inputPdf);// Fills the data in the pdf filepdfFile.FillFormFields(formFields, inputPdf);}
Run the project by pressing F5, or by selecting Debug -> Start Debugging.
If the steps were followed correctly, the console appears and serializes the input PDF file to JSON and XML files, and fills the PDF form field data from JSON and XML files.
This tutorial showed how to work with the PDFFile, PDFDocument and PDFFormField to serialize and fill PDF Forms.