From 9165e8ccbef4556b9ac40cf0e411b9c8ecfb0dbe Mon Sep 17 00:00:00 2001 From: Arnulfo Arroyo <aarroyo@datalogics.com> Date: Mon, 10 Jun 2024 20:49:51 -0500 Subject: [PATCH] Initial set up of Forms Extension Samples Adds the sourcecode and project files for the forms extension samples. Points the package reference to the first release of the product --- .../ConvertXFAToAcroForms.cs | 57 ++++++++++++ .../ConvertXFAToAcroForms.csproj | 14 +++ Forms/ExportFormsData/ExportFormsData.cs | 85 ++++++++++++++++++ Forms/ExportFormsData/ExportFormsData.csproj | 14 +++ Forms/FlattenForms/FlattenForms.cs | 74 +++++++++++++++ Forms/FlattenForms/FlattenForms.csproj | 14 +++ Forms/ImportFormsData/ImportFormsData.cs | 90 +++++++++++++++++++ Forms/ImportFormsData/ImportFormsData.csproj | 14 +++ 8 files changed, 362 insertions(+) create mode 100644 Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.cs create mode 100644 Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.csproj create mode 100644 Forms/ExportFormsData/ExportFormsData.cs create mode 100644 Forms/ExportFormsData/ExportFormsData.csproj create mode 100644 Forms/FlattenForms/FlattenForms.cs create mode 100644 Forms/FlattenForms/FlattenForms.csproj create mode 100644 Forms/ImportFormsData/ImportFormsData.cs create mode 100644 Forms/ImportFormsData/ImportFormsData.csproj diff --git a/Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.cs b/Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.cs new file mode 100644 index 0000000..05800f2 --- /dev/null +++ b/Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Datalogics.PDFL; + +/* + * + * The ConvertXFAToAcroForms sample demonstrates how to convert XFA into AcroForms. + * Converts XFA (Dynamic or Static) fields to AcroForms fields and removes XFA fields. + * Copyright (c) 2024, Datalogics, Inc. All rights reserved. + * + */ +namespace ConvertXFAToAcroForms +{ + class ConvertXFAToAcroForms + { + static void Main(string[] args) + { + Console.WriteLine("ConvertXFAToAcroForms Sample:"); + + using (Library lib = new Library(LibraryFlags.InitFormsExtension)) + { + if (!lib.IsFormsExtensionAvailable()) + { + System.Console.Out.WriteLine("Forms Plugins were not properly loaded!"); + return; + } + + lib.AllowOpeningXFA = true; + + Console.WriteLine("Initialized the library."); + + String sInput = Library.ResourceDirectory + "Sample_Input/DynamicXFA.pdf"; + String sOutput = "../ConvertXFAToAcroForms-out.pdf"; + + if (args.Length > 0) + { + sInput = args[0]; + } + + if (args.Length > 1) + { + sOutput = args[1]; + } + + using (Document doc = new Document(sInput)) + { + UInt32 pagesOutput = doc.ConvertXFAFieldsToAcroFormFields(); + + Console.WriteLine("XFA document was converted into an AcroForms document with {0} pages.", pagesOutput); + + doc.Save(SaveFlags.Full | SaveFlags.Linearized, sOutput); + } + } + } + } +} diff --git a/Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.csproj b/Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.csproj new file mode 100644 index 0000000..8ea29b4 --- /dev/null +++ b/Forms/ConvertXFAToAcroForms/ConvertXFAToAcroForms.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Adobe.PDF.Library.FormsExtension.LM.NET" Version="1.*" /> + </ItemGroup> + +</Project> diff --git a/Forms/ExportFormsData/ExportFormsData.cs b/Forms/ExportFormsData/ExportFormsData.cs new file mode 100644 index 0000000..901f0a8 --- /dev/null +++ b/Forms/ExportFormsData/ExportFormsData.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Datalogics.PDFL; + +/* + * The ExportFormsData sample demonstrates how to Export forms data from XFA and AcroForms documents: + * + * - Export data from a XFA (Dynamic or Static) document, the types supported include XDP, XML, or XFD + * - Export data from an AcroForms document, the types supported include XFDF, FDF, or XML + * + * Copyright (c) 2024, Datalogics, Inc. All rights reserved. + * + */ +namespace ExportFormsData +{ + class ExportFormsData + { + static void Main(string[] args) + { + Console.WriteLine("ExportFormsData Sample:"); + + using (Library lib = new Library(LibraryFlags.InitFormsExtension)) + { + if (!lib.IsFormsExtensionAvailable()) + { + System.Console.Out.WriteLine("Forms Plugins were not properly loaded!"); + return; + } + + lib.AllowOpeningXFA = true; + + Console.WriteLine("Initialized the library."); + + //XFA document + String sInput = Library.ResourceDirectory + "Sample_Input/DynamicXFA.pdf"; + String sOutput = "../ExportFormsDataXFA.xdp"; + + if (args.Length > 0) + { + sOutput = args[0]; + } + + using (Document doc = new Document(sInput)) + { + //Export the data while specifying the type, in this case XDP + bool result = doc.ExportXFAFormsData(sOutput, XFAFormExportType.XDP); + + if (result) + { + Console.Out.WriteLine("Forms data was exported!"); + } + else + { + Console.Out.WriteLine("Exporting of Forms data failed!"); + } + } + + //AcroForms document + sInput = Library.ResourceDirectory + "Sample_Input/AcroForm.pdf"; + sOutput = "../ExportFormsDataAcroForms.xfdf"; + + if (args.Length > 1) + { + sOutput = args[1]; + } + + using (Document doc = new Document(sInput)) + { + //Export the data while specifying the type, in this case XFDF + bool result = doc.ExportAcroFormsData(sOutput, AcroFormExportType.XFDF); + + if (result) + { + Console.Out.WriteLine("Forms data was exported!"); + } + else + { + Console.Out.WriteLine("Exporting of Forms data failed!"); + } + } + } + } + } +} diff --git a/Forms/ExportFormsData/ExportFormsData.csproj b/Forms/ExportFormsData/ExportFormsData.csproj new file mode 100644 index 0000000..8ea29b4 --- /dev/null +++ b/Forms/ExportFormsData/ExportFormsData.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Adobe.PDF.Library.FormsExtension.LM.NET" Version="1.*" /> + </ItemGroup> + +</Project> diff --git a/Forms/FlattenForms/FlattenForms.cs b/Forms/FlattenForms/FlattenForms.cs new file mode 100644 index 0000000..6f198bb --- /dev/null +++ b/Forms/FlattenForms/FlattenForms.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Datalogics.PDFL; + +/* + * + * The FlattenForms sample demonstrates how to Flatten XFA into AcroForms. + * + * - Flatten XFA (Dynamic or Static) to regular page content which converts and expands XFA fields to regular PDF content and removes the XFA fields. + * - Flatten AcroForms to regular page content which converts AcroForm fields to regular page content and removes the AcroForm fields. + * Copyright (c) 2024, Datalogics, Inc. All rights reserved. + * + */ +namespace FlattenForms +{ + class FlattenForms + { + static void Main(string[] args) + { + Console.WriteLine("FlattenForms Sample:"); + + using (Library lib = new Library(LibraryFlags.InitFormsExtension)) + { + if (!lib.IsFormsExtensionAvailable()) + { + System.Console.Out.WriteLine("Forms Plugins were not properly loaded!"); + return; + } + + //Must be set to true to prevent default legacy behavior of PDFL + lib.AllowOpeningXFA = true; + + Console.WriteLine("Initialized the library."); + + //XFA document + String sInput = Library.ResourceDirectory + "Sample_Input/DynamicXFA.pdf"; + String sOutput = "../FlattenXFA-out.pdf"; + + if (args.Length > 0) + { + sInput = args[0]; + } + + if (args.Length > 1) + { + sOutput = args[1]; + } + + using (Document doc = new Document(sInput)) + { + UInt32 pagesOutput = doc.FlattenXFAFormFields(); + + Console.WriteLine("XFA document was expanded into {0} Flattened pages.", pagesOutput); + + doc.Save(SaveFlags.Full | SaveFlags.Linearized, sOutput); + } + + //AcroForms document + sInput = Library.ResourceDirectory + "Sample_Input/AcroForm.pdf"; + sOutput = "../FlattenAcroForms-out.pdf"; + + using (Document doc = new Document(sInput)) + { + doc.FlattenAcroFormFields(); + + Console.WriteLine("AcroForms document was Flattened."); + + doc.Save(SaveFlags.Full | SaveFlags.Linearized, sOutput); + } + } + } + } +} diff --git a/Forms/FlattenForms/FlattenForms.csproj b/Forms/FlattenForms/FlattenForms.csproj new file mode 100644 index 0000000..8ea29b4 --- /dev/null +++ b/Forms/FlattenForms/FlattenForms.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Adobe.PDF.Library.FormsExtension.LM.NET" Version="1.*" /> + </ItemGroup> + +</Project> diff --git a/Forms/ImportFormsData/ImportFormsData.cs b/Forms/ImportFormsData/ImportFormsData.cs new file mode 100644 index 0000000..16b9c53 --- /dev/null +++ b/Forms/ImportFormsData/ImportFormsData.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Datalogics.PDFL; + +/* + * The ImportFormsData sample demonstrates how to Import forms data into XFA and AcroForms documents: + * + * - Import data into a XFA (Dynamic or Static) document, the types supported include XDP, XML, or XFD + * - Import data into an AcroForms document, the types supported include XFDF, FDF, or XML + * + * Copyright (c) 2024, Datalogics, Inc. All rights reserved. + */ +namespace ImportFormsData +{ + class ImportFormsData + { + static void Main(string[] args) + { + Console.WriteLine("ImportFormsData Sample:"); + + using (Library lib = new Library(LibraryFlags.InitFormsExtension)) + { + if (!lib.IsFormsExtensionAvailable()) + { + System.Console.Out.WriteLine("Forms Plugins were not properly loaded!"); + return; + } + + lib.AllowOpeningXFA = true; + + Console.WriteLine("Initialized the library."); + + //XFA document + String sInput = Library.ResourceDirectory + "Sample_Input/DynamicXFA.pdf"; + String sInputData = Library.ResourceDirectory + "Sample_Input/DynamicXFA_data.xdp"; + String sOutput = "../ImportFormsDataXFA-out.pdf"; + + if (args.Length > 0) + { + sOutput = args[0]; + } + + using (Document doc = new Document(sInput)) + { + //Import the data, acceptable types include XDP, XML, and XFD + bool result = doc.ImportXFAFormsData(sInputData); + + if (result) + { + Console.Out.WriteLine("Forms data was imported!"); + + doc.Save(SaveFlags.Full | SaveFlags.Linearized, sOutput); + } + else + { + Console.Out.WriteLine("Importing of Forms data failed!"); + } + } + + //AcroForms document + sInput = Library.ResourceDirectory + "Sample_Input/AcroForm.pdf"; + sInputData = Library.ResourceDirectory + "Sample_Input/AcroForm_data.xfdf"; + sOutput = "../ImportFormsDataAcroForms-out.pdf"; + + if (args.Length > 1) + { + sOutput = args[1]; + } + + using (Document doc = new Document(sInput)) + { + //Import the data while specifying the type, in this case XFDF + bool result = doc.ImportAcroFormsData(sInputData, AcroFormImportType.XFDF); + + if (result) + { + Console.Out.WriteLine("Forms data was imported!"); + + doc.Save(SaveFlags.Full | SaveFlags.Linearized, sOutput); + } + else + { + Console.Out.WriteLine("Importing of Forms data failed!"); + } + } + } + } + } +} diff --git a/Forms/ImportFormsData/ImportFormsData.csproj b/Forms/ImportFormsData/ImportFormsData.csproj new file mode 100644 index 0000000..8ea29b4 --- /dev/null +++ b/Forms/ImportFormsData/ImportFormsData.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Adobe.PDF.Library.FormsExtension.LM.NET" Version="1.*" /> + </ItemGroup> + +</Project>