From 0f04bc7c896e0c67b9ae915c0c9c7b1b4704ada9 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Wed, 8 Oct 2025 12:19:51 +0530 Subject: [PATCH 01/22] 985863-ug: UG documentation feedback for PDF library- Part 2 --- .../NET/Working-with-DigitalSignature.md | 1120 ++++++++++------- 1 file changed, 690 insertions(+), 430 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md index df6b82859..381688a3e 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md @@ -20,6 +20,11 @@ The following code example explains how to add a digital signature to the PDF do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Add-a-digital-signature-to-the-PDF-document/.NET/Add-a-digital-signature-to-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document. PdfDocument document = new PdfDocument(); //Adds a new page. @@ -44,23 +49,20 @@ signature.Reason = "I am author of this document."; //Draws the signature image. signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Close the document. document.Close(true); -//Defining the ContentType for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -90,6 +92,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -129,6 +136,11 @@ The following code example illustrates how to add a digital signature in the PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Add-a-digital-signature-to-the-PDF-document/.NET/Add-a-digital-signature-to-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -153,23 +165,20 @@ signature.Reason = "I am author of this document."; //Draws the signature image signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -201,6 +210,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -238,9 +252,14 @@ You can add a digital signature to an existing document as follows. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Add-a-digital-signature-to-an-existing-document/.NET/Add-a-digital-signature-to-an-existing-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage; @@ -255,23 +274,21 @@ signatureField.Signature.Reason = "I am author of this document"; //Adds the field loadedDocument.Form.Fields.Add(signatureField); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} - + +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Loads the PDF document with signature field PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page @@ -295,6 +312,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Loads the PDF document with signature field Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Gets the page @@ -328,6 +351,12 @@ The following code example illustrates how to add digital signature in a PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Add-digital-signature-using-X509Certificate2/.NET/Add-digital-signature-using-X509Certificate2/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -351,25 +380,21 @@ signature.Reason = "I am author of this document."; //Draws the signature image signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -401,6 +426,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -442,9 +473,12 @@ You can load the signature field from the existing PDF document using [PdfLoaded {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Signing-an-existing-PDF-document/.NET/Signing-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page of the document PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage; //Gets the first signature field of the PDF document @@ -455,23 +489,19 @@ FileStream certificateStream = new FileStream("PDF.pfx", FileMode.Open, FileAcce PdfCertificate certificate = new PdfCertificate(certificateStream, "password123"); field.Signature = new PdfSignature(loadedDocument, page, certificate, "Signature", field); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Loads a PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page of the document @@ -492,6 +522,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Loads a PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Gets the first page of the document @@ -522,9 +556,12 @@ You can load the signature field from an existing PDF document using [PdfLoadedS {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page of the document PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage; //Gets the first signature field of the PDF document @@ -535,23 +572,19 @@ FileStream certificateStream = new FileStream("PDF.pfx", FileMode.Open, FileAcce PdfCertificate certificate = new PdfCertificate(certificateStream, "password123"); field.Signature = new PdfSignature(loadedDocument, page, certificate, "Signature", field); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Loads a PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page of the document @@ -573,7 +606,11 @@ loadedDocument.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Loads a PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Gets the first page of the document @@ -606,43 +643,44 @@ The following code example demonstrates how to check if a signature field is sig {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Check-If-PDF-Is-Signed/.NET/Check-If-PDF-Is-Signed/Program.cs" %} -// Open the signed PDF file for reading -using (FileStream inputFileStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read)) -{ - // Load the PDF document - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputFileStream); +using Syncfusion.Pdf.Parsing; - // Check if the document contains a form with fields - if (loadedDocument.Form == null || loadedDocument.Form.Fields.Count == 0) - { - Console.WriteLine("No signature fields found in the document."); - } - else +// Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); + +// Check if the document contains a form with fields +if (loadedDocument.Form == null || loadedDocument.Form.Fields.Count == 0) +{ + Console.WriteLine("No signature fields found in the document."); +} +else +{ + // Iterate through all fields in the form + foreach (PdfLoadedField field in loadedDocument.Form.Fields) { - // Iterate through all fields in the form - foreach (PdfLoadedField field in loadedDocument.Form.Fields) + // Check if the field is a signature field + PdfLoadedSignatureField signatureField = field as PdfLoadedSignatureField; + if (signatureField != null) { - // Check if the field is a signature field - PdfLoadedSignatureField signatureField = field as PdfLoadedSignatureField; - if (signatureField != null) - { - // Determine whether the signature field is signed or not - string status = signatureField.IsSigned ? "Signed" : "UnSigned"; + // Determine whether the signature field is signed or not + string status = signatureField.IsSigned ? "Signed" : "UnSigned"; - // Output the result for each signature field - Console.WriteLine("Signature Field " + signatureField.Name + " is: " + status); - } + // Output the result for each signature field + Console.WriteLine("Signature Field " + signatureField.Name + " is: " + status); } } - - // Close the document - loadedDocument.Close(true); } +// Close the document +loadedDocument.Close(true); + + {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf.Parsing; + // Load the PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -675,7 +713,9 @@ using (FileStream inputFileStream = new FileStream("Input.pdf", FileMode.Open, F {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - + +Imports Syncfusion.Pdf.Parsing + ' Load the PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") @@ -721,19 +761,22 @@ The following code example shows how to sign the PDF document from an external s {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Externally-sign-a-PDF-document/.NET/Externally-sign-a-PDF-document/Program.cs" %} -//Get the stream from the document -FileStream documentStream = new FileStream("PDF_Succinctly.pdf ", FileMode.Open, FileAccess.Read); -//Load the existing PDF document -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography; +using System.Security.Cryptography.Pkcs; +using System.Security.Cryptography.X509Certificates; + +//Load the PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Creates a digital signature PdfSignature signature = new PdfSignature(document, document.Pages[0], null, "DigitalSignature"); signature.ComputeHash += Signature_ComputeHash; -//Save the PDF document to stream -MemoryStream ms = new MemoryStream(); -document.Save(ms); -//Close the PDF document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); private static void Signature_ComputeHash1(object sender, PdfSignatureEventArgs ars) @@ -758,6 +801,12 @@ private static void Signature_ComputeHash1(object sender, PdfSignatureEventArgs {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography; +using System.Security.Cryptography.Pkcs; +using System.Security.Cryptography.X509Certificates; //Load existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("PDF_Succinctly.pdf"); @@ -792,6 +841,12 @@ void Signature_ComputeHash(object sender, PdfSignatureEventArgs arguments) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography +Imports System.Security.Cryptography.Pkcs +Imports System.Security.Cryptography.X509Certificates + 'Load existing PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("PDF_Succinctly.pdf") 'Creates a digital signature @@ -827,16 +882,21 @@ End Sub You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Digital%20Signature/Externally-sign-a-PDF-document/). ### Externally sign the PDF document using IPdfExternalSigner + The following code example shows how to sign the PDF document from external signature using [IPdfExternalSigner](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.IPdfExternalSigner.html). {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Externally-sign-the-PDF-document-using-IPdfExternalSigner/.NET/Externally-sign-the-PDF-document/Program.cs" %} -//Get the stream from the document -FileStream documentStream = new FileStream("Input.pdf ", FileMode.Open, FileAccess.Read); -//Load the existing PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Drawing; +using System.Security.Cryptography.X509Certificates; +using System.Security.Cryptography; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Creates a digital signature. PdfSignature signature = new PdfSignature(loadedDocument, loadedDocument.Pages[0], null, "Signature"); @@ -853,18 +913,10 @@ List certificates = new List(); certificates.Add(new X509Certificate2(Convert.FromBase64String(PublicCert))); signature.AddExternalSigner(externalSignature, certificates, null); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); //Create the external signer class and sign the document hash. class ExternalSigner : IPdfExternalSigner @@ -907,6 +959,12 @@ class ExternalSigner : IPdfExternalSigner {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Drawing; +using System.Security.Cryptography.X509Certificates; +using System.Security.Cryptography; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -966,6 +1024,12 @@ class ExternalSigner : IPdfExternalSigner {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography +Imports System.Drawing +Imports System.Security.Cryptography.X509Certificates + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -1036,11 +1100,18 @@ The following example illustrates the process of adding timestamps to a PDF docu {% highlight c# tabtitle="C# [Cross-platform]" %} -// Get the stream from the input PDF document. -FileStream documentStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Drawing; +using System.Security.Cryptography.X509Certificates; +using System.Security.Cryptography; +using Org.BouncyCastle.Tsp; +using System.Net; +using System.Text; +using Org.BouncyCastle.Math; -// Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Create a digital signature for the first page of the document. PdfSignature signature = new PdfSignature(loadedDocument, loadedDocument.Pages[0], null, "Signature"); @@ -1058,12 +1129,8 @@ List certificates = new List(); certificates.Add(new X509Certificate2(Convert.FromBase64String(PublicCert))); signature.AddExternalSigner(externalSignature, certificates, null); -//Create file stream. -using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) -{ - //Save the PDF document to file stream. - loadedDocument.Save(outputFileStream); -} +//Save the document +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); @@ -1071,6 +1138,16 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Drawing; +using System.Security.Cryptography.X509Certificates; +using System.Security.Cryptography; +using Org.BouncyCastle.Tsp; +using System.Net; +using System.Text; +using Org.BouncyCastle.Math; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -1098,6 +1175,16 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports Syncfusion.Drawing +Imports System.Security.Cryptography.X509Certificates +Imports System.Security.Cryptography +Imports Org.BouncyCastle.Tsp +Imports System.Net +Imports System.Text +Imports Org.BouncyCastle.Math + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -1388,11 +1475,15 @@ You can create a Long Term validation (LTV) when signing PDF documents externall {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Create-LTV-when-signing-PDF-documents-externally/.NET/Create-LTV-when-signing-PDF-documents-externally/Program.cs" %} - //Get the stream from the document. - FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); + using Syncfusion.Pdf; + using Syncfusion.Pdf.Parsing; + using Syncfusion.Pdf.Security; + using System.Security.Cryptography; + using System.Security.Cryptography.Pkcs; + using System.Security.Cryptography.X509Certificates; - //Load an existing PDF document. - PdfLoadedDocument document = new PdfLoadedDocument(documentStream); + //Load the PDF document + PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the page of the existing PDF document. PdfLoadedPage loadedPage = document.Pages[0] as PdfLoadedPage; @@ -1403,14 +1494,13 @@ You can create a Long Term validation (LTV) when signing PDF documents externall //Hook up the ComputeHash event. signature.ComputeHash += Signature_ComputeHash; - //Save the document into stream - MemoryStream stream = new MemoryStream(); - document.Save(stream); + //Save the document. + document.Save("SignedDocument.pdf"); //Close the document document.Close(true); - //Load an existing PDF stream.. - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream); + //Load an existing PDF stream. + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("SignedDocument.pdf"); //Gets the first signature field of the PDF document PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -1422,12 +1512,9 @@ You can create a Long Term validation (LTV) when signing PDF documents externall //Create LTV with your public certificates. pdfSignature.CreateLongTermValidity(new List { x509 }); - //Save the PDF document - MemoryStream ms = new MemoryStream(); - loadedDocument.Save(ms); - //If the position is not set to '0' then the PDF will be empty - ms.Position = 0; - //Close the document + //Save the document + loadedDocument.Save("Output.pdf"); + //Close the document. loadedDocument.Close(true); void Signature_ComputeHash(object sender, PdfSignatureEventArgs ars) @@ -1454,6 +1541,13 @@ You can create a Long Term validation (LTV) when signing PDF documents externall {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Parsing; + using Syncfusion.Pdf.Security; + using System.Security.Cryptography; + using System.Security.Cryptography.Pkcs; + using System.Security.Cryptography.X509Certificates; + //Load an existing PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -1467,12 +1561,12 @@ You can create a Long Term validation (LTV) when signing PDF documents externall signature.ComputeHash += Signature_ComputeHash; //Save the document. - document.Save("SignedDocument"); + document.Save("SignedDocument.pdf"); //Close the document document.Close(true); //Load an existing PDF stream.. - PdfLoadedDocument loadedDocument = new PdfLoadedDocument("SignedDocument"); + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("SignedDocument.pdf"); //Gets the first signature field of the PDF document PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -1512,6 +1606,13 @@ You can create a Long Term validation (LTV) when signing PDF documents externall {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Parsing + Imports Syncfusion.Pdf.Security + Imports System.Security.Cryptography + Imports System.Security.Cryptography.Pkcs + Imports System.Security.Cryptography.X509Certificates + ' Load an existing PDF document. Dim document As New PdfLoadedDocument("Input.pdf") @@ -1583,6 +1684,10 @@ The following code example shows how to sign a PDF document with LTA using [Time {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Sign_PDF_with_LTA/.NET/Sign_PDF_with_LTA/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Pdf; + //Load existing PDF document. FileStream documentStream1 = new FileStream("PDF_Succinctly.pdf", FileMode.Open, FileAccess.Read); PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream1); @@ -1599,13 +1704,12 @@ signature.TimeStampServer = new TimeStampServer(new Uri("http://timestamping.ens signature.EnableLtv = true; //Save the PDF document. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +loadedDocument.Save("LTV_document.pdf"); //Close the document. loadedDocument.Close(true); //Load existing PDF document. -PdfLoadedDocument ltDocument = new PdfLoadedDocument(stream); +PdfLoadedDocument ltDocument = new PdfLoadedDocument("LTV_document.pdf"); //Load the existing PDF page. PdfLoadedPage lpage = ltDocument.Pages[0] as PdfLoadedPage; @@ -1613,22 +1717,19 @@ PdfLoadedPage lpage = ltDocument.Pages[0] as PdfLoadedPage; PdfSignature timeStamp = new PdfSignature(lpage, "timestamp"); timeStamp.TimeStampServer = new TimeStampServer(new Uri("http://timestamping.ensuredca.com")); -//Save and close the PDF document. -MemoryStream stream1 = new MemoryStream(); -ltDocument.Save(stream1); +//Save the document +ltDocument.Save("Output.pdf"); //Close the document. ltDocument.Close(true); -//Defining the ContentType for pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream1, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Pdf; + //Load existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("PDF_Succinctly.pdf"); //Load digital ID with password. @@ -1663,6 +1764,10 @@ ltDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports Syncfusion.Pdf + 'Loads a PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("PDF_Succinctly.pdf") 'Load digital ID with password. @@ -1717,6 +1822,11 @@ The following code example shows how to create a PDF digital signature using the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Sign_PDF_Windows_Certificate/.NET/Sign_PDF_Windows_Certificate/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Pdf; +using System.Security.Cryptography.X509Certificates; + //Initialize the Windows store. X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); @@ -1726,8 +1836,7 @@ X509Certificate2Collection fcollection = (X509Certificate2Collection)collection. X509Certificate2 digitalID = collection[0]; //Load existing PDF document. -FileStream documentStream = new FileStream("PDF_Succinctly.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("PDF_Succinctly.pdf"); //Load X509Certificate2. PdfCertificate certificate = new PdfCertificate(digitalID); @@ -1737,22 +1846,20 @@ PdfSignature signature = new PdfSignature(loadedDocument, loadedDocument.Pages[0 signature.Settings.CryptographicStandard = CryptographicStandard.CADES; signature.Settings.DigestAlgorithm = DigestAlgorithm.SHA512; -//Save the PDF document. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); -//Defining the ContentType for pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Pdf; +using System.Security.Cryptography.X509Certificates; + //Initialize the Windows store. X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); @@ -1781,6 +1888,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports Syncfusion.Pdf +Imports System.Security.Cryptography.X509Certificates + 'Initialize the Windows store. Dim store As X509Store = New X509Store("MY", StoreLocation.CurrentUser) store.Open(OpenFlags.[ReadOnly] Or OpenFlags.OpenExistingOnly) @@ -1820,6 +1932,11 @@ Refer to the following code sample. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Adding-a-signature-validation-appearance-in-a-PDF/.NET/Adding-a-signature-validation-appearance-in-a-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -1846,23 +1963,20 @@ signature.Reason = "I am author of this document."; //Draws the signature image signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Add a new page @@ -1893,6 +2007,11 @@ document.Close( true ); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -1934,6 +2053,11 @@ Essential® PDF allows you to add timestamp in the digital signatu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Adding-a-timestamp-in-digital-signature-of-PDF/.NET/Adding-a-timestamp-in-digital-signature-of-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -1960,23 +2084,20 @@ signature.Reason = "I am author of this document."; //Draws the signature image signature.Appearance.Normal.Graphics.DrawImage(image, 0, 0); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -2011,6 +2132,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -2052,6 +2178,9 @@ You can add timestamp to the PDF document using [TimeStampServer](https://help.s {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Adding-a-timestamp-to-PDF-document/.NET/Adding-a-timestamp-to-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Security; + //Create a new pdf document PdfDocument document = new PdfDocument(); //Adds a new page @@ -2062,23 +2191,18 @@ PdfSignature signature = new PdfSignature(page, "Signature"); //Add the time stamp by using the server URI signature.TimeStampServer = new TimeStampServer(new Uri("http://syncfusion.digistamp.com"), "user", "123456"); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Security; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page @@ -2097,6 +2221,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -2125,9 +2252,12 @@ You can add timestamp to the existing PDF document using [TimeStampServer](https {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Adding-a-timestamp-to-an-existing-PDF/.NET/Adding-a-timestamp-to-an-existing-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage; @@ -2136,23 +2266,19 @@ PdfSignature signature = new PdfSignature(page, "Signature"); //Add the time stamp by using the server URI signature.TimeStampServer = new TimeStampServer(new Uri("http://syncfusion.digistamp.com"), "user", "123456"); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Add a new page @@ -2172,6 +2298,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Security + 'Load the PDF document Dim document As New PdfLoadedDocument("Input.pdf") 'Gets the first page of the document @@ -2209,9 +2339,11 @@ You can get the above certificate details from an existing signed PDF document u {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Retrieve-certificate-details-from-an-existing-PDF/.NET/Retrieve-certificate-details-from-an-existing-PDF/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the signature field PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -2236,6 +2368,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the existing signed PDF PdfLoadedDocument loadedDocument = new PdfLoadedDocument("SignedDocument.pdf"); //Load the PDF form @@ -2268,6 +2403,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load the existing signed PDF Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("../../Signed.pdf") 'Load the PDF form @@ -2314,6 +2452,11 @@ The following code example explains how to create LTV PDF using [EnableLtv](http {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Enable-LTV-PDF-signature/.NET/Enable-LTV-PDF-signature/Program.cs" %} + using Syncfusion.Drawing; + using Syncfusion.Pdf; + using Syncfusion.Pdf.Graphics; + using Syncfusion.Pdf.Parsing; + using Syncfusion.Pdf.Security; //Creates a new PDF document. PdfDocument document = new PdfDocument(); @@ -2333,14 +2476,12 @@ The following code example explains how to create LTV PDF using [EnableLtv](http signature.Settings.CryptographicStandard = CryptographicStandard.CADES; signature.Settings.DigestAlgorithm = DigestAlgorithm.SHA256; - //Save the document into stream - MemoryStream stream = new MemoryStream(); - document.Save(stream); + document.Save("SignedDocument.pdf"); //Close the document document.Close(true); //Load an existing PDF stream. - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream); + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("SignedDocument.pdf"); //Gets the first signature field of the PDF document PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -2349,11 +2490,9 @@ The following code example explains how to create LTV PDF using [EnableLtv](http //Enable LTV on Signature. pdfSignature.EnableLtv = true; - //Save the document into stream - MemoryStream ms = new MemoryStream(); - loadedDocument.Save(ms); - stream.ms = 0; - //Close the document + //Save the document + loadedDocument.Save("Output.pdf"); + //Close the document. loadedDocument.Close(true); @@ -2361,6 +2500,12 @@ The following code example explains how to create LTV PDF using [EnableLtv](http {% highlight c# tabtitle="C# [Windows-specific]" %} + using System.Drawing; + using Syncfusion.Pdf; + using Syncfusion.Pdf.Graphics; + using Syncfusion.Pdf.Parsing; + using Syncfusion.Pdf.Security; + //Creates a new PDF document. PdfDocument document = new PdfDocument(); @@ -2402,6 +2547,12 @@ The following code example explains how to create LTV PDF using [EnableLtv](http {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + Imports System.Drawing + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Graphics + Imports Syncfusion.Pdf.Parsing + Imports Syncfusion.Pdf.Security + ' Creates a new PDF document. Dim document As New PdfDocument() @@ -2459,6 +2610,11 @@ The following code example explains how to add a digital signature with [cryptog {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Adding-a-digital-signature-with-CAdES-format/.NET/Adding-a-digital-signature-with-CAdES-format/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page @@ -2487,23 +2643,20 @@ signature.Reason = "I am author of this document."; //Draws the signature image signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Adds a new page @@ -2537,6 +2690,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -2589,6 +2747,11 @@ The following code example explains how to add a digital signature with various {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Add-digital-signature-with-digest-algorithm/.NET/Add-digital-signature-with-digest-algorithm/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page @@ -2617,23 +2780,20 @@ signature.Reason = "I am author of this document."; //Draws the signature image signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the document +document.Save("Output.pdf"); +//Close the document. document.Close(true); -//Defining the ContentType for pdf file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page @@ -2667,6 +2827,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Creates a new PDF document Dim document As New PdfDocument() 'Adds a new page @@ -2722,11 +2887,12 @@ The following code example explains how to validate the digitally signed PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Validate-the-digitally-signed-PDF-signature/.NET/Validate-the-digitally-signed-PDF-signature/Program.cs" %} -// Load the input PDF document stream from the specified file path -FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; -// Load the signed PDF document using the stream -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +// Load the signed PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Retrieve the first signature field from the PDF form PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -2856,11 +3022,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -// Load the input PDF document stream from the specified file path -FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; -// Load the signed PDF document using the stream -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +// Load the signed PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Retrieve the first signature field from the PDF form PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -2990,11 +3157,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Load the input PDF document stream from the specified file path -Dim documentStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode.Open, FileAccess.Read) +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates ' Load the signed PDF document using the stream -Dim loadedDocument As New PdfLoadedDocument(documentStream) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") ' Retrieve the first signature field from the PDF form Dim signatureField As PdfLoadedSignatureField = TryCast(loadedDocument.Form.Fields(0), PdfLoadedSignatureField) @@ -3127,10 +3295,12 @@ The following code example explains how to validate all the signatures in digita {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Validate-all-signatures-in-digitally-signed-PDF/.NET/Validate-all-signatures-in-digitally-signed-PDF/Program.cs" %} -//Get the stream from the document -FileStream documentStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Load an existing signed PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //X509Certificate2Collection to check the signer's identity using root certificates X509Certificate2Collection collection = new X509Certificate2Collection(); @@ -3153,6 +3323,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Load an existing signed PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -3173,6 +3347,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates + 'Load an existing signed PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -3205,6 +3383,9 @@ This example shows how to validate and identify different types of digital signa {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Get the stream from the document FileStream documentStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); // Load the signed PDF document @@ -3278,6 +3459,9 @@ for (int i = form.Fields.Count - 1; i >= 0; i--) {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + // Load the signed PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Signed PDF.pdf"); @@ -3349,6 +3533,9 @@ for (int i = form.Fields.Count - 1; i >= 0; i--) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + ' Load the signed PDF document Dim loadedDocument As New PdfLoadedDocument("Signed PDF.pdf") @@ -3420,10 +3607,14 @@ Steps for deferred signing: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/refs/heads/master/Digital%20Signature/Deferred-signing-in-PDF-document/.NET/Deferred-signing-in-PDF-document/Program.cs" %} -//Get the stream from the document. -FileStream documentStream = new FileStream("PDF_Succinctly.pdf ", FileMode.Open, FileAccess.Read); -//Load an existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Creates a digital signature. PdfSignature signature = new PdfSignature(loadedDocument, loadedDocument.Pages[0], null, "Signature"); @@ -3439,17 +3630,10 @@ System.Collections.Generic.List certificates = new System.Coll certificates.Add(new X509Certificate2(Convert.FromBase64String(PublicCert))); signature.AddExternalSigner(externalSignature, certificates, null); -//Save the document. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the PDF document. +//Save the document +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); -//Defining the ContentType for a PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); void DeferredSign() { @@ -3542,6 +3726,12 @@ class ExternalSigner : IPdfExternalSigner {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("PDF_Succinctly.pdf"); @@ -3655,6 +3845,11 @@ class ExternalSigner : IPdfExternalSigner {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("PDF_Succinctly.pdf") @@ -3770,6 +3965,10 @@ The following code sample shows how to add the estimated size of the signature i {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Adding-the-estimated-size-of-the-signature/.NET/Adding-the-estimated-size-of-the-signature/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Security; + //Creating a new PDF Document. PdfDocument document = new PdfDocument(); //Adding a new page to the PDF document. @@ -3784,25 +3983,19 @@ signature.Bounds = new Rectangle(10, 20, 400, 200); //Sets the estimated size of the signature. signature.EstimatedSignatureSize = 20000; -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -document.Save(stream); -//If the position is not set to '0,' then the PDF will be empty. -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Close the document. document.Close(true); -//Defining the ContentType for a PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Security; + //Creating a new PDF Document. PdfDocument document = new PdfDocument(); //Adding a new page to the PDF document. @@ -3825,6 +4018,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Creating a new PDF Document. Dim document As PdfDocument = New PdfDocument() 'Adding a new page to the PDF document. @@ -3862,10 +4059,13 @@ Steps for deferred signing: {% highlight c# tabtitle="C# [Cross-platform]" %} -//Get the stream from a document. -FileStream documentStream = new FileStream("PDF_Succinctly.pdf ", FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Load an existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("PDF_Succinctly.pdf"); //Creates a digital signature. PdfSignature signature = new PdfSignature(loadedDocument, loadedDocument.Pages[0], null, "Signature"); @@ -3881,16 +4081,9 @@ System.Collections.Generic.List certificates = new System.Coll signature.AddExternalSigner(externalSignature, certificates, null); //Save a document. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close a PDF document. +loadedDocument.Save("EmptySignature.pdf"); +//Close a document. loadedDocument.Close(true); -//Defining the ContentType for a PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); //Create an external signer with a signed hash message. IPdfExternalSigner externalSigner = new ExternalSigner("SHA1"); @@ -3899,8 +4092,8 @@ System.Collections.Generic.List publicCertificates = new Syste publicCertificates.Add(new X509Certificate2(Convert.FromBase64String(PublicCert))); //Create an output file stream. -MemoryStream outputFileStream = new MemoryStream(); -// Get the stream from a document. +MemoryStream outputFileStream = new MemoryStream(); +//Get the stream from a document. FileStream inputFileStream = new FileStream("EmptySignature.pdf", FileMode.Open, FileAccess.Read); string pdfPassword = string.Empty; //Deferred signing without PKCS7 encoding. @@ -3960,6 +4153,11 @@ class ExternalSigner : IPdfExternalSigner {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("PDF_Succinctly.pdf"); @@ -4049,6 +4247,11 @@ class ExternalSigner : IPdfExternalSigner {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("PDF_Succinctly.pdf") @@ -4147,47 +4350,46 @@ The following code example illustrates how to draw text/images in a digital appe {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Draw-text-or-images-in-the-signature-appearance/.NET/Draw-text-or-images-in-the-signature-appearance/Program.cs" %} -//Create a new PDF document. +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + +//Creates a new PDF document. PdfDocument document = new PdfDocument(); -//Add a new page. +//Adds a new page. PdfPageBase page = document.Pages.Add(); //Create PDF graphics for the page. PdfGraphics graphics = page.Graphics; -//Create a certificate instance from a PFX file with a private key. -FileStream certificateStream = new FileStream("PDF.pfx", FileMode.Open, FileAccess.Read); -PdfCertificate pdfCert = new PdfCertificate(certificateStream, "password123"); -//Create a digital signature. +//Creates a certificate instance from PFX file with private key. +PdfCertificate pdfCert = new PdfCertificate(@"PDF.pfx", "password123"); +//Creates a digital signature. PdfSignature signature = new PdfSignature(document, page, pdfCert, "Signature"); -//Set an image for signature field. -FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAccess.Read); -//Set an image for signature field. -PdfBitmap signatureImage = new PdfBitmap(imageStream); -//Set the signature information. -signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +//Sets an image for signature field. +PdfBitmap signatureImage = new PdfBitmap(@"signature.png"); +//Sets signature information. +signature.Bounds = new RectangleF(0,0,200,100); signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; -//Create appearance for the digital signature. +//Create appearance for the digital siganture. signature.Appearance.Normal.Graphics.DrawImage(signatureImage, signature.Bounds); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document. +document.Save("DigitalSignature.pdf"); //Close the document. document.Close(true); -//Define the ContentType for pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Create a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Creates a new PDF document. PdfDocument document = new PdfDocument(); //Adds a new page. @@ -4218,6 +4420,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a new page. @@ -4257,11 +4464,11 @@ Added support for LTV validation and getting CRL and OCSP embedded details from {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Get-LTV-information/.NET/Get-LTV-information/Program.cs" %} -//Gets the stream from the document -FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; -//Loads an existing signed PDF document -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +//Load the PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); // Gets the signature field PdfLoadedSignatureField signatureField = document.Form.Fields[0] as PdfLoadedSignatureField; @@ -4292,11 +4499,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -//Gets the stream from the document -FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; -//Loads an existing signed PDF document -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +//Load the PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); // Gets the signature field PdfLoadedSignatureField signatureField = document.Form.Fields[0] as PdfLoadedSignatureField; @@ -4327,11 +4534,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Gets the stream from the document -Dim documentStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode.Open, FileAccess.Read) +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security ' Loads an existing signed PDF document -Dim document As New PdfLoadedDocument(documentStream) +Dim document As New PdfLoadedDocument("Input.pdf") ' Gets the signature field Dim signatureField As PdfLoadedSignatureField = TryCast(document.Form.Fields(0), PdfLoadedSignatureField) @@ -4372,11 +4579,11 @@ Added support to customize revocation validation using [PdfSignatureValidationOp {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Customized-revocation-validation/.NET/Customized-revocation-validation/Program.cs" %} -//Gets the stream from the document -FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; -//Loads an existing signed PDF document -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +//Load the PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); // Gets the signature field PdfLoadedSignatureField signatureField = document.Form.Fields[0] as PdfLoadedSignatureField; @@ -4407,11 +4614,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -//Gets the stream from the document -FileStream documentStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; -//Loads an existing signed PDF document -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +//Load the PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); // Gets the signature field PdfLoadedSignatureField signatureField = document.Form.Fields[0] as PdfLoadedSignatureField; @@ -4442,6 +4649,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + ' Gets the stream from the document Dim documentStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode.Open, FileAccess.Read) @@ -4484,32 +4694,26 @@ The following code example illustrates how to remove existing digital signatures {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Remove_existing_digital_signature_from_PDF/.NET/Remove_existing_digital_signature_from_PDF/Program.cs" %} +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument pdfLoadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument pdfLoadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the signature field from PDF form field collection. PdfLoadedSignatureField signatureField = pdfLoadedDocument.Form.Fields[0] as PdfLoadedSignatureField; //Remove signature field from form field collection. pdfLoadedDocument.Form.Fields.Remove(signatureField); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfLoadedDocument.Save(stream); -stream.Position = 0; -//Close the document. +//Save and close the PDF document. +pdfLoadedDocument.Save("RemoveDigital.pdf"); pdfLoadedDocument.Close(true); -//Defining the ContentType for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. PdfLoadedDocument pdfLoadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -4526,6 +4730,8 @@ pdfLoadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document. Dim pdfLoadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -4552,12 +4758,13 @@ The following code snippet illustrates how to sign a PDF document without showin {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Sign-PDF-without-showing-digital-signature/.NET/Sign-PDF-without-showing-digital-signature/Program.cs" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + +//Load an existing PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load digital ID with password. -FileStream certificateStream = new FileStream("PDF.pfx", FileMode.Open, FileAccess.Read); -PdfCertificate certificate = new PdfCertificate(certificateStream, "password123"); +PdfCertificate certificate = new PdfCertificate(@"PDF.pfx", "password123"); //Create a signature with loaded digital ID. PdfSignature signature = new PdfSignature(loadedDocument, loadedDocument.Pages[0], certificate, "DigitalSignature"); @@ -4568,23 +4775,17 @@ signature.Certificated = true; //Allow the form fill and and comments. signature.DocumentPermissions = PdfCertificationFlags.AllowFormFill | PdfCertificationFlags.AllowComments; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document. -document.Close(true); -//Defining the ContentType for pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); +//Save and close the PDF document. +loadedDocument.Save("Certifying.pdf"); +loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load digital ID with password. @@ -4607,6 +4808,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Load digital ID with password. @@ -4639,9 +4843,11 @@ The following code snippet illustrates how to retrieve digital signature informa {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Retrieve-digital-signature-information-from-PDF/.NET/Retrieve-digital-signature-information-from-PDF/Program.cs" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the signature field from PdfLoadedDocument form field collection. PdfLoadedSignatureField signatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -4661,6 +4867,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -4682,6 +4891,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -4715,23 +4927,25 @@ N> It is recommended to use licensed assemblies or registered license keys in yo {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/refs/heads/master/Digital%20Signature/Multiple-digital-signature/.NET/Multiple-digital-signature/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream("SignatureFields.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Pdf; + +//Load an existing PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the first page of the document. PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage; //Get the first signature field of the PDF document. PdfLoadedSignatureField signatureField1 = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; -//Creates a certificate. -FileStream certificateStream1 = new FileStream("PDF.pfx", FileMode.Open, FileAccess.Read); -PdfCertificate certificate1 = new PdfCertificate(certificateStream1, "password123"); -//Add signature to the signature field. +//Create a certificate instance from a PFX file with a private key. +PdfCertificate certificate1 = new PdfCertificate("PDF.pfx", "password123"); +//Add a signature to the signature field. signatureField1.Signature = new PdfSignature(loadedDocument, page, certificate1, "Signature", signatureField1); -//Get the image as a stream. -FileStream imageStream = new FileStream("Student Signature.jpg", FileMode.Open, FileAccess.Read); -PdfBitmap signatureImage = new PdfBitmap(imageStream); -//Draw an image in signature appearance. +//Set an image for the signature field. +PdfBitmap signatureImage = new PdfBitmap(@"Student Signature.jpg"); +//Insert an image in the signature appearance. signatureField1.Signature.Appearance.Normal.Graphics.DrawImage(signatureImage, 0, 0, 90, 20); //Save the document into the stream. @@ -4745,33 +4959,28 @@ PdfLoadedPage loadedPage = signedDocument.Pages[0] as PdfLoadedPage; //Get the first signature field of the PDF document. PdfLoadedSignatureField signatureField2 = signedDocument.Form.Fields[1] as PdfLoadedSignatureField; -//Add the signature to the signature field. -signatureField1.Signature = new PdfSignature(signedDocument, loadedPage, certificate1, "Signature", signatureField2); -//Load the image as a stream. -FileStream imageStream1 = new FileStream("Teacher Signature.png", FileMode.Open, FileAccess.Read); -PdfBitmap signatureImage1 = new PdfBitmap(imageStream1); -//Draw the image in signature appearance. -signatureField1.Signature.Appearance.Normal.Graphics.DrawImage(signatureImage1, 0, 0, 90, 20); - -//Saving the PDF to the MemoryStream. -MemoryStream signedStream = new MemoryStream(); -signedDocument.Save(signedStream); -//Set the position as '0'. -signedStream.Position = 0; -//Close the documents. +//Add a signature to the signature field. +signatureField2.Signature = new PdfSignature(signedDocument, loadedPage, certificate1, "Signature", signatureField2); +//Set an image for the signature field. +PdfBitmap signatureImage1 = new PdfBitmap(@"Teacher Signature.png"); +//Draw an image in the signature appearance. +signatureField2.Signature.Appearance.Normal.Graphics.DrawImage(signatureImage1, 0, 0, 90, 20); + +//Save the PDF document. +signedDocument.Save("Multiple_signature.pdf"); +//Close the PDF documents. signedDocument.Close(true); loadedDocument.Close(true); -//Defining the ContentType for a pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Multiple_Signature.pdf"; -//Create the FileContentResult object by using the file contents, content type, and file name. -return File(signedStream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using Syncfusion.Pdf; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the first page of the document. @@ -4816,6 +5025,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports Syncfusion.Pdf + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the first page of the document. @@ -4869,9 +5083,12 @@ The following code example illustrates how to retrieve revocation certificate in {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Retrieve-revocation-certificate-information/.NET/Retrieve-revocation-certificate-information/Program.cs" %} -//Load an existing signed PDF document. -FileStream documentStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(documentStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get signature field. PdfLoadedSignatureField loadedSignatureField = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField; @@ -4920,6 +5137,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Load an existing signed PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -4970,6 +5191,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates + 'Load an existing signed PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -5030,9 +5255,10 @@ The following code example illustrates how to retrieve signed revision informati {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Retrieve-signed-revision-information/.NET/Retrieve-signed-revision-information/Program.cs" %} -//Load an existing PDF document. -FileStream inputStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(inputStream); +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the document revisions. PdfRevision[] revisions = document.Revisions; foreach (PdfRevision rev in revisions) @@ -5046,11 +5272,12 @@ PdfLoadedSignatureField field = document.Form.Fields[0] as PdfLoadedSignatureFie int revisionIndex = field.Revision; //Close the document. document.Close(true); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the document revisions. @@ -5071,6 +5298,8 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document. Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the document revisions. @@ -5100,9 +5329,12 @@ The following code example illustrates how to retrieve revocation certificate in {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Retrieve-revocation-certificate-information-from-digital-signature-embed-timestamp/.NET/Program.cs" %} -//Load an existing PDF document. -FileStream inputStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(inputStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + +//Load an existing PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the signature field. PdfLoadedSignatureField signatureField = document.Form.Fields[0] as PdfLoadedSignatureField; //Validates signature and gets the validation result. @@ -5116,6 +5348,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Load an existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the signature field. @@ -5131,6 +5367,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Gets the signature field. @@ -5156,15 +5396,17 @@ Utilize the **GetImages** method within the [PdfLoadedSignatureField](https://he {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Get-images-from-the-existing-signed-signature-field/.NET/Get-images-from-the-existing-signed-signature-field/Program.cs" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF file. -FileStream fileStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument ldoc = new PdfLoadedDocument(fileStream); +PdfLoadedDocument ldoc = new PdfLoadedDocument("Input.pdf"); //Get the existing signed signature field. PdfLoadedSignatureField loadedSignature = ldoc.Form.Fields[0] as PdfLoadedSignatureField; -//Get the image streams. -Stream[] imageStreams = loadedSignature.GetImages(); -for (int i = 0; i < imageStreams.Length; i++) { - File.WriteAllBytes("Output" + i.ToString() + ".jpg", (imageStreams[i] as MemoryStream).ToArray()); +//Get the image. +Image[] images = loadedSignature.GetImages(); +for (int i = 0; i < images.Length; i++) { + images[i].Save("Image" + i.ToString() + ".jpg", ImageFormat.Png); } //Close a PDF document. ldoc.Close(true); @@ -5173,6 +5415,9 @@ ldoc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF file. PdfLoadedDocument ldoc = new PdfLoadedDocument("Input.pdf"); //Get the existing signed signature field. @@ -5189,6 +5434,9 @@ ldoc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Interactive + 'Load an existing PDF file. Dim fileStream As FileStream = New FileStream("Input.pdf", FileMode.Open, FileAccess.Read) Dim ldoc As PdfLoadedDocument = New PdfLoadedDocument(fileStream) @@ -5218,6 +5466,10 @@ Effortlessly Integrate **signature and timestamp** certificates into the Documen {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Loads an existing document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the signature field @@ -5248,6 +5500,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; + //Gets the stream from the document FileStream documentStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); //Loads an existing signed PDF document @@ -5280,6 +5536,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security +Imports System.Security.Cryptography.X509Certificates + 'Loads an existing signed PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Gets the signature field From 04eb8c4a16a025abf6325d09bd80c5361b9e415f Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Wed, 8 Oct 2025 15:07:36 +0530 Subject: [PATCH 02/22] 985863-ug: Added two md files. --- .../NET/Working-with-Document-Conversions.md | 370 ++++++++++++------ .../PDF-Library/NET/Working-with-Document.md | 334 +++++++++++----- 2 files changed, 490 insertions(+), 214 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md index 5e3be7eb7..b97659453 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md @@ -89,28 +89,33 @@ For ASP.NET Core and Xamarin applications {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/Word-to-PDF/Converting-Word-to-PDF-document/.NET/Converting-Word-to-PDF-document/Program.cs" %} -// Open the file as Stream. -FileStream docStream = new FileStream(@"Template.docx", FileMode.Open, FileAccess.Read); -//Loads file stream into Word document. -WordDocument wordDocument = new WordDocument(docStream, Syncfusion.DocIO.FormatType.Automatic); -//Instantiation of DocIORenderer for Word to PDF conversion. -DocIORenderer render = new DocIORenderer(); -//Converts Word document into PDF document. -PdfDocument pdfDocument = render.ConvertToPDF(wordDocument); -//Releases all resources used by the Word document and DocIO Renderer objects. -render.Dispose(); -wordDocument.Dispose(); - -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -//Close the document. +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIORenderer; +using Syncfusion.Pdf; + +//Load an existing Word document. +WordDocument wordDocument = new WordDocument("Template.docx", FormatType.Docx); +//Initialize chart to image converter for converting charts during Word to pdf conversion. +wordDocument.ChartToImageConverter = new ChartToImageConverter(); +//Create an instance of DocToPDFConverter. +DocToPDFConverter converter = new DocToPDFConverter(); +//Convert Word document into PDF document. +PdfDocument pdfDocument = converter.ConvertToPDF(wordDocument); + +//Save the PDF file. +pdfDocument.Save("WordtoPDF.pdf"); +//Close the instance of document objects. pdfDocument.Close(true); +wordDocument.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIORenderer; +using Syncfusion.Pdf; + //Load an existing Word document. WordDocument wordDocument = new WordDocument("Template.docx", FormatType.Docx); //Initialize chart to image converter for converting charts during Word to pdf conversion. @@ -131,6 +136,10 @@ wordDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocIORenderer +Imports Syncfusion.Pdf + 'Load an existing Word document Dim wordDocument As New WordDocument("Template.docx", FormatType.Docx) 'Initialize chart to image converter for converting charts during Word to pdf conversion @@ -175,6 +184,13 @@ Essential® DocIO allows you to customize the Word to PDF conversi {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.DocIO; +using Syncfusion.DocIO.DLS; +using Syncfusion.DocToPDFConverter; +using Syncfusion.OfficeChart; +using Syncfusion.OfficeChartToImageConverter; +using Syncfusion.Pdf; + //Loads an existing Word document. WordDocument wordDocument = new WordDocument("Sample_Image.docx", FormatType.Docx); //Initialize chart to image converter for converting charts during Word to pdf conversion. @@ -203,6 +219,13 @@ wordDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.DocIO +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocToPDFConverter +Imports Syncfusion.OfficeChart +Imports Syncfusion.OfficeChartToImageConverter +Imports Syncfusion.Pdf + 'Loads an existing Word document Dim wordDocument As New WordDocument("Sample_Image.docx", FormatType.Docx) 'Initialize chart to image converter for converting charts during Word to pdf conversion @@ -250,29 +273,32 @@ The following code illustrates how to convert a workbook to PDF Document using [ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/Excel-to-PDF/Convert-workbook-to-PDF-document/.NET/Convert-workbook-to-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + using (ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; //Load the document. - FileStream excelStream = new FileStream("ExcelToPDF.xlsx", FileMode.Open, FileAccess.Read); - IWorkbook workbook = application.Workbooks.Open(excelStream); + IWorkbook workbook = application.Workbooks.Open("Sample.xlsx", ExcelOpenType.Automatic); //Initialize XlsIO renderer. XlsIORenderer renderer = new XlsIORenderer(); //Convert Excel document into PDF document. PdfDocument pdfDocument = renderer.ConvertToPDF(workbook); - //Save the PDF document to stream. - Stream stream = new FileStream("ExcelToPDF.pdf", FileMode.Create, FileAccess.ReadWrite); - pdfDocument.Save(stream); - //Dispose the stream. - excelStream.Dispose(); - stream.Dispose(); + //Save the PDF file. + pdfDocument.Save("ExcelToPDF.pdf"); } {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + using(ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; @@ -293,6 +319,10 @@ using(ExcelEngine excelEngine = new ExcelEngine()) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.XlsIO +Imports Syncfusion.XlsIORenderer + Using excelEngine As ExcelEngine = New ExcelEngine() Dim application As IApplication = excelEngine.Excel application.DefaultVersion = ExcelVersion.Excel2013 @@ -322,30 +352,36 @@ The following code shows how to convert a particular sheet to PDF Document using {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/Excel-to-PDF/Converting-a-worksheet-to-PDF-document/.NET/Converting-a-worksheet-to-PDF-document/Program.cs" %} -using (ExcelEngine excelEngine = new ExcelEngine()) +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + +Using(ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; - FileStream excelStream = new FileStream("ExcelToPDF.xlsx", FileMode.Open, FileAccess.Read); - IWorkbook workbook = application.Workbooks.Open(excelStream); - IWorksheet worksheet = workbook.Worksheets[0]; - - //Initialize XlsIO renderer. - XlsIORenderer renderer = new XlsIORenderer(); - //Convert Excel document into PDF document. - PdfDocument pdfDocument = renderer.ConvertToPDF(worksheet); - - //Saving the PDF to the MemoryStream. - Stream stream = new FileStream("ExcelToPDF.pdf", FileMode.Create, FileAccess.ReadWrite); - pdfDocument.Save(stream); - //Dispose the stream. - excelStream.Dispose(); - stream.Dispose(); + application.DefaultVersion = ExcelVersion.Excel2013; + IWorkbook workbook = application.Workbooks.Open("Sample.xlsx", ExcelOpenType.Automatic); + IWorksheet sheet = workbook.Worksheets[0]; + + //convert the sheet to PDF. + ExcelToPdfConverter converter = new ExcelToPdfConverter(sheet); + //Initialize PDF document. + PdfDocument pdfDocument= new PdfDocument(); + //Convert Excel document into PDF document. + pdfDocument = converter.Convert(); + + //Save the PDF file. + pdfDocument.Save("ExcelToPDF.pdf"); } {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + Using(ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; @@ -368,6 +404,10 @@ Using(ExcelEngine excelEngine = new ExcelEngine()) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.XlsIO +Imports Syncfusion.XlsIORenderer + Using excelEngine As ExcelEngine = New ExcelEngine() Dim application As IApplication = excelEngine.Excel application.DefaultVersion = ExcelVersion.Excel2013 @@ -399,31 +439,37 @@ The following code snippet shows how to create an individual PDF document for ea {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/Excel-to-PDF/Creating-individual-PDF-document-for-each-worksheet/.NET/Program.cs" %} -using (ExcelEngine excelEngine = new ExcelEngine()) +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + +Using(ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; - FileStream excelStream = new FileStream("ExcelToPDF.xlsx", FileMode.Open, FileAccess.Read); - IWorkbook workbook = application.Workbooks.Open(excelStream); - - //Initialize XlsIO renderer. - XlsIORenderer renderer = new XlsIORenderer(); + application.DefaultVersion = ExcelVersion.Excel2013; + IWorkbook workbook = application.Workbooks.Open("Sample.xlsx", ExcelOpenType.Automatic); + //Create a new PDF document. - PdfDocument pdfDocument = new PdfDocument(); + PdfDocument pdfDocument = new PdfDocument(); foreach (IWorksheet sheet in workbook.Worksheets) { - pdfDocument = renderer.ConvertToPDF(sheet); - + //Open the Excel document to Convert. + ExcelToPdfConverter converter = new ExcelToPdfConverter(sheet); + pdfDocument = converter.Convert(); + //Save the PDF file. - Stream stream = new FileStream(sheet.Name+".pdf", FileMode.Create, FileAccess.ReadWrite); - pdfDocument.Save(stream); - stream.Dispose(); + pdfDocument.Save(sheet.Name +".pdf"); + converter.Dispose(); } - excelStream.Dispose(); } {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + Using(ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; @@ -448,6 +494,10 @@ Using(ExcelEngine excelEngine = new ExcelEngine()) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.XlsIO +Imports Syncfusion.XlsIORenderer + Using excelEngine As ExcelEngine = New ExcelEngine() Dim application As IApplication = excelEngine.Excel application.DefaultVersion = ExcelVersion.Excel2013 @@ -480,29 +530,39 @@ To preserve the charts during Excel to PDF conversion, you should initialize the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/Excel-to-PDF/Converting-Excel-with-chart-to-PDF-document/.NET/Converting-Excel-with-chart-to-PDF-document/Program.cs" %} -using (ExcelEngine excelEngine = new ExcelEngine()) +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + +Using(ExcelEngine excelEngine = new ExcelEngine()) { - IApplication application = excelEngine.Excel; - //Initialize XlsIO renderer. - XlsIORenderer renderer = new XlsIORenderer(); - //Load the document as stream. - FileStream excelStream = new FileStream("chart.xlsx", FileMode.Open, FileAccess.Read); - IWorkbook workbook = application.Workbooks.Open(excelStream); + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Excel2013; + //Instantiating the ChartToImageConverter and assigning the ChartToImageConverter instance of XlsIO application. + application.ChartToImageConverter = new ChartToImageConverter(); + //Tuning chart image quality. + application.ChartToImageConverter.ScalingMode = ScalingMode.Best; + IWorkbook workbook = application.Workbooks.Open("chart.xlsx"); + IWorksheet worksheet = workbook.Worksheets[0]; - //Convert Excel document with charts into PDF document. - PdfDocument pdfDocument = renderer.ConvertToPDF(workbook); + //Open the Excel document to Convert. + ExcelToPdfConverter converter = new ExcelToPdfConverter(workbook); - //Save the PDF document. - Stream stream = new FileStream("ExcelToPDF.pdf", FileMode.Create, FileAccess.ReadWrite); - pdfDocument.Save(stream); - //Dispose the stream. - excelStream.Dispose(); - stream.Dispose(); + //Initialize PDF document. + PdfDocument pdfDocument = new PdfDocument(); + //Convert Excel document into PDF document. + pdfDocument = converter.Convert(); + //Save the PDF file. + pdfDocument.Save("ExcelToPDF.pdf"); } {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.XlsIO; +using Syncfusion.XlsIORenderer; + Using(ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; @@ -529,6 +589,10 @@ Using(ExcelEngine excelEngine = new ExcelEngine()) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.XlsIO +Imports Syncfusion.XlsIORenderer + Using excelEngine As ExcelEngine = New ExcelEngine() Dim application As IApplication = excelEngine.Excel application.DefaultVersion = ExcelVersion.Excel2013 @@ -640,31 +704,33 @@ For ASP.NET Core and Xamarin applications {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/RTF-to-PDF/Convert-RTF-to-PDF-document/.NET/Convert-RTF-to-PDF-document/Program.cs" %} -//Open the file as Stream -FileStream docStream = new FileStream(@"Input.rtf", FileMode.Open, FileAccess.Read); -//Loads file stream into Word document -WordDocument wordDocument = new WordDocument(docStream, Syncfusion.DocIO.FormatType.Automatic); -//Instantiation of DocIORenderer for Word to PDF conversion -DocIORenderer render = new DocIORenderer(); -//Converts Word document into PDF document -PdfDocument pdfDocument = render.ConvertToPDF(wordDocument); - -//Releases all resources used by the Word document and DocIO Renderer objects -render.Dispose(); -wordDocument.Dispose(); - -//Save the document into stream -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -//Close the document +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIORenderer; +using Syncfusion.Pdf; + +//Load an existing RTF document. +WordDocument rtfDocument = new WordDocument("Input.rtf"); +//Create an instance of DocToPDFConverter. +DocToPDFConverter converter = new DocToPDFConverter(); +//Convert Word document into PDF document. +PdfDocument pdfDocument = converter.ConvertToPDF(rtfDocument); + +//Save the PDF file. +pdfDocument.Save("RTFToPDF.pdf"); +//Close the instance of document objects. pdfDocument.Close(true); +rtfDocument.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIORenderer; +using Syncfusion.Pdf; + //Load an existing RTF document. -WordDocument rtfDocument = new WordDocument(inputFileName); +WordDocument rtfDocument = new WordDocument("Input.rtf"); //Create an instance of DocToPDFConverter. DocToPDFConverter converter = new DocToPDFConverter(); //Convert Word document into PDF document. @@ -681,6 +747,10 @@ rtfDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocIORenderer +Imports Syncfusion.Pdf + 'Load an existing Word document Dim rtfDocument As New WordDocument(inputFileName) 'Create an instance of DocToPDFConverter @@ -718,6 +788,12 @@ Essential® DocIO allows you to customize the RTF to PDF conversio {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.DocIO.DLS; +using Syncfusion.DocToPDFConverter; +using Syncfusion.Pdf; +using System; +using System.Collections.Generic; + //Loads an existing Word document WordDocument rtfDocument = new WordDocument(inputFileName); //create an instance of DocToPDFConverter - responsible for Word to PDF conversion @@ -741,6 +817,12 @@ rtfDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocToPDFConverter +Imports Syncfusion.Pdf +Imports System +Imports System.Collections.Generic + 'Loads an existing Word document Dim rtfDocument As New WordDocument(inputFileName) 'create an instance of DocToPDFConverter - responsible for Word to PDF conversion @@ -777,26 +859,28 @@ The code snippet to illustrate the same is given below. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/TIFF-to-PDF/Converting-multipage-TIFF-to-PDF-document/.NET/Converting-multipage-TIFF-to-PDF-document/Program.cs" %} -//Create a new PDF document -PdfDocument document = new PdfDocument(); +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; -//Load the multi frame TIFF image from the disk -FileStream imageStream = new FileStream("image.tiff", FileMode.Open, FileAccess.Read); -PdfTiffImage tiffImage = new PdfTiffImage(imageStream); +//Create a PDF document +PdfDocument pdfDocument = new PdfDocument(); + +//Load multi frame TIFF image +PdfBitmap tiffImage = new PdfBitmap("image.tiff"); //Get the frame count int frameCount = tiffImage.FrameCount; //Access each frame and draw into the page for (int i = 0; i < frameCount; i++) { + tiffImage.ActiveFrame = i; //Add a section to the PDF document - PdfSection section = document.Sections.Add(); + PdfSection section = pdfDocument.Sections.Add(); //Set page margins section.PageSettings.Margins.All = 0; - tiffImage.ActiveFrame = i; //Create a PDF unit converter instance PdfUnitConvertor converter = new PdfUnitConvertor(); //Convert to point - Syncfusion.Drawing.SizeF size = converter.ConvertFromPixels(tiffImage.PhysicalDimension, PdfGraphicsUnit.Point); + SizeF size = converter.ConvertFromPixels(tiffImage.PhysicalDimension, PdfGraphicsUnit.Point); //Set page orientation section.PageSettings.Orientation = (size.Width > size.Height) ? PdfPageOrientation.Landscape : PdfPageOrientation.Portrait; //Set page size @@ -804,20 +888,20 @@ for (int i = 0; i < frameCount; i++) //Add a page to the section PdfPage page = section.Pages.Add(); //Draw TIFF image into the PDF page - page.Graphics.DrawImage(tiffImage, Syncfusion.Drawing.PointF.Empty, size); + page.Graphics.DrawImage(tiffImage, PointF.Empty, size); } -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//Close the document -document.Close(true); +//Save and close the document +pdfDocument.Save("Sample.pdf"); +pdfDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; + //Create a PDF document PdfDocument pdfDocument = new PdfDocument(); @@ -855,6 +939,9 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf + 'Create a PDF document Dim pdfDocument As New PdfDocument() @@ -910,6 +997,11 @@ Refer the below code snippet to draw a single frame monochrome TIFF image with J {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System; +using System.Collections.Generic; + //Create a PDF document PdfDocument pdfDocument = new PdfDocument(); //Add a page @@ -930,6 +1022,11 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf +Imports System +Imports System.Collections.Generic + 'Create a PDF document Dim pdfDocument As New PdfDocument() 'Add a page @@ -966,28 +1063,29 @@ The below code illustrates how to convert XPS to PDF. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Document%20conversion/Converting-XPS-to-PDF-document/.NET/Converting-XPS-to-PDF-document/Program.cs" %} -//Initialize XPS to PDF converter. +using Syncfusion.Pdf; +using Syncfusion.XPS; + +//Create converter class XPSToPdfConverter converter = new XPSToPdfConverter(); -//Open the XPS file as stream. -FileStream fileStream = new FileStream("Input.xps", FileMode.Open, FileAccess.ReadWrite); -//Convert the XPS to PDF. -PdfDocument document = converter.Convert(fileStream); - -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -document.Save(stream); -//Close the documents. +//Convert the XPS to PDF +PdfDocument document = converter.Convert("Input.xps"); + +//Save and close the document +document.Save("Sample.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.XPS; + //Create converter class XPSToPdfConverter converter = new XPSToPdfConverter(); //Convert the XPS to PDF -PdfDocument document = converter.Convert(xpsFileName); +PdfDocument document = converter.Convert("Input.xps"); //Save and close the document document.Save("Sample.pdf"); @@ -997,10 +1095,13 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.XPS + 'Create converter class Dim converter As New XPSToPdfConverter() 'Convert the XPS to PDF -Dim document As PdfDocument = converter.Convert(xpsFileName) +Dim document As PdfDocument = converter.Convert("Input.xps") 'Save and close the document document.Save("Sample.pdf") @@ -1220,6 +1321,9 @@ The following code snippet illustrates how to convert PDF page into image using {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.PdfToImageConverter; +using System.IO; + //Initialize PDF to Image converter. PdfToImageConverter imageConverter = new PdfToImageConverter(); //Load the PDF document as a stream @@ -1227,13 +1331,16 @@ FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.R imageConverter.Load(inputStream); //Convert PDF to Image. Stream outputStream = imageConverter.Convert(0, false, false); -MemoryStream stream = outputStream as MemoryStream; -return File(stream.ToArray(), System.Net.Mime.MediaTypeNames.Image.Jpeg, "sample.jpeg"); +Bitmap image = new Bitmap(outputStream); +image.Save("sample.png"); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.PdfToImageConverter; +using System.IO; + //Initialize PDF to Image converter. PdfToImageConverter imageConverter = new PdfToImageConverter(); //Load the PDF document as a stream @@ -1248,6 +1355,9 @@ image.Save("sample.png"); {% endhighlight %} {% highlight vb tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.PdfToImageConverter +Imports System.IO + 'Initialize PDF to Image converter. Dim imageConverter As PdfToImageConverter = New PdfToImageConverter() 'Load the PDF document as a stream @@ -1279,6 +1389,9 @@ The [HTML to PDF converter library](https://www.syncfusion.com/document-processi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/HTML%20to%20PDF/Blink/Convert-website-URL-to-PDF-document/.NET/Convert-website-URL-to-PDF-document/Program.cs, 300" %} +using Syncfusion.HtmlConverter; +using Syncfusion.Pdf; + //Initialize HTML to PDF converter. HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(); //Convert URL to PDF @@ -1292,6 +1405,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.HtmlConverter; +using Syncfusion.Pdf; + //Initialize HTML to PDF converter. HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(); //Convert URL to PDF @@ -1305,6 +1421,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.HtmlConverter +Imports Syncfusion.Pdf + ' Initialize HTML to PDF converter Dim htmlConverter As New HtmlToPdfConverter() @@ -1330,20 +1449,24 @@ The [HTML to PDF converter library](https://www.syncfusion.com/document-processi {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.HtmlConverter; +using Syncfusion.Pdf; + //Initialize HTML to PDF converter HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(); -//Convert URL to PDF document. +//Convert a SVG file to PDF with HTML converter PdfDocument document = htmlConverter.Convert("inputSVG.svg"); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document +//Save and close the PDF document +document.Save("SVGToPDF.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.HtmlConverter; +using Syncfusion.Pdf; + //Initialize HTML to PDF converter HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(); //Convert a SVG file to PDF with HTML converter @@ -1356,6 +1479,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.HtmlConverter +Imports Syncfusion.Pdf + 'Initialize HTML to PDF converter Dim htmlConverter As HtmlToPdfConverter = New HtmlToPdfConverter() 'Convert a SVG file to PDF with HTML converter @@ -1366,4 +1492,4 @@ document.Close(True) {% endhighlight %} -{% endtabs %} + {% endtabs %} diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Document.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Document.md index 2557aa4ba..75759e9e7 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Document.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Document.md @@ -17,6 +17,9 @@ You can choose the standard or custom page size when you add a page to the PDF d {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create-a-PDF-document-with-standard-page-size/.NET/Create-a-PDF-document-with-standard-page-size/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the page size. @@ -31,10 +34,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -42,6 +43,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the page size. @@ -65,6 +69,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf + 'Create a new PDF document. Dim document As New PdfDocument() 'Set the page size. @@ -96,6 +103,9 @@ You can create a PDF document with custom page size in [PdfPageSettings Size](ht {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create-a-PDF-document-with-custom-page-size/.NET/Create-a-PDF-document-with-custom-page-size/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the custom page size. @@ -110,10 +120,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -121,6 +129,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the custom page size. @@ -144,6 +155,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf + 'Create a new PDF document. Dim document As New PdfDocument() 'Set the custom page size. @@ -175,6 +189,9 @@ You can change page orientation from portrait to landscape, through [PdfPageOrie {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Change-the-page-orientation-from-portrait-to-landscape/.NET/Change-the-page-orientation-from-portrait-to-landscape/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the page size. @@ -191,10 +208,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -202,6 +217,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the page size. @@ -227,6 +245,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf + 'Create a new PDF document. Dim document As New PdfDocument() ' Set the page size. @@ -262,6 +283,10 @@ You can also change orientation by setting the rotation angle using [PdfPageRota {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Rotate_PDF_based_on_angle/.NET/Rotate_PDF_based_on_angle/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the page size. @@ -278,10 +303,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -289,6 +312,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); // Set the page size. @@ -314,6 +341,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Set the page size. @@ -349,6 +380,10 @@ PDF sections are parts of the PDF document, which may contain one or more pages {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create_sections_in_PDF_document/.NET/Create_sections_in_PDF_document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a section to PDF document. @@ -363,10 +398,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -374,6 +407,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a section to PDF document. @@ -397,6 +434,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a section to PDF document. @@ -436,6 +477,8 @@ The following code snippet illustrates how to print a PDF document. {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.PdfViewer; + PdfDocumentView viewer = new PdfDocumentView(); //Load the PDF document viewer.Load("Input.pdf"); @@ -456,6 +499,8 @@ viewer.Dispose(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.PdfViewer + Dim viewer As New PdfDocumentView() 'Load the PDF document viewer.Load("Input.pdf") @@ -486,6 +531,10 @@ The following code snippet illustrates how to set PDF document information. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Add_PDF_document_properties/.NET/Add_PDF_document_properties/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -506,10 +555,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -517,6 +564,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -546,6 +597,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() @@ -583,9 +638,10 @@ To read and modify the document [DocumentInformation](https://help.syncfusion.co {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Change_existing_PDF_properties/.NET/Change_existing_PDF_properties/Program.cs" %} -//Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf.Parsing; + +//Load a existing PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Modify document information. document.DocumentInformation.Author = "Syncfusion"; @@ -595,10 +651,8 @@ document.DocumentInformation.Keywords = "PDF"; document.DocumentInformation.Subject = "Document information DEMO"; document.DocumentInformation.Title = "Essential PDF Sample"; -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -606,7 +660,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -//Create a new PDF document. +using Syncfusion.Pdf.Parsing; + +//Load a existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Modify document information. @@ -626,7 +682,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf.Parsing + +'Load a existing PDF document Dim document As New PdfLoadedDocument("Input.pdf") 'Modify document information. @@ -656,9 +714,10 @@ To remove specific details from the existing document information, use the **Rem {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Remove-specific-keys-from-the-existing-document-information/.NET/Program.cs" %} +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Remove the document information properties. document.DocumentInformation.Remove("Title"); @@ -670,10 +729,8 @@ document.DocumentInformation.Remove("Producer"); document.DocumentInformation.Remove("ModDate"); document.DocumentInformation.Remove("CreationDate"); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -681,6 +738,8 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -703,6 +762,8 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document. Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -735,19 +796,18 @@ The Essential® PDF supports incremental update for PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Perform-incremental-update-for-the-PDF-document/.NET/Perform-incremental-update-for-the-PDF-document/Program.cs" %} -//Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Disable the incremental update loadedDocument.FileStructure.IncrementalUpdate = false; //Set the compression level loadedDocument.Compression = PdfCompressionLevel.Best; -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); @@ -755,6 +815,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -772,6 +835,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf + 'Load the PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") @@ -801,6 +867,10 @@ You can hide the menu bar and toolbar by enabling [HideMenubar](https://help.syn {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create_PDF_with_viewer_preference/.NET/Create_PDF_with_viewer_preference/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -819,10 +889,8 @@ document.ViewerPreferences.HideToolbar = true; //Shows user interface elements in the document's window (such as scroll bars and navigation controls). document.ViewerPreferences.HideWindowUI = false; -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -830,6 +898,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -857,6 +929,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf +Imports System.Drawing + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -892,6 +968,9 @@ You can also allow the reader application to initially display the bookmarks, th {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create-PDF-with-display-of-specific-panel/.NET/Create-PDF-with-display-of-specific-panel/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -906,9 +985,8 @@ graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Dra //Show the attachments panel. document.ViewerPreferences.PageMode = PdfPageMode.UseAttachments; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -916,6 +994,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -939,6 +1020,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -978,6 +1062,10 @@ The following code sample illustrates how to create a PDF document in multi-thre {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + IEnumerable works = Enumerable.Range(0, 100); Parallel.ForEach(works, index => GeneratePDF(index)); @@ -1010,6 +1098,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + Dim works As IEnumerable(Of Integer) = Enumerable.Range(0, 100) Parallel.ForEach(works, Sub(index) GeneratePDF(index)) Private Sub GeneratePDF(ByVal index As Integer) @@ -1046,6 +1138,11 @@ To modify the existing PDF document in multi-threading environment [EnableThread {% tabs %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + IEnumerable works = Enumerable.Range(0, 100); Parallel.ForEach(works, index => GeneratePDF(index)); @@ -1075,6 +1172,11 @@ doc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + Dim works As IEnumerable(Of Integer) = Enumerable.Range(0, 100) Parallel.ForEach(works, Sub(index) GeneratePDF(index)) Private Sub GeneratePDF(ByVal index As Integer) @@ -1115,6 +1217,10 @@ The following code snippet explains how to have uniform resource naming in a PDF {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create_PDF_with_Uniform_Resouce_Naming/.NET/Create_PDF_with_Uniform_Resouce_Naming/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Disable unique resource naming PdfDocument.EnableUniqueResourceNaming = false; @@ -1139,16 +1245,19 @@ PdfFont font3 = new PdfCjkStandardFont(PdfCjkFontFamily.HeiseiMinchoW3, 20); //Draw the text graphics.DrawString("こんにちは世界", font3, PdfBrushes.Blue, new PointF(50, 150)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -//Close the document +//Save the document. +doc.Save("Output.pdf"); +//Close the document. doc.Close(true); {%endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Disable unique resource naming PdfDocument.EnableUniqueResourceNaming = false; @@ -1180,6 +1289,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Disable unique resource naming PdfDocument.EnableUniqueResourceNaming = False @@ -1222,9 +1335,11 @@ Enabling this property will optimize the memory but difference in time occurs ba {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Manage_memory_while_appending_PDF_document/.NET/Manage_memory_while_appending_PDF_document/Program.cs" %} -//Load an existing PDF document -FileStream docStream = new FileStream("file1.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create a new PDF document PdfDocument document = new PdfDocument(); @@ -1234,17 +1349,18 @@ document.EnableMemoryOptimization = true; //Append the document with source document document.Append(loadedDocument); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the documents -document.Close(true); +//Save the document. +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("file1.pdf"); @@ -1265,6 +1381,10 @@ loadedDocument.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As New PdfLoadedDocument("file1.pdf") @@ -1293,10 +1413,13 @@ Syncfusion PDF Library provides support to check whether the existing PDF docume {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Find_corrupted_PDF_document/.NET/Find_corrupted_PDF_document/Program.cs" %} + +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using System.Text; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Create a new instance for the PDF analyzer -PdfDocumentAnalyzer analyzer = new PdfDocumentAnalyzer(docStream); +PdfDocumentAnalyzer analyzer = new PdfDocumentAnalyzer("Input.pdf"); //Get the syntax errors SyntaxAnalyzerResult result = analyzer.AnalyzeSyntax(); @@ -1321,6 +1444,10 @@ analyzer.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using System.Text; + //Create a new instance for the PDF analyzer PdfDocumentAnalyzer analyzer = new PdfDocumentAnalyzer("Input.pdf"); @@ -1347,6 +1474,10 @@ analyzer.Close(); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Create a new instance for the PDF analyzer Dim analyzer As PdfDocumentAnalyzer = New PdfDocumentAnalyzer("Input.pdf") @@ -1379,6 +1510,9 @@ Refer to the following code sample to achieve the same, {% tabs %} {% highlight c# tabtitle="C# [Windows-specific]" %} + +using Syncfusion.Pdf.Parsing; + //Load an existing document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); //Embed all the non-embedded fonts. @@ -1393,6 +1527,9 @@ loadedDocument.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf.Parsing + //Load an existing document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") // Embed all the non-embedded fonts. @@ -1415,6 +1552,8 @@ The Essential® PDF allows you to get or set the [BaseUri](https:/ {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Add_BaseUri_in_the_PDF_document/.NET/Add_BaseUri_in_the_PDF_document/Program.cs" %} +using Syncfusion.Pdf; + //Create a new instance of the PdfDocument class. PdfDocument document = new PdfDocument(); //Set the Base URI. @@ -1423,14 +1562,15 @@ document.BaseUri = "https://www.syncfusion.com/"; PdfPage page = document.Pages.Add(); //Save the document. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +document.Save("Output.pdf"); //Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; + //Create a new instance of the PdfDocument class. PdfDocument document = new PdfDocument(); //Set the Base URI. @@ -1446,6 +1586,9 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf.Parsing + 'Create a new instance of the PdfDocument class. Dim document As PdfDocument = New PdfDocument() 'Set the Base URI. @@ -1467,17 +1610,21 @@ The following code example illustrates the retrieval of [BaseUri](https://help.s {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Retrieve_BaseUri_from_the_existing_PDF/.NET/Retrieve_BaseUri_from_the_existing_PDF/Program.cs" %} -//Load the PDF document as file stream. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Load a PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document. +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the Base URI. string baseUri = document.BaseUri; //Close the document. document.Close(true); + {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + +using Syncfusion.Pdf.Parsing; + //Load an existing document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -1488,6 +1635,9 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf.Parsing + 'Load an existing document. Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the Base URI. @@ -1507,6 +1657,10 @@ Essential® PDF enables you to track the save progress through the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Document/Create-a-PDF-document-with-save-progress/.NET/PDF-document-with-save-progress/Program.cs" %} + using Syncfusion.Pdf.Graphics; + using Syncfusion.Pdf; + using Syncfusion.Drawing; + // Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -1529,13 +1683,8 @@ Essential® PDF enables you to track the save progress through the // Subscribe to the SaveProgress event. document.SaveProgress += new PdfDocument.ProgressEventHandler(document_SaveProgress); - // Create a file stream to save the PDF document. - using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) - { - // Save the PDF document to the file stream. - document.Save(outputFileStream); - } - + //Save the document. + document.Save("Output.pdf"); // Close the document. document.Close(true); @@ -1551,6 +1700,10 @@ Essential® PDF enables you to track the save progress through the {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf.Graphics; + using Syncfusion.Pdf; + using System.Drawing; + // Create a new PDF document. PdfDocument document = new PdfDocument(); // Add multiple pages to the document. @@ -1567,12 +1720,8 @@ Essential® PDF enables you to track the save progress through the } // Subscribe to the SaveProgress event. document.SaveProgress += new PdfDocument.ProgressEventHandler(document_SaveProgress); - // Create a file stream to save the PDF document. - using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"../../../Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) - { - // Save the PDF document to the file stream. - document.Save(outputFileStream); - } + //Save the document. + document.Save("Output.pdf"); // Close the document. document.Close(true); @@ -1587,6 +1736,10 @@ Essential® PDF enables you to track the save progress through the {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + Imports Syncfusion.Pdf.Graphics + Imports Syncfusion.Pdf + Imports Syncfusion.Drawing + Module Program Sub Main() ' Create a new PDF document. @@ -1604,11 +1757,8 @@ Essential® PDF enables you to track the save progress through the Next ' Subscribe to the SaveProgress event. AddHandler document.SaveProgress, AddressOf document_SaveProgress - ' Create a file stream to save the PDF document. - Using outputFileStream As New FileStream(Path.GetFullPath("../../../Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite) - ' Save the PDF document to the file stream. - document.Save(outputFileStream) - End Using + ' Save the document. + document.Save("Output.pdf") ' Close the document. document.Close(True) End Sub From 8b5061c73938863d27347cc07b1d7daeff775c03 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Wed, 8 Oct 2025 18:31:40 +0530 Subject: [PATCH 03/22] 985863-ug: Modified 3 md files. --- .../NET/Working-with-Flow-Layout.md | 76 +++++++++--- .../NET/Working-with-Headers-and-Footers.md | 35 ++++-- .../NET/Working-with-HyperLinks.md | 114 ++++++++++++++---- 3 files changed, 179 insertions(+), 46 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Flow-Layout.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Flow-Layout.md index 5a5e0eb6d..3bceda99c 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Flow-Layout.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Flow-Layout.md @@ -90,11 +90,11 @@ PdfDocument pdfDocument = render.ConvertToPDF(wordDocument); render.Dispose(); wordDocument.Dispose(); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -//Close the documents. +//Save and close the PDF document. +pdfDocument.Save("Output.pdf"); pdfDocument.Close(true); +//Close the document. +wordDocument.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} @@ -180,6 +180,11 @@ You can create PDF document with text and image using the following code snippet {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" %} + +using Syncfusion.Pdf; +using Syncfusion.DocIO.DLS; +using Syncfusion.DocToPDFConverter; + //A new document is created. WordDocument document = new WordDocument(); //Adding a new section to the document. @@ -230,15 +235,18 @@ PdfDocument pdfDocument = render.ConvertToPDF(document); render.Dispose(); document.Dispose(); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -//Close the documents. +//Saves the PDF file. +pdfDocument.Save("Sample.pdf"); pdfDocument.Close(true); +document.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.DocIO.DLS; +using Syncfusion.DocToPDFConverter; + //A new document is created. WordDocument document = new WordDocument(); //Adding a new section to the document. @@ -293,6 +301,11 @@ document.Close(); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocToPDFConverter +Imports Syncfusion.Pdf + 'A new document is created Dim document As New WordDocument() 'Adding a new section to the document @@ -355,6 +368,11 @@ You can create PDF document with simple table using the following code snippet. {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" %} + +using Syncfusion.Pdf; +using Syncfusion.DocIO.DLS; +using Syncfusion.DocToPDFConverter; + //Creates a new Word document. WordDocument wordDocument = new WordDocument(); //Adding a new section to the document. @@ -424,15 +442,19 @@ PdfDocument pdfDocument = render.ConvertToPDF(wordDocument); render.Dispose(); wordDocument.Dispose(); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -//Close the documents. +//Save and close the PDF document. +pdfDocument.Save("Output.pdf"); pdfDocument.Close(true); +//Close the document. +wordDocument.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.DocIO.DLS; +using Syncfusion.DocToPDFConverter; + //Creates a new Word document. WordDocument wordDocument = new WordDocument(); //Adding a new section to the document. @@ -508,6 +530,11 @@ wordDocument.Close(); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocToPDFConverter +Imports Syncfusion.Pdf + 'Creates a new Word document Dim wordDocument As New WordDocument() 'Adding a new section to the document @@ -593,7 +620,13 @@ Syncfusion Essential® PDF supports creating a PDF document with f The following code snippet explains how to create a PDF document with image, paragraph text, header text, a line below the header text, and a table using flow model. {% tabs %} -{% highlight c# tabtitle="C#" %} +{% highlight c# tabtitle="C#" [Cross-platform] %} + +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Grid; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -650,15 +683,20 @@ grid.ApplyBuiltinStyle(PdfGridBuiltinStyle.GridTable5DarkAccent5); //Draw the table in page, below the line with a height gap of 20. grid.Draw(page, new PointF(0, layoutResult.Bounds.Bottom + 20)); -//Saving the PDF to the MemoryStream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document. +document.Save("Output.pdf"); //Close the instance of PdfDocument. document.Close(true); + {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Grid; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -722,6 +760,12 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Grid + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Headers-and-Footers.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Headers-and-Footers.md index dd22c7e57..ad0b75ad9 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Headers-and-Footers.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Headers-and-Footers.md @@ -22,6 +22,10 @@ The below code snippet explains how to draw the page numbers in footer using aut {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Header%20and%20Footer/Adding-an-automatic-field-in-header-and-footer/.NET/Adding-an-automatic-field-in-header-and-footer/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document @@ -52,16 +56,18 @@ compositeField.Draw(footer.Graphics, new PointF(470, 40)); //Add the footer template at the bottom. pdfDocument.Template.Bottom = footer; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -//Closes the document. +//Save and close the document. +pdfDocument.Save("Output.pdf"); pdfDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document @@ -98,6 +104,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim pdfDocument As New PdfDocument() 'Add a page to the PDF document. @@ -146,6 +156,10 @@ The example below illustrates how to implement a dynamic footer that updates uni {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Header%20and%20Footer/Adding-dynamic-headers-and-footers-in-PDF/.NET/Adding-dynamic-headers-and-footers-in-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -213,10 +227,7 @@ PdfPage firstPage = document.Pages.Add(); textElement.Draw(firstPage, new PointF(0, headerHeight)); // Save and close the document. -using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Output.pdf"), FileMode.Create, FileAccess.Write)) -{ - document.Save(outputFileStream); -} +document.Save("Output.pdf"); document.Close(true); // Add header and footer to every page. @@ -249,6 +260,10 @@ static void PageAddedHandler(object sender, PageAddedEventArgs e) {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -349,6 +364,10 @@ static void PageAddedHandler(object sender, PageAddedEventArgs e) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + ' Create a new PDF document. Dim document As New PdfDocument() diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md index 2a18cf994..ee5922abf 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md @@ -11,7 +11,7 @@ In PDF, hyperlinks can be added to allow the users to navigate to another part o ## Working with Web navigation -You can navigate to specified URL from a PDF document by using the [PdfTextWebLink](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Interactive.PdfTextWebLink.html) class. +You can navigate to specified URL from a PDF document by using the [PdfTextWebLink](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Interactive.PdfTextWebLink.html) class. Please refer the below code snippet for navigating to the web page. @@ -19,6 +19,11 @@ Please refer the below code snippet for navigating to the web page. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Hyperlinks/Navigate-to-specific-URL-from-a-PDF-document/.NET/Navigate-to-specific-URL-from-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -37,9 +42,8 @@ textLink.Font = font; //Draw the hyperlink in PDF page. textLink.DrawTextWebLink(page, new PointF(10, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -47,6 +51,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -74,6 +83,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -109,9 +122,14 @@ To add a web hyperlink to an existing document, please refer the below code snip {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Hyperlinks/Add-a-web-hyperlink-to-an-existing-PDF-document/.NET/Add-a-web-hyperlink-to-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page. PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Create the font. @@ -128,9 +146,8 @@ textLink.Font = font; //Draw the hyperlink in loaded page graphics. textLink.DrawTextWebLink(loadedPage.Graphics, new PointF(10, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); @@ -138,6 +155,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument(@"Filename.pdf"); //Load the page. @@ -165,6 +188,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document. Dim loadedDocument As New PdfLoadedDocument("fileName.pdf") 'Load the page. @@ -202,6 +230,11 @@ To allow the users to navigate to any other part of the same document, [PdfDocum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Hyperlinks/Add-the-hyperlink-for-internal-document-navigation/.NET/Add-the-hyperlink-for-internal-document-navigation/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Create a new page. @@ -228,9 +261,8 @@ documentLinkAnnotation.Destination.Zoom = 5; //Add this annotation to a new page. page.Annotations.Add(documentLinkAnnotation); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -238,6 +270,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Create a new page. @@ -273,6 +310,10 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Create a new page. @@ -316,9 +357,14 @@ To add a [PdfDocumentLinkAnnotation](https://help.syncfusion.com/cr/document-pro {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Hyperlinks/Internal-document-navigation-to-an-existing-PDF/.NET/Internal-document-navigation-to-an-existing-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("fileName.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page. PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Create a new rectangle. @@ -337,9 +383,8 @@ documentLinkAnnotation.Destination.Location = new PointF(10, 0); //Add this annotation to respective page. loadedPage.Annotations.Add(documentLinkAnnotation); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); @@ -347,6 +392,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument(@"fileName.pdf"); //Load the page. @@ -376,6 +427,11 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document. Dim loadedDocument As New PdfLoadedDocument("fileName.pdf") 'Load the page. @@ -417,6 +473,9 @@ Please refer the below code snippet for navigating to external documents. {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create the PDF document. PdfDocument document = new PdfDocument(); //Creates a new page. @@ -429,9 +488,8 @@ PdfFileLinkAnnotation fileLinkAnnotation = new PdfFileLinkAnnotation(bounds, fil //Add this annotation to a page. page.Annotations.Add(fileLinkAnnotation); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -439,6 +497,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create the PDF document. PdfDocument document = new PdfDocument(); //Creates a new page. @@ -460,6 +521,9 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + 'Create the PDF document Dim document As New PdfDocument() 'Creates a new page and adds it as the last page of the document @@ -495,7 +559,10 @@ To open a file in relative path, the [PdfLaunchAction](https://help.syncfusion.c {% endhighlight %} -{% highlight c# tabtitle="C#" %} +{% highlight c# tabtitle="C#" [Windows-specific] %} + +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; //Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -520,7 +587,10 @@ document.Close(); {% endhighlight %} -{% highlight vb.net tabtitle="VB.NET" %} +{% highlight vb.net tabtitle="VB.NET" [Windows-specific] %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive 'Create a new PDF document Dim document As New PdfDocument() From 1bb765bb9fffb842b0d213e8bb5ac0c901b309ab Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Thu, 9 Oct 2025 13:30:01 +0530 Subject: [PATCH 04/22] 985863-ug: Updated four files. --- .../NET/Working-with-Image-Extraction.md | 54 +++++- .../PDF-Library/NET/Working-with-Images.md | 177 +++++++++++++----- .../NET/Working-with-JavaScript.md | 83 ++++---- .../PDF-Library/NET/Working-with-Layers.md | 174 ++++++----------- 4 files changed, 272 insertions(+), 216 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Image-Extraction.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Image-Extraction.md index c1e9a3cf1..ee399f432 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Image-Extraction.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Image-Extraction.md @@ -15,9 +15,12 @@ Refer to the following code snippet to extract the images from a PDF page. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Image%20Extraction/Extract-images-from-a-PDF-pages/.NET/Extract-images-from-a-PDF-pages/Program.cs" %} -//Load an existing PDF -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Exporting; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page PdfPageBase pageBase = loadedDocument.Pages[0]; @@ -30,8 +33,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Exporting; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page PdfPageBase pageBase = loadedDocument.Pages[0]; @@ -44,8 +51,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Exporting +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the first page Dim pageBase As PdfPageBase = loadedDocument.Pages(0) @@ -72,9 +83,13 @@ Refer to the following code snippet to extract the image info from a PDF page. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Image%20Extraction/Extract-the-image-info-from-a-PDF-page/.NET/Extract-the-image-info-from-a-PDF-page/Program.cs" %} -//Load an existing PDF -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Exporting; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page PdfPageBase pageBase = loadedDocument.Pages[0]; @@ -87,8 +102,13 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Exporting; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page PdfPageBase pageBase = loadedDocument.Pages[0]; @@ -101,8 +121,13 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Exporting +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the first page Dim pageBase As PdfPageBase = loadedDocument.Pages(0) @@ -125,6 +150,9 @@ The following code example illustrates how to extract images from an entire PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Image%20Extraction/Extract-images-from-PDF-documents/.NET/Extract-images-from-PDF-documents/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using System.IO; + //Get stream from an existing PDF document. FileStream inputStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); //Initialize the PDF document extractor. @@ -144,6 +172,9 @@ documentExtractor.Dispose(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using System.IO; + //Get stream from an existing PDF document. FileStream inputStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); //Initialize the PDF document extractor. @@ -163,6 +194,9 @@ documentExtractor.Dispose(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports System.IO + 'Get stream from an existing PDF document. Dim inputStream As FileStream = New FileStream("Input.pdf", FileMode.Open, FileAccess.Read) 'Initialize the PDF document extractor. diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Images.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Images.md index 33c5f9f79..38ca465a8 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Images.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Images.md @@ -34,6 +34,9 @@ The following code snippet shows how to add a file from disk to the PDF document {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Insert-image-in-a-new-PDF-document/.NET/Insert-image-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -47,10 +50,8 @@ PdfBitmap image = new PdfBitmap(imageStream); //Draw the image graphics.DrawImage(image, 0, 0); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); +//Save the document +doc.Save("Output.pdf"); //Close the document doc.Close(true); @@ -58,6 +59,9 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -79,6 +83,9 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim doc As New PdfDocument() 'Add a page to the document @@ -110,9 +117,12 @@ You can also add images into an existing PDF document using the below code snipp {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Insert-image-in-an-existing-PDF-document/.NET/Insert-image-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument doc = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Get first page from document PdfLoadedPage page = doc.Pages[0] as PdfLoadedPage; @@ -124,10 +134,8 @@ PdfBitmap image = new PdfBitmap(imageStream); //Draw the image graphics.DrawImage(image, 0, 0); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); +//Save the document +doc.Save("Output.pdf"); //Close the document doc.Close(true); @@ -135,6 +143,10 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load a PDF document PdfLoadedDocument doc = new PdfLoadedDocument("input.pdf"); //Get first page from document @@ -156,6 +168,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load a PDF document Dim doc As New PdfLoadedDocument("input.pdf") 'Get first page from document @@ -182,9 +198,12 @@ To add image from stream, use the below code snippet. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Insert-image-in-an-existing-PDF-document/.NET/Insert-image-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument doc = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Get first page from document PdfLoadedPage page = doc.Pages[0] as PdfLoadedPage; @@ -196,10 +215,8 @@ PdfBitmap image = new PdfBitmap(imageStream); //Draw the image graphics.DrawImage(image, 0, 0); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); +//Save the document +doc.Save("Output.pdf"); //Close the document doc.Close(true); @@ -207,6 +224,10 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load a PDF document PdfLoadedDocument doc = new PdfLoadedDocument("input.pdf"); //Get first page from document @@ -230,6 +251,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load a PDF document Dim doc As New PdfLoadedDocument("input.pdf") 'Get first page from document @@ -278,6 +303,10 @@ The following code illustrate this, {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a PDF Document PdfDocument doc = new PdfDocument(); //Add pages to the document @@ -304,6 +333,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a PDF Document Dim doc As New PdfDocument() 'Add pages to the document @@ -342,6 +375,9 @@ The following code illustrate shows how to add a mask to TIFF image. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Add-a-mask-to-TIFF-image/.NET/Add-a-mask-to-TIFF-image/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document PdfDocument doc = new PdfDocument(); //Add pages to the document @@ -360,9 +396,8 @@ image.Mask = mask; graphics.DrawImage(image, 0, 0); ///Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); +//Save the document +doc.Save("Output.pdf"); //Close the document doc.Close(true); @@ -370,6 +405,9 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document PdfDocument doc = new PdfDocument(); //Add pages to the document @@ -394,6 +432,9 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a PDF document Dim doc As New PdfDocument() 'Add pages to the document @@ -430,9 +471,11 @@ Essential® PDF allows you to replace images in an existing docume {% highlight c# tabtitle="C# [Cross-platform]" %} -//Load an existing PDF document. -FileStream pdfStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(pdfStream); +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create an image instance. FileStream imageStream = new FileStream(Path.GetFullPath("Autumn Leaves.jpg"), FileMode.Open, FileAccess.Read); @@ -440,9 +483,8 @@ PdfBitmap bmp = new PdfBitmap(imageStream); //Replace the first image in the page loadedDocument.Pages[0].ReplaceImage(0, bmp); -MemoryStream stream = new MemoryStream(); -//Save the document as stream -loadedDocument.Save(stream); +//Save the document +loadedDocument.Save("Output.pdf"); //Close the document loadedDocument.Close(true); @@ -450,6 +492,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument doc = new PdfLoadedDocument(@"image.pdf"); //Create an image instance @@ -466,6 +511,9 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Graphics + 'Load the PDF document Dim doc As New PdfLoadedDocument("image.pdf") 'Create an image instance @@ -492,6 +540,9 @@ You can allow a large image to paginate across multiple pages in the PDF documen {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Paginate-an-image-in-PDF-document/.NET/Paginate-an-image-in-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create Document PdfDocument doc = new PdfDocument(); //Add new page @@ -507,17 +558,17 @@ format.Layout = PdfLayoutType.Paginate; //Draw image image.Draw(page, 20, 400, format); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); -//Close the document +//Save the PDF +doc.Save("output.pdf"); doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create Document PdfDocument doc = new PdfDocument(); //Add new page @@ -540,6 +591,9 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create Document Dim doc As New PdfDocument() 'Add new page @@ -572,6 +626,9 @@ You can add transparency and rotation to the image using [SetTransparency](https {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Add-transparancy-and-rotation-to-the-image/.NET/Add-transparancy-and-rotation-to-the-image/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create Document PdfDocument doc = new PdfDocument(); //Add a new page @@ -594,17 +651,17 @@ image.Draw(page, 0, 0); //Restore the graphics state page.Graphics.Restore(state); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as strea -doc.Save(stream); -//Close the document +//Save the PDF +doc.Save("output.pdf"); doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create Document PdfDocument doc = new PdfDocument(); //Add a new page @@ -633,6 +690,9 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create Document Dim doc As New PdfDocument() 'Add a new page @@ -673,6 +733,9 @@ The code snippet to illustrate the same is given below. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Converting-multi-page-TIFF-to-PDF/.NET/Converting-multi-page-TIFF-to-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Set page margins @@ -691,17 +754,17 @@ for (int i = 0; i < frameCount; i++) tiffImage.ActiveFrame = i; graphics.DrawImage(tiffImage, 0, 0, page.GetClientSize().Width, page.GetClientSize().Height); } -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); -//Close the document -doc.Close(true); +//Save and close the document +pdfDocument.Save("Sample.pdf"); +pdfDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document PdfDocument pdfDocument = new PdfDocument(); //Set page margins @@ -728,6 +791,9 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a PDF document Dim pdfDocument As New PdfDocument() 'Set page margins @@ -767,27 +833,31 @@ The code snippet to illustrate the same is given below. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Images/Remove-images-from-PDF-document/.NET/Remove-images-from-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Exporting; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page. PdfPageBase pageBase = loadedDocument.Pages[0]; //Extract images from the first page. PdfImageInfo[] imageInfo = loadedDocument.Pages[0].GetImagesInfo(); //Remove the Image. pageBase.RemoveImage(imageInfo[0]); -//Create the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -loadedDocument.Save(stream); -//Close the document +//Save and close the document +loadedDocument.Save("Sample.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Exporting; +using Syncfusion.Pdf.Parsing; + //Load a PDF document PdfLoadedDocument doc = new PdfLoadedDocument("input.pdf"); //Load the first page @@ -805,6 +875,10 @@ doc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") 'Load the first page @@ -813,10 +887,9 @@ Dim pageBase As PdfPageBase = loadedDocument.Pages(0) Dim imageInfo As PdfImageInfo = pageBase.ImagesInfo(0) 'Remove the Image pageBase.RemoveImage(imageInfo) -Dim stream As New MemoryStream() 'Save the document -loadedDocument.Save(stream) +loadedDocument.Save("Output.pdf") 'Close the document loadedDocument.Close(True) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-JavaScript.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-JavaScript.md index 07ad2112a..966551198 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-JavaScript.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-JavaScript.md @@ -22,6 +22,9 @@ You can add the JavaScript action to the PDF document by using [PdfJavaScriptAct {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/JavaScript/Add-the-JavaScript-action-to-the-PDF-document/.NET/Add-the-JavaScript-action-to-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new document PdfDocument document = new PdfDocument(); //Add a page @@ -32,23 +35,17 @@ PdfJavaScriptAction scriptAction = new PdfJavaScriptAction("app.alert(\"Hello Wo //Add the JavaScript action document.Actions.AfterOpen = scriptAction; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new document PdfDocument document = new PdfDocument(); //Add a page @@ -67,6 +64,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + 'Create a new document Dim document As New PdfDocument() 'Add a page @@ -97,6 +97,11 @@ The following code snippet illustrate this. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/JavaScript/Add-JavaScript-action-to-the-form-fields-in-a-PDF/.NET/Add-JavaScript-action-to-the-form-fields-in-a-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Creates a new page @@ -116,23 +121,19 @@ submitButton.Actions.MouseDown = scriptAction; //Add the submit button to the new document document.Form.Fields.Add(submitButton); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Creates a new page @@ -161,6 +162,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As New PdfDocument() 'Creates a new page @@ -199,6 +205,10 @@ The 3D Annotations are used to represent 3D artworks in a PDF document. You can {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/JavaScript/Add-JavaScript-to-3D-annotation-in-a-PDF-document/.NET/Add-JavaScript-to-3D-annotation-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Creates a new page @@ -218,23 +228,18 @@ pdf3dAnnotation.Activation = activation; //Adds annotation to page page.Annotations.Add(pdf3dAnnotation); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "3DAnnotation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Creates a new PDF document PdfDocument document = new PdfDocument(); //Creates a new page @@ -261,6 +266,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + 'Creates a new PDF document Dim document As New PdfDocument() 'Creates a new page @@ -297,6 +306,10 @@ Add or modify the JavaScript action in a [PdfLoadedDocument](https://help.syncfu {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -312,6 +325,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + 'Load the PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md index 11603afce..bdd9a615d 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md @@ -20,6 +20,10 @@ Essential® PDF allows the users to create a layer in a PDF page u {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Adding-layers-in-a-PDF-document/.NET/Adding-layers-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create PDF document. PdfDocument document = new PdfDocument(); //Add the page. @@ -41,23 +45,19 @@ graphics.TranslateTransform(100, 180); //Draw ellipse. graphics.DrawEllipse(pen, bounds); -//Save and close the document. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document. +//Save the document. +document.Save("Sample.pdf"); +//Close the document document.Close(true); -//Defining the ContentType for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create PDF document. PdfDocument document = new PdfDocument(); //Add the page. @@ -126,9 +126,13 @@ The below code illustrates how to add the multiple layers in an existing PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Add-the-multiple-layers-in-an-existing-PDF-document/.NET/Add-the-multiple-layers-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get first page from document PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -148,25 +152,22 @@ graphics.TranslateTransform(100, 180); //Draw ellipse. graphics.DrawEllipse(pen, bounds); -//Save and close the document -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document. -loadedDocument.Close(true); -//Defining the ContentType for pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); +//Save the document. +document.Save("Sample.pdf"); +//Close the document +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} -//Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get first page from document PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -196,7 +197,7 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} 'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get first page from document Dim loadedPage As PdfLoadedPage = TryCast(loadedDocument.Pages(0), PdfLoadedPage) @@ -255,18 +256,10 @@ annotation.Layer = layer; //Add annotation to the created page page.Annotations.Add(annotation); -//Save and close the document -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document. +document.Save("Sample.pdf"); //Close the document document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} @@ -339,8 +332,7 @@ The following code illustrates how to add annotation to the layers in an existin {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Add-annotation-to-the-layer-in-an-existing-PDF-document/.NET/Add-annotation-to-the-layer-in-an-existing-PDF-document/Program.cs" %} //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page from the document PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -359,18 +351,10 @@ annotation.Layer = Layer; //Add annotation to the created page loadedPage.Annotations.Add(annotation); -//Save and close the document -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; +//Save the document. +loadedDocument.Save("Sample.pdf"); //Close the document loadedDocument.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} @@ -466,20 +450,10 @@ graphics.TranslateTransform(100, 180); //Draw an ellipse graphics.DrawEllipse(pen, bounds); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//If the position is not set to '0', the PDF will be empty -stream.Position = 0; +//Save the document. +document.Save("Sample.pdf"); //Close the document document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} @@ -558,8 +532,7 @@ You can remove the layers using [RemoveAt](https://help.syncfusion.com/cr/docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Removing-layers-from-an-existing-PDF-document/.NET/Removing-layers-from-an-existing-PDF-document/Program.cs" %} //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the first page from the document PdfLoadedPage loadedPage = document.Pages[0] as PdfLoadedPage; @@ -568,18 +541,10 @@ PdfPageLayerCollection layers = loadedPage.Layers; //Remove the layer layers.RemoveAt(0); -//Save and close the document -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Close the document document.Close(true); -//Defining the ContentType for pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} @@ -634,23 +599,17 @@ You can flatten a layer in a PDF document by removing it from the [PdfDocumentLa {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Flattening-the-layers-in-an-existing-PDF-document/.NET/Flattening-the-layers-in-an-existing-PDF-document/Program.cs" %} //Load the existing PDF document -FileStream inputStream = new FileStream("Layers.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the layer collection PdfDocumentLayerCollection layers = loadedDocument.Layers; //Flatten a layer in the PDF document layers.RemoveAt(0); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Set the position as '0' -stream.Position = 0; -//Download the PDF document in the browser -FileStreamResult fileStreamResult = new FileStreamResult(stream, "application/pdf"); -fileStreamResult.FileDownloadName = "Output.pdf"; -return fileStreamResult; +//Save the PDF document +loadedDocument.Save("Output.pdf"); +//Close the instance of PdfLoadedDocument +loadedDocument.Close(true); {% endhighlight %} @@ -724,18 +683,10 @@ graphics.TranslateTransform(100, 180); //Draw ellipse graphics.DrawEllipse(pen, bounds); -//Save and close the document -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save the PDF document +document.Save("Output.pdf"); +//Close the instance of PdfLoadedDocument document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} @@ -813,26 +764,17 @@ The following code illustrates how to toggle the visibility of layers in an exis {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Toggle-the-visibility-of-layers-in-an-existing-PDF/.NET/Toggle-the-visibility-of-layers-in-an-existing-PDF/Program.cs" %} //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the first layer from the layer collection PdfLayer layer = document.Layers[0]; //Disable the visibility layer.Visible = false; -//Save and close the document -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Close the document document.Close(true); -//Defining the content type for PDF file. -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} @@ -899,20 +841,10 @@ PdfGraphics graphics = layer.CreateGraphics(page); //Draw ellipse. graphics.DrawEllipse(PdfPens.Red, new RectangleF(50, 50, 40, 40)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -document.Save(stream); -//If the position is not set to '0,' then the PDF will be empty. -stream.Position = 0; -//Close the document. +//Save the PDF document. +document.Save("Output.pdf"); +//Close the PDF document. document.Close(true); -//Defining the content type for a PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} From c95eb717e8c89bfd4545a30d6ee5ffa7eef83c2d Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Thu, 9 Oct 2025 15:40:20 +0530 Subject: [PATCH 05/22] Task-824021-Exclude BlinkBinaries folder --- .../HTML-To-PDF/NET/troubleshooting.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md index 5599d4a2f..da168c46b 100644 --- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md +++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md @@ -1546,5 +1546,26 @@ N> We have option to exclude the default Blink binaries from the installation pa +{% endhighlight %} +{% endtabs %} + +## How to Exclude BlinkBinaries or Runtime Files in Build or Deployment + +The runtime files, or blink binaries, will be copied into a bin or published folder while building and publishing the application. +By including the native option in the package reference of the csproj file, you can exclude the runtime files or blink binaries from being copied into the bin or publish folder while building and publishing the application. But you need to place the BlinkBinaries in the server disk and set the BlinkPath in the BlinkConverterSettings to perform the conversion. + +N> Using this approach, you can reduce the deployment size on your own servers. + +Refer to the following package reference: + +{% tabs %} +{% highlight C# %} + + + + native + + + {% endhighlight %} {% endtabs %} \ No newline at end of file From e5daaa0b84b1788f3d4fe8a5b5fc7f13076e9470 Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Thu, 9 Oct 2025 17:16:21 +0530 Subject: [PATCH 06/22] Task-642687-Updated the Html To Pdf in linux UG --- ...rt-HTML-to-PDF-in-Azure-Functions-Linux.md | 65 +++++++++++++++++-- 1 file changed, 58 insertions(+), 7 deletions(-) diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md index 875979f3a..cde5b2eb0 100644 --- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md +++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md @@ -24,11 +24,57 @@ Step 3: Select the function worker as .NET 8.0 isolated (Long-term support), and ![Convert HTMLToPDF Azure Functions Step3](Azure_images\Azure-function-linux\AzureFunctions3.png) Step 4: Install the [Syncfusion.HtmlToPdfConverter.Net.Linux](https://www.nuget.org/packages/Syncfusion.HtmlToPdfConverter.Net.Linux/) NuGet package as a reference to your .NET Core application [NuGet.org](https://www.nuget.org/). -![Convert HTMLToPDF Azure Functions Step3](Azure_images\Azure-function-linux\Nuget-package.png) +![Convert HTMLToPDF Azure Functions Step4](Azure_images\Azure-function-linux\Nuget-package.png) N> Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, you also have to add "Syncfusion.Licensing" assembly reference and include a license key in your projects. Please refer to this [link](https://help.syncfusion.com/common/essential-studio/licensing/overview) to know about registering Syncfusion® license key in your application to use our components. -Step 5: Include the following namespaces in Function1.cs file. + +Step 5: Create a shell file with the below commands in the project and name it as dependenciesInstall.sh. In this article, these steps have been followed to install dependencies packages. + +{% highlight c# tabtitle="C#" %} + +DIR="/home/site/wwwroot/Package" +if [ -d "$DIR" ]; then + echo "'$DIR' found and now copying files, please wait ..." + PACKAGE_USR="/home/site/wwwroot/Package/usr" + if [ -d "$PACKAGE_USR" ]; then + cp -r /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu/ /usr/lib/ + fi + PACKAGE_LIB="/home/site/wwwroot/Package/lib" + if [ -d "$PACKAGE_LIB" ]; then + rm /home/site/wwwroot/Package/lib/x86_64-linux-gnu/libc.so.6; + rm /home/site/wwwroot/Package/lib/x86_64-linux-gnu/libc-2.28.so; + rm /home/site/wwwroot/Package/lib/x86_64-linux-gnu/libselinux.so.1; + cp -r /home/site/wwwroot/Package/lib/x86_64-linux-gnu/ /lib/; + ldconfig; + fi +else + apt-get update && apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3 libgbm1; + mkdir /home/site/wwwroot/Package; + mkdir /home/site/wwwroot/Package/usr; + mkdir /home/site/wwwroot/Package/usr/lib; + mkdir /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu; + mkdir /home/site/wwwroot/Package/lib; + mkdir /home/site/wwwroot/Package/lib/x86_64-linux-gnu; + PACKAGE_USR="/home/site/wwwroot/Package/usr" + if [ -d "$PACKAGE_USR" ]; then + cp -r /usr/lib/x86_64-linux-gnu/ /home/site/wwwroot/Package/usr/lib/ + fi + PACKAGE_LIB="/home/site/wwwroot/Package/lib" + if [ -d "$PACKAGE_LIB" ]; then + cp -r /lib/x86_64-linux-gnu/ /home/site/wwwroot/Package/lib/ + fi +fi + +{% endhighlight %} + +![Convert HTMLToPDF Azure Functions Step5](htmlconversion_images\ShellCommand.png) + +Step 6: Set Copy to Output Directory as “Copy if newer” to the dependenciesInstall.sh file. + +![Convert HTMLToPDF Azure Functions Step6](htmlconversion_images\CopyToNewwer.png) + +Step 7: Include the following namespaces in Function1.cs file. {% highlight c# tabtitle="C#" %} @@ -39,7 +85,7 @@ Step 5: Include the following namespaces in Function1.cs file. {% endhighlight %} -Step 6: This Azure Function converts HTML to PDF using HTTP triggers. It handles GET/POST requests, processes the HTML, and returns a PDF response. +Step 8: This Azure Function converts HTML to PDF using HTTP triggers. It handles GET/POST requests, processes the HTML, and returns a PDF response. {% highlight c# tabtitle="C#" %} @@ -67,7 +113,7 @@ Step 6: This Azure Function converts HTML to PDF using HTTP triggers. It handles {% endhighlight %} -step 7: Use the following code example in the HtmlToPdfConvert method to convert HTML to a PDF document using the [Convert](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.HtmlToPdfConverter.html#Syncfusion_HtmlConverter_HtmlToPdfConverter_Convert_System_String_) method in the [HtmlToPdfConverter](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.HtmlToPdfConverter.html) class. The Blink command line arguments are configured based on the given [CommandLineArguments](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.BlinkConverterSettings.html#Syncfusion_HtmlConverter_BlinkConverterSettings_CommandLineArguments) property of the [BlinkConverterSettings](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.BlinkConverterSettings.html) class. +step 9: Use the following code example in the HtmlToPdfConvert method to convert HTML to a PDF document using the [Convert](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.HtmlToPdfConverter.html#Syncfusion_HtmlConverter_HtmlToPdfConverter_Convert_System_String_) method in the [HtmlToPdfConverter](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.HtmlToPdfConverter.html) class. The Blink command line arguments are configured based on the given [CommandLineArguments](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.BlinkConverterSettings.html#Syncfusion_HtmlConverter_BlinkConverterSettings_CommandLineArguments) property of the [BlinkConverterSettings](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.BlinkConverterSettings.html) class. {% highlight c# tabtitle="C#" %} @@ -99,6 +145,11 @@ public byte[] HtmlToPdfConvert(string htmlText) Bottom = 20 } }; + //Set command line arguments to run without sandbox. + settings.CommandLineArguments.Add("--no-sandbox"); + settings.CommandLineArguments.Add("--disable-setuid-sandbox"); + + htmlConverter.ConverterSettings = settings; // Convert HTML to PDF @@ -127,7 +178,7 @@ N> settings.CommandLineArguments.Add("--disable-setuid-sandbox"); N> ``` N> These arguments are only required when using **older versions** of the library that depend on Blink in sandbox-restricted environments. -Step 8: This code is designed to ensure that the necessary Linux packages for HTML to PDF conversion are installed if the operating system is Linux. It adjusts file permissions and executes a shell script to carry out the installation. +Step 10: This code is designed to ensure that the necessary Linux packages for HTML to PDF conversion are installed if the operating system is Linux. It adjusts file permissions and executes a shell script to carry out the installation. {% highlight c# tabtitle="C#" %} @@ -195,7 +246,7 @@ private static void InstallLinuxPackages() {% endhighlight %} -Step 9: Add the following helper methods to copy and set permission to the BlinkBinariesLinux folder. +Step 11: Add the following helper methods to copy and set permission to the BlinkBinariesLinux folder. {% highlight c# tabtitle="C#" %} @@ -257,7 +308,7 @@ private static void SetExecutablePermission(string tempBlinkDir) {% endhighlight %} -Step 10: Include the below enum in the Function1.cs file. +Step 12: Include the below enum in the Function1.cs file. {% highlight c# tabtitle="C#" %} From 191d993825e87fe6a5fc647d4f0c09ec03a81c59 Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Thu, 9 Oct 2025 17:43:20 +0530 Subject: [PATCH 07/22] Task-642687-- Updated with Image files --- ...rt-HTML-to-PDF-in-Azure-Functions-Linux.md | 64 ++++++++---------- .../NET/htmlconversion_images/CopyToNewer.png | Bin 0 -> 53807 bytes .../htmlconversion_images/ShellCommand.png | Bin 0 -> 129507 bytes 3 files changed, 29 insertions(+), 35 deletions(-) create mode 100644 Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/CopyToNewer.png create mode 100644 Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/ShellCommand.png diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md index cde5b2eb0..ae46d69db 100644 --- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md +++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md @@ -33,39 +33,37 @@ Step 5: Create a shell file with the below commands in the project and name it a {% highlight c# tabtitle="C#" %} -DIR="/home/site/wwwroot/Package" -if [ -d "$DIR" ]; then - echo "'$DIR' found and now copying files, please wait ..." - PACKAGE_USR="/home/site/wwwroot/Package/usr" - if [ -d "$PACKAGE_USR" ]; then - cp -r /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu/ /usr/lib/ - fi - PACKAGE_LIB="/home/site/wwwroot/Package/lib" - if [ -d "$PACKAGE_LIB" ]; then - rm /home/site/wwwroot/Package/lib/x86_64-linux-gnu/libc.so.6; - rm /home/site/wwwroot/Package/lib/x86_64-linux-gnu/libc-2.28.so; - rm /home/site/wwwroot/Package/lib/x86_64-linux-gnu/libselinux.so.1; - cp -r /home/site/wwwroot/Package/lib/x86_64-linux-gnu/ /lib/; - ldconfig; - fi +echo "Starting dependencies installation script..." + +# Ensure rsync is installed +if ! command -v rsync &> /dev/null; then + echo "rsync could not be found, installing..." + apt-get update && apt-get install -yq rsync +fi + +FILE_PATH="/home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu/libnss3.so" +if [ -f "$FILE_PATH" ]; then + echo "Dependencies file exists." + PACKAGE_USR="/home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu" + if [ -d "$PACKAGE_USR" ]; then + echo "Copying user libraries..." + rsync -av --update /home/site/wwwroot/Package/usr/lib/ /usr/lib/ + echo "copied successfully..." + fi else - apt-get update && apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3 libgbm1; - mkdir /home/site/wwwroot/Package; - mkdir /home/site/wwwroot/Package/usr; - mkdir /home/site/wwwroot/Package/usr/lib; - mkdir /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu; - mkdir /home/site/wwwroot/Package/lib; - mkdir /home/site/wwwroot/Package/lib/x86_64-linux-gnu; - PACKAGE_USR="/home/site/wwwroot/Package/usr" - if [ -d "$PACKAGE_USR" ]; then - cp -r /usr/lib/x86_64-linux-gnu/ /home/site/wwwroot/Package/usr/lib/ - fi - PACKAGE_LIB="/home/site/wwwroot/Package/lib" - if [ -d "$PACKAGE_LIB" ]; then - cp -r /lib/x86_64-linux-gnu/ /home/site/wwwroot/Package/lib/ - fi + echo "Package directory does not exist. Installing dependencies..." + apt-get update && apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3 libgbm1 + mkdir -p /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu + mkdir -p /home/site/wwwroot/Package/lib/x86_64-linux-gnu + PACKAGE_USR="/home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu" + if [ -d "$PACKAGE_USR" ]; then + echo "Copying user libraries to package..." + rsync -av /usr/lib/x86_64-linux-gnu/ /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu + fi fi +echo "Dependencies installation script completed." + {% endhighlight %} ![Convert HTMLToPDF Azure Functions Step5](htmlconversion_images\ShellCommand.png) @@ -145,11 +143,7 @@ public byte[] HtmlToPdfConvert(string htmlText) Bottom = 20 } }; - //Set command line arguments to run without sandbox. - settings.CommandLineArguments.Add("--no-sandbox"); - settings.CommandLineArguments.Add("--disable-setuid-sandbox"); - - + htmlConverter.ConverterSettings = settings; // Convert HTML to PDF diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/CopyToNewer.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/CopyToNewer.png new file mode 100644 index 0000000000000000000000000000000000000000..ce31cb90af30d1b9ddeb9547567a24e5e1b53aeb GIT binary patch literal 53807 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 PUe{FDQ!6-sBk+F#S`?0( literal 0 HcmV?d00001 diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/ShellCommand.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/ShellCommand.png new file mode 100644 index 0000000000000000000000000000000000000000..40cd59ddad4a8c78f9602e90bcd4667b7e4092dc GIT binary patch literal 129507 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∾mA`}j!HmPEVBVcf1OwZq0!UFKnkb|Gze{1M&seoCvf-8d%mDN{B z%gHa6>w#`iFZ|9poJw=K2 z8zeVlpf96+Jy{R`DrfjP$m}+f*(P(s*bc8Kk0LBIl$4x4A^eRgoRR?+ld_+7BTi`) z;Z{q?8H0pRgU;4FapFc*UFXNhWN_-+kt=v74=YQyjM%icDDi4p!#uxFi?FDqHa=A$ z%J=B%)6?-VZ3)DX2Yg|w`8lW$7;a0C+{1*qmo&`>dW<%b!B88)K^L<;_$bSuI$J>X z1&^)``MBm|C@*SC#>+2^eeDqsa10_zBN_%8fHi2Sb!Acc+8Z#p`^>) z@j-kR6H`fk4$xkoq4$R-M?wKreEh-`SD^=0GN3Up;ptc=3My$-lO8^-(T_=UK@}`e zO3MJPn{G|Nx{_JO@@uSG%HbX!8OFS3s00Djb_iQo`J}w8c`$TQYbgQdjUn}!=-3Mh z*L#t!JSrMGg~@j6Vkn5?`H_W!zQH&9L;6E(QLleyoMJpi5!=;SoAjIV?^acLQ?S8D}0% zWgQ(EbsvtN87CBH7dG(xFuSCo6OkDel^VAT2R~ciPd6G9r)ggrKyF6{$bSgv`Nblc zD8Hmst{P?9K|@1BOm}1UE`bxLc2LWXpl-T4hu?KXrtA=Ry;QQ7QRo&c97swe%LU9! zll75RJ%&t9b`RbVzJ^1x^}18GnE5?}m#mVbE~6#rhlgnymQdbsn_f&xWLUY!PhO4pU`Is z*IeLp_Ca!Ho3bsVEpps){R}+lZU>9S1&N$sA2x#m9OEAp~GwI2gf8k zaScCv9#6Ow>D=<{S@W29+WKZR3ZCVfhH`*O842ImKQP)yRVw2gw~ObgS1&GkC^PCn z{)O(gVx6?%XXDGsZ-9!qW_X>5BmYF}ezYH5&B`->BV@bYsVX4}k$ZXQUrY)JZYN~D zG3xL~%d%|RI>l*naP%5LZ`MM;>8|RD9m?-oA~da$Wkrj)4x}xTQ2xqWgE$e=hu= mzau6N;eS70C~F-1{(d1|7P% Date: Thu, 9 Oct 2025 17:47:56 +0530 Subject: [PATCH 08/22] updated title --- .../Convert-HTML-to-PDF-in-Azure-Functions-Linux.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md index ae46d69db..b899c8208 100644 --- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md +++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md @@ -31,7 +31,7 @@ N> Starting with v16.2.0.x, if you reference Syncfusion® assembli Step 5: Create a shell file with the below commands in the project and name it as dependenciesInstall.sh. In this article, these steps have been followed to install dependencies packages. -{% highlight c# tabtitle="C#" %} +{% highlight bash tabtitle="Shell" %} echo "Starting dependencies installation script..." @@ -48,13 +48,20 @@ if [ -f "$FILE_PATH" ]; then if [ -d "$PACKAGE_USR" ]; then echo "Copying user libraries..." rsync -av --update /home/site/wwwroot/Package/usr/lib/ /usr/lib/ - echo "copied successfully..." + echo "Copied successfully..." fi else echo "Package directory does not exist. Installing dependencies..." - apt-get update && apt-get install -yq --no-install-recommends libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3 libgbm1 + apt-get update && apt-get install -yq --no-install-recommends \ + libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 \ + libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \ + libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 \ + libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 \ + libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3 libgbm1 + mkdir -p /home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu mkdir -p /home/site/wwwroot/Package/lib/x86_64-linux-gnu + PACKAGE_USR="/home/site/wwwroot/Package/usr/lib/x86_64-linux-gnu" if [ -d "$PACKAGE_USR" ]; then echo "Copying user libraries to package..." From f8eb7e78ddefbee0e5526b4e905ca36142a4628a Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Thu, 9 Oct 2025 18:08:37 +0530 Subject: [PATCH 09/22] 985863-ug: Added nine file changes. --- .../NET/Working-with-HyperLinks.md | 4 +- .../PDF-Library/NET/Working-with-Layers.md | 112 +++++ .../PDF-Library/NET/Working-with-Metadata.md | 317 +++++++------- .../NET/Working-with-Named-Destination.md | 86 +++- .../NET/Working-with-PDF-Conformance.md | 400 ++++++++++-------- .../NET/Working-with-PDF-Templates.md | 144 +++++-- .../PDF/PDF-Library/NET/Working-with-Pages.md | 365 ++++++++++------ .../PDF-Library/NET/Working-with-Portfolio.md | 69 ++- .../PDF-Library/NET/Working-with-Redaction.md | 299 +++++++++---- 9 files changed, 1135 insertions(+), 661 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md index ee5922abf..cce02b755 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-HyperLinks.md @@ -1,11 +1,11 @@ --- -title: Working with Hyperlinks | Syncfusion +title: Working with Hyperlinks in PDF | Syncfusion description: This section explains how to add hyperlink in a new and existing PDF document using Syncfusion .NET PDF library platform: document-processing control: PDF documentation: UG --- -# Working with Hyperlinks +# Working with Hyperlinks in PDF In PDF, hyperlinks can be added to allow the users to navigate to another part of PDF file, web page or any other external content. Essential® PDF provides support for all these types of hyperlink. diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md index bdd9a615d..98e5eb3c2 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Layers.md @@ -88,6 +88,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create PDF document. Dim document As New PdfDocument() 'Add the page. @@ -196,6 +200,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + 'Load the existing PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get first page from document @@ -236,6 +245,11 @@ Essential® PDF allows the users to add different types of [Annota {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Adding-annotation-to-layer-in-the-PDF-document/.NET/Adding-annotation-to-layer-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create new PDF document PdfDocument document = new PdfDocument(); //Add page @@ -265,6 +279,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create new PDF document PdfDocument document = new PdfDocument(); //Add page @@ -294,6 +313,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive +Imports System.Drawing + 'Create new PDF document Dim document As New PdfDocument() 'Add page @@ -331,6 +355,12 @@ The following code illustrates how to add annotation to the layers in an existin {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Add-annotation-to-the-layer-in-an-existing-PDF-document/.NET/Add-annotation-to-the-layer-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page from the document @@ -360,6 +390,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page from the document @@ -389,6 +425,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Interactive +Imports System.Drawing + 'Load the existing PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Gets the first page from the document @@ -428,6 +470,10 @@ Essential® PDF allows users to add nested layers in the PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Add-nested-layers-in-the-PDF-document/.NET/Add-nested-layers-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create the PDF document PdfDocument document = new PdfDocument(); //Add the page @@ -459,6 +505,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create the PDF document PdfDocument document = new PdfDocument(); //Add the page @@ -490,6 +540,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create the PDF document Dim document As New PdfDocument() 'Add the page @@ -531,6 +585,9 @@ You can remove the layers using [RemoveAt](https://help.syncfusion.com/cr/docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Removing-layers-from-an-existing-PDF-document/.NET/Removing-layers-from-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the first page from the document @@ -550,6 +607,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Gets the first page from the document @@ -569,6 +629,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Gets the first page from the document @@ -598,6 +661,9 @@ You can flatten a layer in a PDF document by removing it from the [PdfDocumentLa {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Flattening-the-layers-in-an-existing-PDF-document/.NET/Flattening-the-layers-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -615,6 +681,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Layers.pdf"); @@ -632,6 +701,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Layers.pdf") @@ -661,6 +733,10 @@ The below code illustrates how to toggle the visibility of layers in new PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Toggle-the-visibility-of-layers-in-new-PDF-document/.NET/Toggle-the-visibility-of-layers-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create the document PdfDocument document = new PdfDocument(); //Create a page @@ -692,6 +768,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create the document PdfDocument document = new PdfDocument(); //Create a page @@ -724,6 +804,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing 'Create the document Dim document As New PdfDocument() 'Create a page @@ -763,6 +846,9 @@ The following code illustrates how to toggle the visibility of layers in an exis {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Toggle-the-visibility-of-layers-in-an-existing-PDF/.NET/Toggle-the-visibility-of-layers-in-an-existing-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -780,6 +866,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -797,6 +886,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -826,6 +918,10 @@ The following code sample shows how to add a lock state to the layer in a new PD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Layer/Add-a-lock-state-to-the-layer-in-a-new-PDF-document/.NET/Add-a-lock-state-to-the-layer-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creating a new PDF document. PdfDocument document = new PdfDocument(); //Adding a new page to the PDF document. @@ -850,6 +946,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creating a new PDF document. PdfDocument document = new PdfDocument(); //Adding a new page to the PDF document. @@ -874,6 +974,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Creating a new PDF document. Dim document As PdfDocument = New PdfDocument() 'Adding a new page to the PDF document. @@ -918,6 +1022,10 @@ This is illustrated in the following code sample. {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Layers.pdf"); @@ -941,6 +1049,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Output.pdf") diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Metadata.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Metadata.md index 795912637..12093da51 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Metadata.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Metadata.md @@ -24,6 +24,9 @@ You can add XMP metadata in a PDF document using the [XmpMetadata](https://help. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Adding-XMP-metadata-in-PDF-document/.NET/Adding-XMP-metadata-in-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Create a page @@ -47,22 +50,16 @@ basic.Nickname = "nickname"; basic.Rating.Add(-25); //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Create a page @@ -86,13 +83,16 @@ basic.Nickname = "nickname"; basic.Rating.Add(-25); //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create a PDF document Dim pdfDoc As New PdfDocument() 'Create a page @@ -133,9 +133,12 @@ You can add metadata in an existing PDF document using the [XmpMetadata](https:/ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Adding-XMP-metadata-to-an-existing-PDF-document/.NET/Adding-XMP-metadata-to-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Xmp; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument pdfDoc = new PdfLoadedDocument(docStream); +PdfLoadedDocument pdfDoc = new PdfLoadedDocument("Input.pdf"); //Get XMP object XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata; @@ -155,22 +158,18 @@ basic.Nickname = "nickname"; basic.Rating.Add(-25); //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); + {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Xmp; + //Load the document PdfLoadedDocument pdfDoc = new PdfLoadedDocument("input.pdf"); @@ -192,13 +191,17 @@ basic.Nickname = "nickname"; basic.Rating.Add(-25); //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Load the document Dim pdfDoc As New PdfLoadedDocument("input.pdf") @@ -260,6 +263,9 @@ The [BasicSchema](https://help.syncfusion.com/cr/document-processing/Syncfusion. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-XMP-basic-schema/.NET/Create-PDF-document-with-XMP-basic-schema/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Create a page @@ -283,22 +289,17 @@ basic.Nickname = "nickname"; basic.Rating.Add(-25); //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); + {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Create a page @@ -322,13 +323,16 @@ basic.Nickname = "nickname"; basic.Rating.Add(-25); //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create a PDF document Dim pdfDoc As New PdfDocument() 'Create a page @@ -381,6 +385,9 @@ The [DublinCoreSchema](https://help.syncfusion.com/cr/document-processing/Syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-dubline-core-schema-properties/.NET/Create-PDF-document-with-dubline-core-schema-properties/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create new PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -399,22 +406,16 @@ dublin.Type.Add("PDF"); dublin.Publisher.Add("Essential PDF"); //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create new PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -433,13 +434,16 @@ dublin.Type.Add("PDF"); dublin.Publisher.Add("Essential PDF"); //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create new PDF document Dim pdfDoc As New PdfDocument() 'Add a new page @@ -483,6 +487,9 @@ The [RightsManagementSchema](https://help.syncfusion.com/cr/document-processing/ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-right-management-schema/.NET/Create-PDF-document-with-right-management-schema/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -499,22 +506,16 @@ rights.Owner.Add("Syncfusion"); rights.Marked = true; //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -530,13 +531,16 @@ rights.Owner.Add("Syncfusion"); rights.Marked = true; //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create PDF document Dim pdfDoc As New PdfDocument() 'Add a new page @@ -572,6 +576,9 @@ This schema describes very simple workflow or job information and the [BasicJobT {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-basic-job-ticket-schema/.NET/Create-PDF-document-with-basic-job-ticket-schema/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a document PdfDocument pdfDoc = new PdfDocument(); //Add a page @@ -586,22 +593,16 @@ BasicJobTicketSchema basicJob = metaData.BasicJobTicketSchema; basicJob.JobRef.Add("PDF document creation"); //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document. +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a document PdfDocument pdfDoc = new PdfDocument(); //Add a page @@ -616,13 +617,16 @@ BasicJobTicketSchema basicJob = metaData.BasicJobTicketSchema; basicJob.JobRef.Add("PDF document creation"); //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create a document Dim pdfDoc As New PdfDocument() 'Add a page @@ -661,6 +665,9 @@ The [PagedTextSchema](https://help.syncfusion.com/cr/document-processing/Syncfus {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-pages-text-schema/.NET/Create-PDF-document-with-pages-text-schema/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Create a Page @@ -678,22 +685,16 @@ pagedText.NPages = 1; pagedText.PlateNames.Add("Sample page"); //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a Pdf document PdfDocument pdfDoc = new PdfDocument(); //Create a Page @@ -711,13 +712,16 @@ pagedText.NPages = 1; pagedText.PlateNames.Add("Sample page"); //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create a PDF document Dim pdfDoc As New PdfDocument() 'Create a Page @@ -752,6 +756,9 @@ This schema specifies the properties used with Adobe PDF documents. The [PDFSche {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-PDF-schema/.NET/Create-PDF-document-with-PDF-schema/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a page @@ -768,22 +775,16 @@ pdfSchema.PDFVersion = "1.5"; pdfSchema.Keywords = "Essential PDF"; //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create a PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a page @@ -800,13 +801,16 @@ pdfSchema.PDFVersion = "1.5"; pdfSchema.Keywords = "Essential PDF"; //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create a PDF document Dim pdfDoc As New PdfDocument() 'Add a page @@ -845,6 +849,9 @@ Add the following code sample to define the custom schema in a PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Create-PDF-document-with-custom-schema/.NET/Create-PDF-document-with-custom-schema/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -860,23 +867,17 @@ customSchema["DOCID"] = "SYNCSAM001"; customSchema["Encryption"] = "Standard"; customSchema["Project"] = "Data processing"; -//Save the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +//Save and close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "DocumentInformation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create Pdf document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -894,13 +895,16 @@ customSchema["Encryption"] = "Standard"; customSchema["Project"] = "Data processing"; //Save and close the document -pdfDoc.Save("DocumentInformation.pdf"); +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create PDF document Dim pdfDoc As New PdfDocument() 'Add a new page @@ -935,6 +939,9 @@ Essential® PDF allows you to add required metadata (custom schema {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Adding-custom-schema-to-the-PDF-document/.NET/Adding-custom-schema-to-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -950,22 +957,16 @@ customSchema["creationDate"] = DateTime.Now.ToString(); customSchema["DOCID"] = "SYNCSAM001"; //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "CustomMetaField.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add a new page @@ -988,6 +989,9 @@ pdfDoc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create PDF document Dim pdfDoc As New PdfDocument() 'Add a new page @@ -1020,6 +1024,9 @@ The custom metadata can be added in PDF document by using the [CustomMetadata](h {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Adding-custom-metadata-to-the-PDF-document/.NET/Adding-custom-metadata-to-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add new PDF page @@ -1031,22 +1038,16 @@ pdfDoc.DocumentInformation.CustomMetadata["CompanyName"] = "Syncfusion"; pdfDoc.DocumentInformation.CustomMetadata["Key"] = "DocumentKey"; //Save and close the document -MemoryStream stream = new MemoryStream(); -pdfDoc.Save(stream); -stream.Position = 0; -//Close the document +pdfDoc.Save("Output.pdf"); pdfDoc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "AddCustomField.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; + //Create PDF document PdfDocument pdfDoc = new PdfDocument(); //Add new PDF page @@ -1065,6 +1066,9 @@ pdfDoc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Create PDF document Dim pdfDoc As New PdfDocument() 'Add new PDF page @@ -1093,30 +1097,28 @@ Removing the custom metadata from an existing PDF document using the [Remove](ht {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Remove-custom-metadata-from-an-existing-PDF-document/.NET/Remove-custom-metadata-from-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Remove custom metadata using key name loadedDocument.DocumentInformation.CustomMetadata.Remove("Key"); //Save and close the document -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Xmp; +using Syncfusion.Pdf.Parsing; + //Load the document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -1131,6 +1133,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Load the document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") @@ -1159,6 +1165,10 @@ You can add the XMP metadata along with an image to the PDF document. The [PdfBi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Adding-XMP-metadata-along-with-an-image-in-PDF/.NET/Adding-XMP-metadata-along-with-an-image-in-PDF/Program.cs" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using System.Reflection.Metadata; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -1172,24 +1182,18 @@ PdfBitmap image = new PdfBitmap(imageStream, true); //Draw the image graphics.DrawImage(image, 0, 0); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -doc.Save(stream); -stream.Position = 0; +//Save the document +doc.Save("Output.pdf"); //Close the document doc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using System.Reflection.Metadata; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -1211,6 +1215,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Reflection.Metadata + 'Create a new PDF document Dim doc As New PdfDocument() 'Add a page to the document @@ -1244,9 +1252,12 @@ Refer to the following code example to extract the image metadata from a PDF ima {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Metadata/Extracting-XMP-metadata-from-PDF-image/.NET/Extracting-XMP-metadata-from-PDF-image/Program.cs" %} -//Load an existing PDF -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Xmp; +using Syncfusion.Pdf; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page PdfPageBase pageBase = loadedDocument.Pages[0]; @@ -1262,6 +1273,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Xmp; +using Syncfusion.Pdf; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); //Load the first page @@ -1279,6 +1294,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Xmp +Imports Syncfusion.Pdf + 'Load an existing PDF Dim loadedDocument As New PdfLoadedDocument(fileName) 'Load the first page diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Named-Destination.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Named-Destination.md index b864b4559..71141373f 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Named-Destination.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Named-Destination.md @@ -28,6 +28,11 @@ The following code example shows how to add named destination in a new PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Named%20Destination/Adding-named-destination-to-a-PDF-document/.NET/Adding-named-destination-to-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page to the document. @@ -43,16 +48,19 @@ doc.NamedDestinationCollection.Add(destination); //Draw the text. page.Graphics.DrawString("Hello World!!", new PdfStandardFont(PdfFontFamily.Helvetica, 10), PdfBrushes.Black, new PointF(0, 500)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -//Closes the document +//Save the document. +doc.Save("Output.pdf"); +//Close the document. doc.Close(true); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page to the document. @@ -77,6 +85,11 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Create a new PDF document. Dim doc As New PdfDocument() 'Add a page to the document. @@ -111,9 +124,13 @@ The following code example shows how to add named destination in an existing PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Named%20Destination/Adding-named-destination-to-an-existing-PDF-document/.NET/Adding-named-destination-to-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the first page of the document. PdfPageBase page = loadedDocument.Pages[0]; //Create an instance for named destination. @@ -125,16 +142,20 @@ destination.Destination.Location = new PointF(0, 500); destination.Destination.Zoom = 4; loadedDocument.NamedDestinationCollection.Add(destination); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Closes the document. +//Save the document. +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the first page of the document. @@ -157,6 +178,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Interactive + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the first page of the document. @@ -189,9 +215,11 @@ You can remove the named destination using [Remove](https://help.syncfusion.com/ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Named%20Destination/Remove-and-modify-the-named-destination-in-a-PDF/.NET/Remove-and-modify-the-named-destination-in-a-PDF/Program.cs" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Barcode.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument lDoc = new PdfLoadedDocument(docStream); +PdfLoadedDocument lDoc = new PdfLoadedDocument("Input.pdf"); //Get the named destination collection. PdfNamedDestinationCollection destinationCollection = lDoc.NamedDestinationCollection; //Remove the named destination by title. @@ -200,9 +228,8 @@ destinationCollection.Remove("TOC"); PdfNamedDestination destination = destinationCollection[0]; destination.Title = "POC"; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -lDoc.Save(stream); +//Save the document. +lDoc.Save("Output.pdf"); //Close the document. lDoc.Close(true); @@ -210,6 +237,9 @@ lDoc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument lDoc = new PdfLoadedDocument("Sample.pdf"); //Get the named destination collection. @@ -230,6 +260,9 @@ lDoc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Interactive + 'Load the PDF document. Dim lDoc As New PdfLoadedDocument("Sample.pdf") 'Get the named destination collection. @@ -260,6 +293,11 @@ The following code example shows how to add named destination to the [Bookmarks] {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Named%20Destination/Adding-named-destination-to-the-bookmarks/.NET/Adding-named-destination-to-the-bookmarks/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page to the document. @@ -278,10 +316,8 @@ PdfBookmark bookmark = doc.Bookmarks.Add("TOC"); //Assign the named destination to the bookmark. bookmark.NamedDestination = destination; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; +//Save the document. +doc.Save("Sample.pdf"); //Close the document. doc.Close(true); @@ -289,6 +325,11 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page to the document. @@ -316,6 +357,11 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Create a new PDF document. Dim doc As New PdfDocument() 'Add a page to the document. diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md index ecf21596b..30a3ab9f7 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md @@ -123,6 +123,9 @@ You can create a PDF/A-1b document by specifying the conformance level as ```Pdf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA1B-document/.NET/Creating-the-new-PDFA1B-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-1b standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A1B); //Add a page to the document @@ -137,25 +140,16 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-1b standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A1B); //Add a page. @@ -180,6 +174,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with PDF/A-1b standard. Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A1B) 'Add a page. @@ -214,6 +211,9 @@ You can create a PDF/A-2b document by specifying the conformance level as ```Pdf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA2B-document/.NET/Creating-the-new-PDFA2B-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-2b standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A2B); //Add a page to the document @@ -228,25 +228,17 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-2b standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A2B); //Add a page @@ -271,6 +263,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with PDF/A-2b standard Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A2B) 'Add a page @@ -307,6 +302,10 @@ You can create a PDF/A-3b document by specifying the conformance level as Pdf_A3 {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA3B-document/.NET/Creating-the-new-PDFA3B-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new document with PDF/A-3b standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3B); //Add a page to the document @@ -330,25 +329,18 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new document with PDF/A-3b standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3B); //Add a page @@ -381,6 +373,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Create a new document with PDF/A-3b standard Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A3B) 'Add a page @@ -425,6 +421,9 @@ You can create a PDF/A-1a document by specifying the conformance level as ```Pdf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA1A-document/.NET/Creating-the-new-PDFA1A-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-1a standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A1A); //Add a page to the document @@ -438,25 +437,16 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-1a standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A1A); //Add a page. @@ -480,6 +470,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with PDF/A-1a standard. Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A1A) 'Add a page. @@ -515,6 +508,9 @@ You can create a PDF/A-2a document by specifying the conformance level as ```Pdf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA2A-document/.NET/Creating-the-new-PDFA2A-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-2a standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A2A); //Add a page to the document @@ -528,25 +524,17 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-2a standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A2A); //Add a page @@ -570,6 +558,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with PDF/A-2a standard Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A2A) 'Add a page @@ -605,6 +596,10 @@ You can create a PDF/A-3a document by specifying the conformance level as ``Pdf_ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA3A-document/.NET/Creating-the-new-PDFA3A-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new document with PDF/A-3a standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3A); //Add a page to the document @@ -628,25 +623,18 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new document with PDF/A-3a standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3A); //Add a page @@ -680,6 +668,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Create a new document with PDF/A-3a standard Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A3A) 'Add a page @@ -725,6 +717,9 @@ You can create a PDF/A-2u document by specifying the conformance level as ```Pdf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA2U-document/.NET/Creating-the-new-PDFA2U-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-2u standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A2U); //Add a page to the document @@ -738,25 +733,16 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/A-2u standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A2U); //Add a page @@ -780,6 +766,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with PDF/A-2u standard Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A2U) 'Add a page @@ -815,6 +804,10 @@ You can create a PDF/A-3u document by specifying the conformance level as ``Pdf_ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA3U-document/.NET/Creating-the-new-PDFA3U-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new document with PDF/A-3u standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3U); //Add a page to the document @@ -838,25 +831,18 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new document with PDF/A-3u standard PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3U); //Add a page @@ -890,6 +876,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Create a new document with PDF/A-3u standard Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A3U) 'Add a page @@ -935,6 +925,9 @@ Create a PDF/A-4 document by specifying the conformance level as ``Pdf_A4`` thro {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA4-document/.NET/Creating-the-new-PDFA4-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with the PDF/A-4 standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); //Add a page to the document. @@ -948,25 +941,17 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Create the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into the memory stream. -document.Save(stream); -//If the position is not set to '0,' a PDF will be empty. -stream.Position = 0; -//Close the document. -document.Close(true); -//Define the content type for a PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Output.pdf"; -//Create the FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); +//Save and close the document. +document.Save("Output.pdf"); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with the PDF/A-4 standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); //Add a page. @@ -990,6 +975,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with the PDF/A-4 standard. Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A4) 'Add a page. @@ -1025,6 +1013,9 @@ Create a PDF/A-4E document by specifying the conformance level as ``Pdf_A4E`` th {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-the-new-PDFA4E-document/.NET/Creating-the-new-PDFA4E-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with the PDF/A-4 standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); //Creates a new page. @@ -1040,22 +1031,16 @@ activation.ShowToolbar = true; pdf3dAnnotation.Activation = activation; //Add the annotation to the page. page.Annotations.Add(pdf3dAnnotation); -//Save the document into the stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); stream.Position = 0; -//Close the document. -document.Close(true); -//Define the ContentType for a pdf file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "3DAnnotation.pdf"; -//Create the FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); - +//Save and close the document. +document.Save("Output.pdf"); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with the PDF/A-4E standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4E); //Create a new page. @@ -1079,6 +1064,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with the PDF/A-4 standard. Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A4E) 'Creates a new page. @@ -1115,6 +1103,9 @@ Create a PDF/A-4f document by specifying the conformance level as ``Pdf_A4F`` th {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Creating-a-new-PDFA4F-document/.NET/Creating-a-new-PDFA4F-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with the PDF/A-4F standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4F); //Add a page to the document. @@ -1140,18 +1131,17 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0)); -//Save the document into the memory stream. -MemoryStream stream = new MemoryStream(); -await document.SaveAsync(stream); -//Close the document. -document.Close(true); -//Save the stream as a PDF document file in the local machine. Refer to the PDF/UWP section for respective code samples. -Save(stream, "Output.pdf"); +//Save and close the document. +document.Save("Output.pdf"); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with the PDF/A-3b standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4F); //Add a page. @@ -1184,6 +1174,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with the PDF/A-3b standard. Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A4F) 'Add a page. @@ -1233,6 +1226,9 @@ You can create a PDF/X-1a document by specifying the conformance level as ```Pdf {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document with PDF/x standard. PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_X1A2001); //Add a page. @@ -1258,6 +1254,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document with PDF/x standard. Dim document As New PdfDocument(PdfConformanceLevel.Pdf_X1A2001) 'Add a page. @@ -1307,32 +1306,32 @@ Refer to the following code sample to implement this conversion. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Convert-PDF-to-PDFA-conformance-document/.NET/Convert-PDF-to-PDFA-conformance-document/Program.cs" %} -//Load an existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using SkiaSharp; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Sample level font event handling loadedDocument.SubstituteFont += LoadedDocument_SubstituteFont ; //Convert the loaded document to PDF/A document loadedDocument.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B); -//Save the document -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document -loadedDocument.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); +//Save and close the document. +loadedDocument.Save("Output.pdf"); +loadedDocument.Close(true) {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using SkiaSharp; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -1347,6 +1346,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports SkiaSharp + 'Load an existing PDF document. Dim document As New PdfLoadedDocument("Input.pdf") @@ -1429,9 +1433,15 @@ N> To convert an existing PDF to a PDF/A-compliant document in .NET Core, ensure {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Font_Subsetting_in_PDFA_conversion/.NET/Font_Subsetting_in_PDFA_conversion/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf; +using System.Reflection.Metadata; +using Syncfusion.Drawing; +using Syncfusion.Pdf.Graphics; +using SkiaSharp; + //Load an existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Sample level font event handling loadedDocument.SubstituteFont += LoadedDocument_SubstituteFont; @@ -1447,17 +1457,21 @@ options.SubsetFonts = true; // Convert to PDF/A conformance loadedDocument.ConvertToPDFA(options); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Closes the document +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf; +using System.Reflection.Metadata; +using System.Drawing; +using Syncfusion.Pdf.Graphics; +using SkiaSharp; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -1478,6 +1492,13 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf +Imports System.Reflection.Metadata +Imports System.Drawing +Imports Syncfusion.Pdf.Graphics +Imports SkiaSharp + ' Load an existing PDF document. Dim document As New PdfLoadedDocument("Input.pdf") @@ -1562,9 +1583,11 @@ You can find the conformance level of the existing PDF document using the [Confo {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Get-the-conformance-level-of-the-existing-PDF-document/.NET/Program.cs" %} -//Load an existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the conformance level of the loaded document. PdfConformanceLevel conformance = loadedDocument.Conformance; @@ -1576,6 +1599,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -1589,6 +1615,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf + 'Load an existing PDF. Dim document As New PdfLoadedDocument("Input.pdf") @@ -1613,24 +1642,20 @@ The following code sample shows the delegate for handling PDF to PDF/A conversio {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Get-PDF-to-PDFA-conversion-progress/.NET/Get-PDF-to-PDFA-conversion-progress/Program.cs" %} - - -//Get stream from an existing PDF document. -FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Subscribe to the PdfAConversionProgress event to track the PDF to PDF/A conversion process loadedDocument.PdfAConversionProgress += new PdfLoadedDocument.PdfAConversionProgressEventHandler(pdfAConversion_TrackProgress); loadedDocument.ConvertToPDFA(PdfConformanceLevel.Pdf_A1B); -//Save the document -FileStream outputStream = new FileStream(Path.GetFullPath(@"Output.pdf"), FileMode.Create, FileAccess.Write); -loadedDocument.Save(outputStream); - -//Close the document +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); @@ -1645,6 +1670,9 @@ void pdfAConversion_TrackProgress(object sender, PdfAConversionProgressEventArgs {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load a PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); @@ -1668,6 +1696,9 @@ Console.WriteLine(String.Format("PDF to PDF/A conversion Process " + arguments. {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf + 'Load a PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") @@ -1699,30 +1730,25 @@ An existing PDF/A conformance document can be converted to a PDF document using {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Conformance/Convert-PDFA-to-PDF-document/.NET/Convert-PDFA-to-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; + //Load a PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Remove PDF/A conformance. document.RemoveConformance(); //Save the document. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +document.Save("Output.pdf"); //Close the document. document.Close(true); -//Defining the content type for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "output.pdf"; - -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load an existing document. PdfLoadedDocument document = new PdfLoadedDocument("input.pdf"); @@ -1738,6 +1764,8 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load an existing document. Dim document As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Templates.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Templates.md index d925cfe00..4fc50279b 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Templates.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Templates.md @@ -19,6 +19,10 @@ The below code snippet illustrates how to add contents to the [PdfTemplate](http {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Templates/Add-the-contents-to-template-and-render-into-PDF-page/.NET/Add-the-contents-to-template-and-render-into-PDF-page/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -37,9 +41,8 @@ template.Graphics.DrawString("Hello World", font, brush, 5, 5); //Draw the template on the page graphics of the document. pdfPage.Graphics.DrawPdfTemplate(template, PointF.Empty); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); +//Save the document. +pdfDocument.Save("Output.pdf"); //Close the document. pdfDocument.Close(true); @@ -47,6 +50,10 @@ pdfDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -74,6 +81,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim pdfDocument As New PdfDocument() 'Add a page to the PDF document. @@ -109,9 +120,12 @@ The below code snippet illustrates how to render the [PdfTemplate](https://help. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Templates/Render-the-template-in-an-existing-PDF-document/.NET/Render-the-template-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page into Pdf document. PdfLoadedPage LoadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -128,9 +142,8 @@ template.Graphics.DrawString("Hello World", font, brush, 5, 5); //Draw the template on the page graphics of the document. LoadedPage.Graphics.DrawPdfTemplate(template, Syncfusion.Drawing.PointF.Empty); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); @@ -138,8 +151,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page into Pdf document. PdfLoadedPage LoadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -165,8 +182,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the page into Pdf document. Dim LoadedPage As PdfLoadedPage = TryCast(loadedDocument.Pages(0), PdfLoadedPage) @@ -204,9 +225,12 @@ The below code illustrates how to create the template from an existing page and {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Templates/Create-template-from-an-existing-PDF-document/.NET/Create-template-from-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page. PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Create the template from the page. @@ -221,19 +245,21 @@ PdfGraphics graphics = page.Graphics; //Draw the template. graphics.DrawPdfTemplate(template, Syncfusion.Drawing.PointF.Empty, new Syncfusion.Drawing.SizeF(page.Size.Width / 2, page.Size.Height)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. -document.Close(true); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page. PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Create the template from the page. @@ -258,8 +284,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Load the existing PDF document -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the page Dim loadedPage As PdfLoadedPage = TryCast(loadedDocument.Pages(0), PdfLoadedPage) 'Create the template from the page @@ -296,6 +326,10 @@ The below code illustrates how to add the page template elements in a PDF docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Templates/Add-the-page-template-elements-in-a-PDF-document/.NET/Add-the-page-template-elements-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -329,9 +363,8 @@ compositeField.Draw(footer.Graphics, new Syncfusion.Drawing.PointF(470, 40)); //Add the footer template at the bottom. pdfDocument.Template.Bottom = footer; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); +//Save the document. +pdfDocument.Save("Output.pdf"); //Close the document. pdfDocument.Close(true); @@ -339,6 +372,10 @@ pdfDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -379,6 +416,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim pdfDocument As New PdfDocument() 'Add a page to the PDF document. @@ -429,12 +470,15 @@ Multiple templates can be drawn over a PDF page, to create a document-overlay us {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Templates/Creating-the-document-overlays/.NET/Creating-the-document-overlays/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream1 = new FileStream(fileName1, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument(docStream1); +PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument("Input1.pdf"); //Load the PDF document. -FileStream docStream2 = new FileStream(fileName2, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument(docStream2); +PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument("Input2.pdf"); //Create the new document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -451,23 +495,25 @@ template = loadedPage.CreateTemplate(); //Draw the loaded template into new document. page.Graphics.DrawPdfTemplate(template, new PointF(10, 10), new SizeF(400, 500)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Set the position as '0'. -stream.Position = 0; +//Save the new document. +document.Save("Output.pdf"); //Closes the documents. -document.Close(true); loadedDocument1.Close(true); loadedDocument2.Close(true); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the existing documents. -PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument(fileName1); -PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument(fileName2); +PdfLoadedDocument loadedDocument1 = new PdfLoadedDocument("Input1.pdf"); +PdfLoadedDocument loadedDocument2 = new PdfLoadedDocument("Input2.pdf"); //Create the new document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -495,9 +541,14 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + 'Load the existing documents. -Dim loadedDocument1 As New PdfLoadedDocument(fileName1) -Dim loadedDocument2 As New PdfLoadedDocument(fileName2) +Dim loadedDocument1 As New PdfLoadedDocument("Input1.pdf") +Dim loadedDocument2 As New PdfLoadedDocument("Input2.pdf") 'Create the new document. Dim document As New PdfDocument() 'Add a page to the document. @@ -535,9 +586,12 @@ The following code sample shows how to add a [PdfPageTemplate](https://help.sync {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/PDF%20Templates/Add-a-template-from-an-existing-PDF-document/.NET/Add-a-template-from-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Loads an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the first page of the document. PdfPageBase page = loadedDocument.Pages[0]; @@ -550,17 +604,19 @@ pageTemplate.IsVisible = true; //Adds the page template. loadedDocument.PdfPageTemplates.Add(pageTemplate); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -loadedDocument.Save(stream); -//Close the document. +//Save the PDF document. +loadedDocument.Save("output.pdf"); +//Close the PDF document. loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Loads an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); //Get the first page of the document. @@ -584,6 +640,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Loads an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") 'Get the first page of the documsent. diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md index 2841de9bb..7f719a83a 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md @@ -15,6 +15,9 @@ The following code sample explains you on how to add a [PdfPage](https://help.sy {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Add-a-new-page-to-the-PDF-document/.NET/Add-a-new-page-to-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page. @@ -29,17 +32,17 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 14); //Draw the text. graphics.DrawString("Hello world!", font, brush, new Syncfusion.Drawing.PointF(20, 20)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page. @@ -62,6 +65,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page. @@ -94,23 +100,23 @@ You can insert an empty page at any location in the existing PDF document using {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Insert-pages-in-a-PDF-document/.NET/Insert-pages-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Insert a new page in the beginning of the document. loadedDocument.Pages.Insert(0); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -loadedDocument.Save(stream); -//Close the document. +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Insert a new page in the beginning of the document. @@ -123,6 +129,8 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Insert a new page in the beginning of the document. @@ -145,6 +153,9 @@ You can add margin to all the PDF pages of the PDF document using the [PageSetti {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Add-margin-to-the-PDF-pages/.NET/Add-margin-to-the-PDF-pages/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Set margin for all the pages. @@ -161,17 +172,17 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 14); //Draw the text. graphics.DrawString("Hello world!", font, brush, new Syncfusion.Drawing.PointF(20, 20)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Set margin for all the pages @@ -196,6 +207,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Set margin for all the pages. @@ -234,6 +248,9 @@ The following code snippet explains how to add more sections to a PDF document w {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Adding-sections-with-different-page-settings/.NET/Adding-sections-with-different-page-settings/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Create a solid brush and standard font @@ -293,17 +310,18 @@ graphics = page.Graphics; //Draw simple text on the page graphics.DrawString("Rotated by 270 degrees", font, brush, new PointF(20, 20)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); - -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); + {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Create a solid brush and standard font @@ -372,6 +390,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Create a solid brush and standard font @@ -451,6 +472,9 @@ For example, to use lowercase Roman numerals (i, ii, iii, ...), assign `PdfNumbe {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document. PdfDocument document = new PdfDocument(); //Add a section to the document. @@ -484,21 +508,17 @@ for (int i = 0; i < 3; i++) page.Graphics.DrawString("This is the main content of a page with a footer.", font, PdfBrushes.Black, new PointF(10, 10)); } -//Create file stream. -using (FileStream outputFileStream = new FileStream("Output.pdf", FileMode.Create, FileAccess.ReadWrite)) -{ - //Save the PDF document to file stream. - document.Save(outputFileStream); -} - -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new document. PdfDocument document = new PdfDocument(); //Add a section to the document. @@ -541,6 +561,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new document. Dim document As New PdfDocument() 'Add a section to the document. @@ -592,9 +615,10 @@ You can get page count from the existing PDF document as shown in the following {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Get-number-of-pages-from-PDF-document/.NET/Get-number-of-pages-from-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page count. int pageCount = loadedDocument.Pages.Count; //Close the document. @@ -604,6 +628,8 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page count. @@ -615,6 +641,8 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page count. @@ -637,10 +665,11 @@ Essential® PDF allows you to import a page or import a range of p {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Importing-pages-from-one-PDF-to-another-PDF/.NET/Importing-pages-from-one-PDF-to-another-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create a new PDF document. PdfDocument document = new PdfDocument(); int startIndex = 0; @@ -648,18 +677,17 @@ int endIndex = loadedDocument.Pages.Count - 1; //Import all the pages to the new PDF document. document.ImportPageRange(loadedDocument, startIndex, endIndex); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); -//Close the document instances. -document.Close(true); +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create a new PDF document. @@ -679,6 +707,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create a new PDF document. @@ -710,10 +741,11 @@ N> Performance will be effective only in the large PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Import-pages-from-PDF-without-bookmarks/.NET/Import-pages-from-PDF-without-bookmarks/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the new PDF document PdfDocument document = new PdfDocument(); int startIndex = 0; @@ -721,18 +753,17 @@ int endIndex = loadedDocument.Pages.Count - 1; //Import all the pages to the new PDF document document.ImportPageRange(loadedDocument, startIndex, endIndex, false); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//Close the document instances -document.Close(true); +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -754,6 +785,9 @@ System.Diagnostics.Process.Start("Output.pdf"); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Create the new PDF document @@ -783,22 +817,25 @@ You can rearrange the pages in an existing PDF document using [ReArrange](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Rearrange-pages-in-an-existing-PDF-document/.NET/Rearrange-pages-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Rearrange the page by index -loadedDocument.Pages.ReArrange(new int[] { 1, 0 });//Creating the stream object -MemoryStream stream = new MemoryStream(); +loadedDocument.Pages.ReArrange(new int[] { 1, 0 }); -//Save the document as stream -loadedDocument.Save(stream); -//Close the document +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Rearrange the page by index @@ -811,6 +848,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Rearrange the page by index @@ -834,10 +874,11 @@ You can alter the page label for the existing PDF document using [PdfPageLabel]( {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Changing-page-numbers-in-a-PDF-document/.NET/Changing-page-numbers-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Create a page label PdfPageLabel pageLabel = new PdfPageLabel(); //Set the number style with upper case roman letters @@ -846,17 +887,16 @@ pageLabel.NumberStyle = PdfNumberStyle.UpperRoman; pageLabel.StartNumber = 1; loadedDocument.LoadedPageLabel = pageLabel; -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -loadedDocument.Save(stream); -//Close the document +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create a page label @@ -876,6 +916,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create a page label @@ -905,23 +948,24 @@ You can remove the pages from the existing PDF document using [RemoveAt](https:/ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Remove-pages-from-the-existing-PDF-document/.NET/Remove-pages-from-the-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Remove the first page in the PDF document loadedDocument.Pages.RemoveAt(0); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -loadedDocument.Save(stream); -//Close the document. +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Remove the first page in the PDF document @@ -935,6 +979,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Remove the first page in the PDF document @@ -958,6 +1005,10 @@ You can rotate a particular PDF page in the PDF document using [PdfPageRotateAng {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Rotating-a-PDF-page/.NET/Rotating-a-PDF-page/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a section. @@ -975,17 +1026,18 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 14); //Draws the text. graphics.DrawString("Rotated by 90 degree", font, brush, new Syncfusion.Drawing.PointF(20, 20)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a section. @@ -1012,6 +1064,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a section. @@ -1048,24 +1104,27 @@ You can also rotate a PDF page in the existing PDF document using [PdfPageRotate {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Rotate-an-existing-PDF-page/.NET/Rotate-an-existing-PDF-page/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page PdfPageBase loadedPage = loadedDocument.Pages[0] as PdfPageBase; //Set the rotation for loaded page loadedPage.Rotation = PdfPageRotateAngle.RotateAngle90; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the document +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page. @@ -1082,6 +1141,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Gets the page. @@ -1108,24 +1170,27 @@ You can find the empty pages from the PDF document using the [IsBlank](https://h {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Detect-empty-pages-from-PDF/.NET/Detect-empty-pages-from-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page. PdfPageBase loadedPage = loadedDocument.Pages[0] as PdfPageBase; //get the page is blank or not. bool isEmpty = loadedPage.IsBlank; -//Save the document into a stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the document. +//Save and close the document. +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the page. @@ -1142,6 +1207,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("input.pdf") 'Gets the page. @@ -1170,28 +1238,30 @@ Essential® PDF allows to split the pages of an existing PDF docum //Due to platform limitations, Essential® PDF supports splitting a PDF file into individual pages only in Windows Forms, WPF, ASP.NET, and ASP.NET MVC platforms. However this can be achieved by using the following code snippet. +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); -for (int i=0;i® PDF provides support for extracting the files from {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Portfolio/Extracting-the-files-from-PDF-portfolio/.NET/Extracting-the-files-from-PDF-portfolio/Program.cs" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document -FileStream docStream = new FileStream("Sample.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Iterate the attachments foreach (PdfAttachment attachment in document.Attachments) @@ -125,23 +127,17 @@ foreach (PdfAttachment attachment in document.Attachments) s.Dispose(); } -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Sample.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument document = new PdfLoadedDocument("Sample.pdf"); @@ -162,6 +158,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document Dim document As New PdfLoadedDocument("Sample.pdf") @@ -191,30 +190,24 @@ The following code example illustrates how to remove files from an existing PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Portfolio/Remove-the-files-from-PDF-portfolio/.NET/Remove-the-files-from-PDF-portfolio/Program.cs" %} +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Sample.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Remove the file from the Portfolio document.Attachments.RemoveAt(0); -//Save and close the document -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Close the document +//Save and close the document. +document.Save("Sample.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; + //Load the PDF document PdfLoadedDocument document = new PdfLoadedDocument("Sample.pdf"); @@ -229,6 +222,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document Dim document As New PdfLoadedDocument("Sample.pdf") diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md index 616c54d60..c9ccb547a 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md @@ -24,9 +24,13 @@ The following code example demonstrates the redaction of PDF documents from the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Removing-sensitive-content-from-the-PDF-document/.NET/Removing-sensitive-content-from-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load the existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -37,17 +41,19 @@ page.AddRedaction(redaction); //Redact the contents from the PDF document document.Redact(); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document -document.Save(stream); -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get first page from the document @@ -66,6 +72,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load a PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get first page from the document @@ -96,9 +107,14 @@ The following code example explains how to add overlay text in the redacted area {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Display-text-on-the-redacted-area/.NET/Display-text-on-the-redacted-area/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load the existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -113,17 +129,20 @@ page.AddRedaction(redaction); //Redact the contents from the PDF document document.Redact(); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document -document.Save(stream); -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get first page from the document @@ -146,6 +165,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load a PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get first page from the document @@ -180,9 +205,14 @@ The following code example explains how to redact the information from a page by {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Draw-image-on-the-redacted-area-in-PDF-document/.NET/Draw-image-on-the-redacted-area-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load the existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -196,17 +226,20 @@ page.AddRedaction(redaction); //Redact the contents from the PDF document document.Redact(); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document -document.Save(stream); -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get first page from the document @@ -228,6 +261,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load a PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get first page from the document @@ -261,9 +300,14 @@ The following code example explains how to redact the information from a page by {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Draw-pattern-on-the-redacted-area-in-PDF-document/.NET/Draw-pattern-on-the-redacted-area-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load the existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -299,17 +343,19 @@ page.AddRedaction(redaction); //Redact the contents from the PDF document document.Redact(); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the documents -document.Save(stream); -//Close the documents +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get first page from the document @@ -354,6 +400,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load a PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get first page from the document @@ -410,9 +462,13 @@ The following code example explains how to redact the information from a page wi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Fill-color-on-the-redacted-area-in-a-PDF/.NET/Fill-color-on-the-redacted-area-in-a-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load the existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -425,17 +481,19 @@ page.AddRedaction(redaction); //Redact the contents from the PDF document document.Redact(); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document -document.Save(stream); -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get first page from the document @@ -456,6 +514,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load a PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get first page from the document @@ -488,9 +552,13 @@ The following code snippet explains how to redact the information from a page wi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Redaction-without-fill-color-and-appearance/.NET/Redaction-without-fill-color-and-appearance/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load the existing PDF document -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -502,17 +570,19 @@ page.AddRedaction(redaction); //Redact the contents from the PDF document document.Redact(); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document -document.Save(stream); -//Close the document +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get first page from the document @@ -531,6 +601,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load a PDF document Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get first page from the document @@ -561,6 +636,11 @@ The following code example demonstrates how to apply a appearance fill color to {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Redaction-fill-color-customization/.NET/Redaction-fill-color-customization/Program.cs" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf; +using Syncfusion.Drawing; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -593,16 +673,19 @@ annot.SetAppearance(true); //Add the annotation to the page page.Annotations.Add(annot); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the PDF document +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf; +using Syncfusion.Drawing; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -644,6 +727,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf +Imports System.Drawing + ' Create a new PDF document Dim document As PdfDocument = New PdfDocument() ' Create a new page @@ -696,9 +784,13 @@ The code snippet to illustrate the same is given below. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Get-the-redaction-progress-from-PDF-document/.NET/Get-the-redaction-progress-from-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load an existing PDF document -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage; @@ -708,11 +800,8 @@ PdfRedaction redaction = new PdfRedaction(new RectangleF(37, 94, 50, 10), System page.AddRedaction(redaction); loadedDocument.RedactionProgress += redaction_TrackProgress; -//Create the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -loadedDocument.Save(stream); -//Close the document +//Save and close the PDF document +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); //Event handler for Track redaction process @@ -725,6 +814,11 @@ void redaction_TrackProgress(object sender, RedactionProgressEventArgs arguments {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); //Load the first page @@ -751,6 +845,11 @@ MessageBox.Show(String.Format("Redaction Process " + arguments.Progress + " % co {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") 'Load the first page @@ -763,8 +862,7 @@ page.Redactions.Add(redaction) loadedDocument.RedactionProgress += redaction_TrackProgress 'Save the document -Dim stream As New MemoryStream() -loadedDocument.Save(stream) +loadedDocument.Save("Output.pdf") 'Close the document loadedDocument.Close(True) @@ -786,9 +884,13 @@ Using [PdfRedactionResult](https://help.syncfusion.com/cr/document-processing/Sy {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Get-the-result-of-redaction-with-other-information/.NET/Get-the-result-of-redaction-with-other-information/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load an existing PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page. PdfLoadedPage page = loadedDocument.Pages[0]; @@ -807,17 +909,19 @@ else Console.WriteLine("Content not redacted properly..."); } -//Create the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -loadedDocument.Save(stream); -//Close the document +//Save and close the PDF document +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load an existing PDF document PdfLoadedDocument lDoc = new PdfLoadedDocument("input.pdf"); //Load the first page @@ -847,6 +951,11 @@ lDoc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load an existing PDF Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") 'Load the first page @@ -868,8 +977,7 @@ End If Next 'Save the document -Dim stream As New MemoryStream() -loadedDocument.Save(stream) +loadedDocument.Save("Output.pdf") 'Close the document loadedDocument.Close(True) @@ -889,9 +997,13 @@ The code snippet to illustrate the same is given below. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Redact-text-content-alone-on-the-redated-area/.NET/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load an existing PDF document -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); PdfRedaction redaction = new PdfRedaction(new RectangleF(150, 150, 60, 24), Color.Transparent); //Only the text within the redaction bounds should be redacted. redaction.TextOnly = true; @@ -900,17 +1012,18 @@ foreach (PdfLoadedPage loadedPage in document.Pages) loadedPage.AddRedaction(redaction); } document.Redact(); -//Create the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into stream -loadedDocument.Save(stream); -//Close the document +//Save and close the PDF document +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Redaction; + //Load a PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); PdfRedaction redaction = new PdfRedaction(new RectangleF(150, 150, 60, 24), Color.Transparent); @@ -930,6 +1043,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Redaction + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf") 'Create PDF redaction for the page @@ -940,8 +1058,7 @@ For Each loadedPage As PdfLoadedPage In document.Pages Next document.Redact() 'Save the document -Dim stream As New MemoryStream() -loadedDocument.Save(stream) +loadedDocument.Save("Output.pdf") 'Close the document loadedDocument.Close(True) @@ -962,11 +1079,13 @@ The following code snippet explains how to find text by regular expression patte {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Find-text-by-regular-expression-pattern-and-redact-it-from-PDF-document/.NET/Find_text_by_regular_expression/Program.cs" %} - //Create stream from an existing PDF document. - FileStream docStream = new FileStream(Path.GetFullPath("Input.pdf"), FileMode.Open, FileAccess.Read); + using Syncfusion.Pdf.Parsing; + using Syncfusion.Pdf.Redaction; + using Syncfusion.Pdf; + using System.Text.RegularExpressions; //Load the existing PDF document. - PdfLoadedDocument document = new PdfLoadedDocument(docStream); + PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document. PdfLoadedPage page = document.Pages[0] as PdfLoadedPage; @@ -1001,17 +1120,19 @@ The following code snippet explains how to find text by regular expression patte //Redact the contents from the PDF document. document.Redact(); - //Creating the stream object - MemoryStream stream = new MemoryStream(); - //Save the document - document.Save(stream); - //Close the document + //Save and close the PDF document + document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf.Parsing; + using Syncfusion.Pdf.Redaction; + using Syncfusion.Pdf; + using System.Text.RegularExpressions; + //Load a PDF document PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -1052,11 +1173,13 @@ The following code snippet explains how to find text by regular expression patte {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create stream from an existing PDF document. - Dim docStream As New FileStream(Path.GetFullPath("Input.pdf"), FileMode.Open, FileAccess.Read) + Imports Syncfusion.Pdf.Parsing + Imports Syncfusion.Pdf.Redaction + Imports Syncfusion.Pdf + Imports System.Text.RegularExpressions 'Load the existing PDF document. - Dim document As New PdfLoadedDocument(docStream) + Dim document As New PdfLoadedDocument("Input.pdf") 'Get the first page from the document. Dim page As PdfLoadedPage = TryCast(document.Pages(0), PdfLoadedPage) @@ -1087,10 +1210,8 @@ The following code snippet explains how to find text by regular expression patte 'Redact the contents from the PDF document. document.Redact() - 'Creating the stream object - Dim stream As New MemoryStream() 'Save the document - document.Save(stream) + document.Save("Output.pdf") 'Close the document document.Close(True) From c4cc78be8784d8d36a161bdcb73395dc4c425faa Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Thu, 9 Oct 2025 18:16:13 +0530 Subject: [PATCH 10/22] resolved errors --- ...rt-HTML-to-PDF-in-Azure-Functions-Linux.md | 2 +- .../htmlconversion_images/ShellCommand.png | Bin 129507 -> 37311 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md index b899c8208..09ef3247f 100644 --- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md +++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md @@ -77,7 +77,7 @@ echo "Dependencies installation script completed." Step 6: Set Copy to Output Directory as “Copy if newer” to the dependenciesInstall.sh file. -![Convert HTMLToPDF Azure Functions Step6](htmlconversion_images\CopyToNewwer.png) +![Convert HTMLToPDF Azure Functions Step6](htmlconversion_images\CopyToNewer.png) Step 7: Include the following namespaces in Function1.cs file. diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/ShellCommand.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/ShellCommand.png index 40cd59ddad4a8c78f9602e90bcd4667b7e4092dc..459eedd6ed69ee61e15c1791ef21a9ea4f216668 100644 GIT binary patch literal 37311 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 literal 129507 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∾mA`}j!HmPEVBVcf1OwZq0!UFKnkb|Gze{1M&seoCvf-8d%mDN{B z%gHa6>w#`iFZ|9poJw=K2 z8zeVlpf96+Jy{R`DrfjP$m}+f*(P(s*bc8Kk0LBIl$4x4A^eRgoRR?+ld_+7BTi`) z;Z{q?8H0pRgU;4FapFc*UFXNhWN_-+kt=v74=YQyjM%icDDi4p!#uxFi?FDqHa=A$ z%J=B%)6?-VZ3)DX2Yg|w`8lW$7;a0C+{1*qmo&`>dW<%b!B88)K^L<;_$bSuI$J>X z1&^)``MBm|C@*SC#>+2^eeDqsa10_zBN_%8fHi2Sb!Acc+8Z#p`^>) z@j-kR6H`fk4$xkoq4$R-M?wKreEh-`SD^=0GN3Up;ptc=3My$-lO8^-(T_=UK@}`e zO3MJPn{G|Nx{_JO@@uSG%HbX!8OFS3s00Djb_iQo`J}w8c`$TQYbgQdjUn}!=-3Mh z*L#t!JSrMGg~@j6Vkn5?`H_W!zQH&9L;6E(QLleyoMJpi5!=;SoAjIV?^acLQ?S8D}0% zWgQ(EbsvtN87CBH7dG(xFuSCo6OkDel^VAT2R~ciPd6G9r)ggrKyF6{$bSgv`Nblc zD8Hmst{P?9K|@1BOm}1UE`bxLc2LWXpl-T4hu?KXrtA=Ry;QQ7QRo&c97swe%LU9! zll75RJ%&t9b`RbVzJ^1x^}18GnE5?}m#mVbE~6#rhlgnymQdbsn_f&xWLUY!PhO4pU`Is z*IeLp_Ca!Ho3bsVEpps){R}+lZU>9S1&N$sA2x#m9OEAp~GwI2gf8k zaScCv9#6Ow>D=<{S@W29+WKZR3ZCVfhH`*O842ImKQP)yRVw2gw~ObgS1&GkC^PCn z{)O(gVx6?%XXDGsZ-9!qW_X>5BmYF}ezYH5&B`->BV@bYsVX4}k$ZXQUrY)JZYN~D zG3xL~%d%|RI>l*naP%5LZ`MM;>8|RD9m?-oA~da$Wkrj)4x}xTQ2xqWgE$e=hu= mzau6N;eS70C~F-1{(d1|7P% Date: Tue, 14 Oct 2025 10:39:48 +0530 Subject: [PATCH 11/22] 986588:Details provided for 'next' in styles document Editor --- Document-Processing/Word/Word-Processor/angular/styles.md | 2 +- .../Word/Word-Processor/asp-net-core/styles.md | 4 ++-- Document-Processing/Word/Word-Processor/asp-net-mvc/styles.md | 4 ++-- Document-Processing/Word/Word-Processor/blazor/styles.md | 2 +- .../Word/Word-Processor/javascript-es5/styles.md | 4 ++-- .../Word/Word-Processor/javascript-es6/styles.md | 4 ++-- Document-Processing/Word/Word-Processor/react/styles.md | 2 +- Document-Processing/Word/Word-Processor/vue/styles.md | 4 ++-- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/angular/styles.md b/Document-Processing/Word/Word-Processor/angular/styles.md index 40795a2e9..040334bdb 100644 --- a/Document-Processing/Word/Word-Processor/angular/styles.md +++ b/Document-Processing/Word/Word-Processor/angular/styles.md @@ -18,7 +18,7 @@ A Style in document editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/styles.md b/Document-Processing/Word/Word-Processor/asp-net-core/styles.md index 27bd641e5..b7754f394 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/styles.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/styles.md @@ -8,7 +8,7 @@ documentation: ug --- -# Styles +# Styles in Document Editor Control Styles are useful for applying a set of formatting consistently throughout the document. In document editor, styles are created and added to a document programmatically or via the built-in Styles dialog. @@ -18,7 +18,7 @@ A Style in document editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/styles.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/styles.md index f87df2f8c..db13eb620 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/styles.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/styles.md @@ -8,7 +8,7 @@ documentation: ug --- -# Styles +# Styles in Document Editor Control Styles are useful for applying a set of formatting consistently throughout the document. In document editor, styles are created and added to a document programmatically or via the built-in Styles dialog. @@ -18,7 +18,7 @@ A Style in document editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. diff --git a/Document-Processing/Word/Word-Processor/blazor/styles.md b/Document-Processing/Word/Word-Processor/blazor/styles.md index a8088c46e..e6d317ce6 100644 --- a/Document-Processing/Word/Word-Processor/blazor/styles.md +++ b/Document-Processing/Word/Word-Processor/blazor/styles.md @@ -17,7 +17,7 @@ A Style in document editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/styles.md b/Document-Processing/Word/Word-Processor/javascript-es5/styles.md index 8956f91f5..56527a2d6 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es5/styles.md +++ b/Document-Processing/Word/Word-Processor/javascript-es5/styles.md @@ -18,7 +18,7 @@ A Style in Document Editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. @@ -206,7 +206,7 @@ let paragraphStyles = documentEditor.getStyles('Character'); ## Modify an existing style -You can modify a existing style with the specified style properties using [`createStyle`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/editor#createStyle) method. If modifyExistingStyle parameter is set to `true` the style properties is updated to the existing style. +You can modify a existing style with the specified style properties using [`createStyle`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/editor/#createStyle) method. If modifyExistingStyle parameter is set to `true` the style properties is updated to the existing style. The following illustrate to modify an existing style. diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/styles.md b/Document-Processing/Word/Word-Processor/javascript-es6/styles.md index ed1627bef..18a11c916 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/styles.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/styles.md @@ -18,7 +18,7 @@ A Style in Document Editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. @@ -187,7 +187,7 @@ let paragraphStyles = documentEditor.getStyles('Character'); ## Modify an existing style -You can modify a existing style with the specified style properties using [`createStyle`](https://ej2.syncfusion.com/documentation/api/document-editor/editor#createStyle) method. If modifyExistingStyle parameter is set to `true` the style properties is updated to the existing style. +You can modify a existing style with the specified style properties using [`createStyle`](https://ej2.syncfusion.com/documentation/api/document-editor/editor/#createStyle) method. If modifyExistingStyle parameter is set to `true` the style properties is updated to the existing style. The following illustrate to modify an existing style. diff --git a/Document-Processing/Word/Word-Processor/react/styles.md b/Document-Processing/Word/Word-Processor/react/styles.md index 65e3db229..8c6b2ffd5 100644 --- a/Document-Processing/Word/Word-Processor/react/styles.md +++ b/Document-Processing/Word/Word-Processor/react/styles.md @@ -18,7 +18,7 @@ A Style in document editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. diff --git a/Document-Processing/Word/Word-Processor/vue/styles.md b/Document-Processing/Word/Word-Processor/vue/styles.md index c73d404d4..b2d80cb26 100644 --- a/Document-Processing/Word/Word-Processor/vue/styles.md +++ b/Document-Processing/Word/Word-Processor/vue/styles.md @@ -18,7 +18,7 @@ A Style in document editor should have the following properties: * **name**: Name of the style. All styles in a document have a unique name, which is used as an identifier when applying the style. * **type**: Specifies the document elements that the style will target. For example, paragraph or character. -* **next**: Specifies that the current style inherits the style set to this property. This is how hierarchical styles are defined. +* **next**: Specifies the style that should be automatically applied to a new paragraph created after the current one. * **link**: Provides a relation between the paragraph and character style. * **characterFormat**: Specifies the properties of paragraph and character style. * **paragraphFormat**: Specifies the properties of paragraph style. @@ -185,7 +185,7 @@ let paragraphStyles = this.$refs.documenteditor.ej2Instances.documentEditor.getS ## Modify an existing style -You can modify a existing style with the specified style properties using [`createStyle`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/editor#createStyle) method. If modifyExistingStyle parameter is set to `true` the style properties is updated to the existing style. +You can modify a existing style with the specified style properties using [`createStyle`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/editor/#createStyle) method. If modifyExistingStyle parameter is set to `true` the style properties is updated to the existing style. The following illustrate to modify an existing style. From 6aa31da4730aa8861fcab27330a8488efe52d98b Mon Sep 17 00:00:00 2001 From: irfanajaffer <93319208+irfanajaffer@users.noreply.github.com> Date: Thu, 16 Oct 2025 17:58:08 +0530 Subject: [PATCH 12/22] removed unwanted changes --- .../NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md index 09ef3247f..2662d621a 100644 --- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md +++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Azure-Functions-Linux.md @@ -35,7 +35,7 @@ Step 5: Create a shell file with the below commands in the project and name it a echo "Starting dependencies installation script..." -# Ensure rsync is installed + if ! command -v rsync &> /dev/null; then echo "rsync could not be found, installing..." apt-get update && apt-get install -yq rsync @@ -370,4 +370,5 @@ An online sample link to [convert HTML to PDF document](https://ej2.syncfusion.c Click [here](https://www.syncfusion.com/document-processing/pdf-framework/net-core/html-to-pdf) to explore the rich set of Syncfusion® HTML to PDF converter library features. -An online sample link to [convert HTML to PDF document](https://ej2.syncfusion.com/aspnetcore/PDF/HtmltoPDF#/material3) in ASP.NET Core. \ No newline at end of file + +An online sample link to [convert HTML to PDF document](https://ej2.syncfusion.com/aspnetcore/PDF/HtmltoPDF#/material3) in ASP.NET Core. From 9f6c4caf48215f0f288776d9f25daab637d7a55c Mon Sep 17 00:00:00 2001 From: ManoMurugan Date: Fri, 17 Oct 2025 12:22:01 +0530 Subject: [PATCH 13/22] 986588: Details provided for next in styles document Editor From f20afe47e81c2184a49ba3e53189a577973b1b8c Mon Sep 17 00:00:00 2001 From: ManoMurugan Date: Fri, 17 Oct 2025 13:08:15 +0530 Subject: [PATCH 14/22] 985764: Update screen reader support in UG document Editor --- .../Word/Word-Processor/angular/accessibility.md | 2 +- .../Word/Word-Processor/blazor/accessibility.md | 2 +- .../Word/Word-Processor/javascript-es5/accessibility.md | 4 ++-- .../Word/Word-Processor/javascript-es6/accessibility.md | 4 ++-- .../Word/Word-Processor/react/accessibility.md | 2 +- Document-Processing/Word/Word-Processor/vue/accessibility.md | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/angular/accessibility.md b/Document-Processing/Word/Word-Processor/angular/accessibility.md index f8958627f..65663f34e 100644 --- a/Document-Processing/Word/Word-Processor/angular/accessibility.md +++ b/Document-Processing/Word/Word-Processor/angular/accessibility.md @@ -16,7 +16,7 @@ The accessibility compliance for the Document editor component is outlined below | -- | -- | | [WCAG 2.2 Support](https://ej2.syncfusion.com/angular/documentation/common/accessibility#accessibility-standards) | Intermediate | | [Section 508 Support](https://ej2.syncfusion.com/angular/documentation/common/accessibility#accessibility-standards) | Intermediate | -| [Screen Reader Support](https://ej2.syncfusion.com/angular/documentation/common/accessibility#screen-reader-support) | No | +| [Screen Reader Support](https://ej2.syncfusion.com/angular/documentation/common/accessibility#screen-reader-support) | Yes | | [Right-To-Left Support](https://ej2.syncfusion.com/angular/documentation/common/accessibility#right-to-left-support) | Yes | | [Color Contrast](https://ej2.syncfusion.com/angular/documentation/common/accessibility#color-contrast) | Yes | | [Mobile Device Support](https://ej2.syncfusion.com/angular/documentation/common/accessibility#mobile-device-support) | No | diff --git a/Document-Processing/Word/Word-Processor/blazor/accessibility.md b/Document-Processing/Word/Word-Processor/blazor/accessibility.md index 675369aaa..24c3be62f 100644 --- a/Document-Processing/Word/Word-Processor/blazor/accessibility.md +++ b/Document-Processing/Word/Word-Processor/blazor/accessibility.md @@ -17,7 +17,7 @@ The accessibility compliance for the Blazor Document Editor component is outline | -- | -- | | [WCAG 2.2 Support](https://blazor.syncfusion.com/documentation/common/accessibility#accessibility-standards) | Intermediate | | [Section 508 Support](https://blazor.syncfusion.com/documentation/common/accessibility#accessibility-standards) | Intermediate | -| [Screen Reader Support](https://blazor.syncfusion.com/documentation/common/accessibility#screen-reader-support) | No | +| [Screen Reader Support](https://blazor.syncfusion.com/documentation/common/accessibility#screen-reader-support) | Yes | | [Right-To-Left Support](https://blazor.syncfusion.com/documentation/common/accessibility#right-to-left-support) | Yes | | [Color Contrast](https://blazor.syncfusion.com/documentation/common/accessibility#color-contrast) | Yes | | [Mobile Device Support](https://blazor.syncfusion.com/documentation/common/accessibility#mobile-device-support) | No | diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/accessibility.md b/Document-Processing/Word/Word-Processor/javascript-es5/accessibility.md index 28eb64d02..92228fcc3 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es5/accessibility.md +++ b/Document-Processing/Word/Word-Processor/javascript-es5/accessibility.md @@ -1,6 +1,6 @@ --- layout: post -title: Accessibility in JavaScript (ES5) Document editor component | Syncfusion +title: Accessibility in JavaScript (ES5) Document editor | Syncfusion description: Learn here all about Accessibility in Syncfusion JavaScript (ES5) Document editor component of Syncfusion Essential JS 2 and more. control: Accessibility platform: document-processing @@ -16,7 +16,7 @@ The accessibility compliance for the Document editor component is outlined below | -- | -- | | [WCAG 2.2 Support](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#accessibility-standards) | Intermediate | | [Section 508 Support](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#accessibility-standards) | Intermediate | -| [Screen Reader Support](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#screen-reader-support) | No | +| [Screen Reader Support](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#screen-reader-support) | Yes | | [Right-To-Left Support](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#right-to-left-support) | Yes | | [Color Contrast](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#color-contrast) | Yes | | [Mobile Device Support](https://ej2.syncfusion.com/javascript/documentation/common/accessibility#mobile-device-support) | No | diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/accessibility.md b/Document-Processing/Word/Word-Processor/javascript-es6/accessibility.md index e7b9c8f6b..a0444b172 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/accessibility.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/accessibility.md @@ -1,6 +1,6 @@ --- layout: post -title: Accessibility in JavaScript (ES6) Document editor component | Syncfusion +title: Accessibility in JavaScript (ES6) Document editor | Syncfusion description: Learn here all about Accessibility in Syncfusion JavaScript (ES6) Document editor component of Syncfusion Essential JS 2 and more. control: Accessibility platform: document-processing @@ -16,7 +16,7 @@ The accessibility compliance for the Document editor component is outlined below | -- | -- | | [WCAG 2.2 Support](https://ej2.syncfusion.com/documentation/common/accessibility#accessibility-standards) | Intermediate | | [Section 508 Support](https://ej2.syncfusion.com/documentation/common/accessibility#accessibility-standards) | Intermediate | -| [Screen Reader Support](https://ej2.syncfusion.com/documentation/common/accessibility#screen-reader-support) | No | +| [Screen Reader Support](https://ej2.syncfusion.com/documentation/common/accessibility#screen-reader-support) | Yes | | [Right-To-Left Support](https://ej2.syncfusion.com/documentation/common/accessibility#right-to-left-support) | Yes | | [Color Contrast](https://ej2.syncfusion.com/documentation/common/accessibility#color-contrast) | Yes | | [Mobile Device Support](https://ej2.syncfusion.com/documentation/common/accessibility#mobile-device-support) | No | diff --git a/Document-Processing/Word/Word-Processor/react/accessibility.md b/Document-Processing/Word/Word-Processor/react/accessibility.md index 20cb00a98..fc61aca68 100644 --- a/Document-Processing/Word/Word-Processor/react/accessibility.md +++ b/Document-Processing/Word/Word-Processor/react/accessibility.md @@ -16,7 +16,7 @@ The accessibility compliance for the Document editor component is outlined below | -- | -- | | [WCAG 2.2 Support](https://ej2.syncfusion.com/react/documentation/common/accessibility#accessibility-standards) | Intermediate | | [Section 508 Support](https://ej2.syncfusion.com/react/documentation/common/accessibility#accessibility-standards) | Intermediate | -| [Screen Reader Support](https://ej2.syncfusion.com/react/documentation/common/accessibility#screen-reader-support) | No | +| [Screen Reader Support](https://ej2.syncfusion.com/react/documentation/common/accessibility#screen-reader-support) | Yes | | [Right-To-Left Support](https://ej2.syncfusion.com/react/documentation/common/accessibility#right-to-left-support) | Yes | | [Color Contrast](https://ej2.syncfusion.com/react/documentation/common/accessibility#color-contrast) | Yes | | [Mobile Device Support](https://ej2.syncfusion.com/react/documentation/common/accessibility#mobile-device-support) | No | diff --git a/Document-Processing/Word/Word-Processor/vue/accessibility.md b/Document-Processing/Word/Word-Processor/vue/accessibility.md index 3b9202ec6..4edd52805 100644 --- a/Document-Processing/Word/Word-Processor/vue/accessibility.md +++ b/Document-Processing/Word/Word-Processor/vue/accessibility.md @@ -16,7 +16,7 @@ The accessibility compliance for the Document editor component is outlined below | -- | -- | | [WCAG 2.2 Support](https://ej2.syncfusion.com/vue/documentation/common/accessibility#accessibility-standards) | Intermediate | | [Section 508 Support](https://ej2.syncfusion.com/vue/documentation/common/accessibility#accessibility-standards) | Intermediate | -| [Screen Reader Support](https://ej2.syncfusion.com/vue/documentation/common/accessibility#screen-reader-support) | No | +| [Screen Reader Support](https://ej2.syncfusion.com/vue/documentation/common/accessibility#screen-reader-support) | Yes | | [Right-To-Left Support](https://ej2.syncfusion.com/vue/documentation/common/accessibility#right-to-left-support) | Yes | | [Color Contrast](https://ej2.syncfusion.com/vue/documentation/common/accessibility#color-contrast) | Yes | | [Mobile Device Support](https://ej2.syncfusion.com/vue/documentation/common/accessibility#mobile-device-support) | No | From 1f9f004351a2c8de20465c4570060a144e807166 Mon Sep 17 00:00:00 2001 From: ManoMurugan Date: Fri, 17 Oct 2025 13:40:13 +0530 Subject: [PATCH 15/22] 983454: Add note in UG exported PDF Document editor --- .../angular/how-to/export-document-as-pdf.md | 5 +++-- .../how-to/export-document-as-pdf.md | 7 +++++-- .../how-to/export-document-as-pdf.md | 7 +++++-- .../how-to/export-document-as-pdf.md | 17 +++++++++-------- .../how-to/export-document-as-pdf.md | 19 ++++++++++--------- .../react/how-to/export-document-as-pdf.md | 17 ++++++++++------- .../vue/how-to/export-document-as-pdf.md | 15 +++++++++------ 7 files changed, 51 insertions(+), 36 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/angular/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/angular/how-to/export-document-as-pdf.md index 7ce2f6924..475f72d64 100644 --- a/Document-Processing/Word/Word-Processor/angular/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/angular/how-to/export-document-as-pdf.md @@ -17,8 +17,9 @@ In this article, we are going to see how to export the document as PDF format. Y Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/angular/documentation/api/document-editor/#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). >Note: -* You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). -* There is one limitation we can’t search the text because we are exporting the pdf as image. +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. +* You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). The following example code illustrates how to export the document as pdf in client-side. diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md index 79aebabb6..11e405e27 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md @@ -14,9 +14,12 @@ This article explains how to export the document as PDF format. You can export t ## Export the document as PDF in client-side -Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as PDF using `exportAsImage` API. Here, all pages will be converted to image and inserted as PDF pages (works like print as PDF). There is one limitation, the text can't be searched because the PDF is exported as image. +Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as PDF using `exportAsImage` API. Here, all pages will be converted to image and inserted as PDF pages (works like print as PDF). -N> You can install the PDF export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). +>Note: +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. +* You can install the PDF export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md index d1a280574..ef89e7f63 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md @@ -14,9 +14,12 @@ This article explains how to export the document as PDF format. You can export t ## Export the document as PDF in client-side -Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as PDF using `exportAsImage` API. Here, all pages will be converted to image and inserted as PDF pages (works like print as PDF). There is one limitation, the text can't be searched because the PDF is exported as image. +Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as PDF using `exportAsImage` API. Here, all pages will be converted to image and inserted as PDF pages (works like print as PDF). -N> You can install the PDF export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). +>Note: +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. +* You can install the PDF export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). {% tabs %} diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md index 8bd77ef01..14de6e90f 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md @@ -1,6 +1,6 @@ --- layout: post -title: Export document as pdf in JavaScript (ES5) Document editor control | Syncfusion +title: Export PDF in JavaScript (ES5) Document editor | Syncfusion description: Learn here all about Export document as pdf in Syncfusion JavaScript (ES5) Document editor control of Syncfusion Essential JS 2 and more. platform: document-processing control: Export document as pdf @@ -10,15 +10,16 @@ domainurl: ##DomainURL## # Export document as pdf in JavaScript (ES5) Document editor control -In this article, we are going to see how to export the document as Pdf format. You can export the document as Pdf in following ways: +In this article, we are going to see how to export the document as PDF format. You can export the document as PDF in following ways: ## Export the document as pdf in client-side -Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). +Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). >Note: +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. * You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). -* There is one limitation we can’t search the text because we are exporting the pdf as image. The following example code illustrates how to export the document as pdf in client-side. @@ -68,11 +69,11 @@ The following example code illustrates how to export the document as pdf in clie ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Synfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. -The following way illustrates how to convert the document as Pdf: +The following way illustrates how to convert the document as PDF: -* Using [`serialize`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor#serialize) API, convert the document as Sfdt and send it to server-side. +* Using [`serialize`](https://ej2.syncfusion.com/javascript/documentation/api/document-editor/#serialize) API, convert the document as Sfdt and send it to server-side. The following example code illustrates how to convert the document to sfdt and pass it to server-side. @@ -104,7 +105,7 @@ document.getElementById('export').addEventListener('click', function () { > The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` utilized in the Document Editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, please host your own web service with your required server configurations. You can refer and reuse the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service and use for the serviceUrl property. * Using Save API in server-side, you can convert the sfdt to stream. -* Finally, convert the stream to Pdf using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. +* Finally, convert the stream to PDF using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. The following example code illustrates how to process the sfdt in server-side. diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md index b89656784..c3308d8b6 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md @@ -1,6 +1,6 @@ --- layout: post -title: Export document as pdf in JavaScript (ES6) Document editor control | Syncfusion +title: Export PDF in JavaScript (ES6) Document editor | Syncfusion description: Learn here all about Export document as pdf in Syncfusion JavaScript (ES6) Document editor control of Syncfusion Essential JS 2 and more. platform: document-processing control: Export document as pdf @@ -10,15 +10,16 @@ domainurl: ##DomainURL## # Export document as pdf in JavaScript (ES6) Document editor control -In this article, we are going to see how to export the document as Pdf format. You can export the document as Pdf in following ways: +In this article, we are going to see how to export the document as PDF format. You can export the document as PDF in following ways: ## Export the document as pdf in client-side -Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/documentation/api/document-editor#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). +Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/documentation/api/document-editor/#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). >Note: -* You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). -* There is one limitation we can’t search the text because we are exporting the pdf as image. +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. +* You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). The following example code illustrates how to export the document as pdf in client-side. @@ -97,11 +98,11 @@ document.getElementById('export').addEventListener('click', function () { ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Synfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. -The following way illustrates how to convert the document as Pdf: +The following way illustrates how to convert the document as PDF: -* Using [`serialize`](https://ej2.syncfusion.com/documentation/api/document-editor#serialize) API, convert the document as Sfdt and send it to server-side. +* Using [`serialize`](https://ej2.syncfusion.com/documentation/api/document-editor/#serialize) API, convert the document as Sfdt and send it to server-side. The following example code illustrates how to convert the document to sfdt and pass it to server-side. @@ -133,7 +134,7 @@ document.getElementById('export').addEventListener('click', function () { > The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` utilized in the Document Editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, please host your own web service with your required server configurations. You can refer and reuse the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service and use for the serviceUrl property. * Using Save API in server-side, you can convert the sfdt to stream. -* Finally, convert the stream to Pdf using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. +* Finally, convert the stream to PDF using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. The following example code illustrates how to process the sfdt in server-side. diff --git a/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md index 7159882ce..44dfa5586 100644 --- a/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md @@ -10,13 +10,16 @@ domainurl: ##DomainURL## # Export document as pdf in React Document editor component -In this article, we are going to see how to export the document as Pdf format. You can export the document as Pdf in following ways: +In this article, we are going to see how to export the document as PDF format. You can export the document as PDF in following ways: ## Export the document as pdf in client-side -Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/react/documentation/api/document-editor#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). There is one limitation we can’t search the text because we are exporting the pdf as image. +Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/react/documentation/api/document-editor/#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). ->Note: You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). +>Note: +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. +* You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). The following example code illustrates how to export the document as pdf in client-side. @@ -100,11 +103,11 @@ ReactDOM.render(, document.getElementById('sample')); ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Synfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. -The following way illustrates how to convert the document as Pdf: +The following way illustrates how to convert the document as PDF: -* Using [`serialize`](https://ej2.syncfusion.com/react/documentation/api/document-editor#serialize) API, convert the document as Sfdt and send it to server-side. +* Using [`serialize`](https://ej2.syncfusion.com/react/documentation/api/document-editor/#serialize) API, convert the document as Sfdt and send it to server-side. The following example code illustrates how to convert the document to sfdt and pass it to server-side. @@ -150,7 +153,7 @@ ReactDOM.render(, document.getElementById('sample')); > The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` utilized in the Document Editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, please host your own web service with your required server configurations. You can refer and reuse the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service and use for the serviceUrl property. * Using Save API in server-side, you can convert the sfdt to stream. -* Finally, convert the stream to Pdf using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. +* Finally, convert the stream to PDF using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. The following example code illustrates how to process the sfdt in server-side. diff --git a/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md index 1255a77a3..3f0ea4638 100644 --- a/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md @@ -10,13 +10,16 @@ domainurl: ##DomainURL## # Export document as pdf in Vue Document editor component -In this article, we are going to see how to export the document as Pdf format. You can export the document as Pdf in following ways: +In this article, we are going to see how to export the document as PDF format. You can export the document as PDF in following ways: ## Export the document as pdf in client-side -Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/vue/documentation/api/document-editor#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). There is one limitation we can’t search the text because we are exporting the pdf as image. +Use [`pdf export component`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export) in application level to export the document as pdf using [`exportAsImage`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/#exportasimage) API. Here, all pages will be converted to image and inserted as pdf pages(works like print as PDF). ->Note: You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). +>Note: +* The Document Editor exports PDFs by converting pages into images on the client side, which may slightly increase file size compared to text-based PDFs. +* Text search is not supported in the exported PDF, as the content is stored as images. +* You can install the pdf export packages from this [`link`](https://www.npmjs.com/package/@syncfusion/ej2-pdf-export). The following example code illustrates how to export the document as pdf in client-side. @@ -180,11 +183,11 @@ export default { ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Synfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. The following way illustrates how to convert the document as Pdf: -* Using [`serialize`](https://ej2.syncfusion.com/vue/documentation/api/document-editor#serialize) API, convert the document as Sfdt and send it to server-side. +* Using [`serialize`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/#serialize) API, convert the document as Sfdt and send it to server-side. The following example code illustrates how to convert the document to sfdt and pass it to server-side. @@ -270,7 +273,7 @@ export default { > The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` utilized in the Document Editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, please host your own web service with your required server configurations. You can refer and reuse the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service and use for the serviceUrl property. * Using Save API in server-side, you can convert the sfdt to stream. -* Finally, convert the stream to Pdf using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. +* Finally, convert the stream to PDF using [`Syncfusion.DocIORenderer.Net.Core`](https://www.nuget.org/packages/Syncfusion.DocIORenderer.Net.Core) library. The following example code illustrates how to process the sfdt in server-side. From 289d268ca47ecbc200d50c5ba6d292bad6ed4d37 Mon Sep 17 00:00:00 2001 From: ManoMurugan Date: Fri, 17 Oct 2025 14:46:24 +0530 Subject: [PATCH 16/22] 983454: resolved CI failures --- .../asp-net-core/how-to/export-document-as-pdf.md | 2 +- .../javascript-es5/how-to/export-document-as-pdf.md | 2 +- .../javascript-es6/how-to/export-document-as-pdf.md | 2 +- .../Word-Processor/react/how-to/export-document-as-pdf.md | 2 +- .../Word/Word-Processor/vue/how-to/export-document-as-pdf.md | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md index 11e405e27..a18c7b9c1 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/asp-net-core/how-to/export-document-as-pdf.md @@ -1,6 +1,6 @@ --- layout: post -title: Export PDF Document in Document Editor Component |Syncfusion +title: Export PDF in Document Editor Component |Syncfusion description: Learn here all about export document as PDF in Syncfusion Document Editor component of Syncfusion Essential JS 2 and more. platform: document-processing control: Export Document As PDF diff --git a/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md index 14de6e90f..bcf883f27 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/javascript-es5/how-to/export-document-as-pdf.md @@ -69,7 +69,7 @@ The following example code illustrates how to export the document as pdf in clie ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as PDF in server-side. Here, you can search the text. The following way illustrates how to convert the document as PDF: diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md index c3308d8b6..5f99388ae 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/how-to/export-document-as-pdf.md @@ -98,7 +98,7 @@ document.getElementById('export').addEventListener('click', function () { ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as PDF in server-side. Here, you can search the text. The following way illustrates how to convert the document as PDF: diff --git a/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md index 44dfa5586..b3db064b8 100644 --- a/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/react/how-to/export-document-as-pdf.md @@ -103,7 +103,7 @@ ReactDOM.render(, document.getElementById('sample')); ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as PDF in server-side. Here, you can search the text. The following way illustrates how to convert the document as PDF: diff --git a/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md index 3f0ea4638..3a7b7ff7c 100644 --- a/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/vue/how-to/export-document-as-pdf.md @@ -183,9 +183,9 @@ export default { ## Export document as pdf in server-side using Syncfusion® DocIO -With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as Pdf in server-side. Here, you can search the text. +With the help of [`Syncfusion DocIO`](https://help.syncfusion.com/file-formats/docio/word-to-pdf), you can export the document as PDF in server-side. Here, you can search the text. -The following way illustrates how to convert the document as Pdf: +The following way illustrates how to convert the document as PDF: * Using [`serialize`](https://ej2.syncfusion.com/vue/documentation/api/document-editor/#serialize) API, convert the document as Sfdt and send it to server-side. From 793690ca8a27042d1595587acdb779b82b124057 Mon Sep 17 00:00:00 2001 From: ManoSF4839 Date: Fri, 17 Oct 2025 15:39:17 +0530 Subject: [PATCH 17/22] Update title for PDF export documentation Ci failure --- .../asp-net-mvc/how-to/export-document-as-pdf.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md index ef89e7f63..5ffe74ec0 100644 --- a/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md +++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/how-to/export-document-as-pdf.md @@ -1,6 +1,6 @@ --- layout: post -title: Export PDF Document in ASP.NET MVC Document Editor Component |Syncfusion +title: Export PDF in ASP.NET MVC Document Editor Component |Syncfusion description: Learn here all about export document as PDF in Syncfusion ASP.NET MVC Document Editor component of Syncfusion Essential JS 2 and more. platform: document-processing control: Export Document As PDF @@ -85,4 +85,4 @@ public void ExportPdf([FromBody] SaveParameter data) ``` -Get the complete working sample in this [`link`](https://github.com/SyncfusionExamples/Export-document-as-PDF-in-Document-Editor/). \ No newline at end of file +Get the complete working sample in this [`link`](https://github.com/SyncfusionExamples/Export-document-as-PDF-in-Document-Editor/). From c996ac5f5e7f556027b75b8756024101b483d664 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Thu, 9 Oct 2025 18:27:28 +0530 Subject: [PATCH 18/22] 986143-ug: Updated the SignerName details also in the Signature information in Digital Signature. --- .../NET/Working-with-DigitalSignature.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md index df6b82859..5ccce7b8c 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-DigitalSignature.md @@ -38,6 +38,7 @@ FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAcce PdfBitmap signatureImage = new PdfBitmap(imageStream); //Sets signature information. signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -76,6 +77,7 @@ PdfSignature signature = new PdfSignature(document, page, pdfCert, "Signature"); PdfBitmap signatureImage = new PdfBitmap(@"signature.jpg"); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -105,6 +107,7 @@ Dim signature As New PdfSignature(document, page, pdfCert, "Signature") Dim signatureImage As New PdfBitmap("signature.jpg") 'Sets signature information signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -147,6 +150,7 @@ FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAcce PdfBitmap signatureImage = new PdfBitmap(imageStream); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -187,6 +191,7 @@ PdfSignature signature = new PdfSignature(document, page, pdfCert, "Signature"); PdfBitmap signatureImage = new PdfBitmap(@"signature.jpg"); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -218,6 +223,7 @@ Dim signature As New PdfSignature(document, page, pdfCert, "Signature") Dim signatureImage As New PdfBitmap("signature.jpg") 'Sets signature information signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -345,6 +351,7 @@ FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAcce PdfBitmap signatureImage = new PdfBitmap(imageStream); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -386,6 +393,7 @@ PdfSignature signature = new PdfSignature(document, page, pdfCertificate, "Signa PdfBitmap signatureImage = new PdfBitmap(@"signature.jpg"); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -417,6 +425,7 @@ Dim signature As New PdfSignature(document, page, pdfCertificate, "Signature") Dim signatureImage As New PdfBitmap("signature.jpg") 'Sets signature information signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -1840,6 +1849,7 @@ PdfBitmap signatureImage = new PdfBitmap(imageStream); signature.EnableValidationAppearance = true; //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -1879,6 +1889,7 @@ PdfBitmap signatureImage = new PdfBitmap(@"signature.jpg"); //Sets enable signature validation appearance signature.EnableValidationAppearance = true; //Sets signature information +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -1910,6 +1921,7 @@ Dim signatureImage As New PdfBitmap("signature.jpg") signature.EnableValidationAppearance = True 'Sets signature info signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -1954,6 +1966,7 @@ PdfBitmap image = new PdfBitmap(imageStream); signature.TimeStampServer = new TimeStampServer(new Uri("http://syncfusion.digistamp.com"), "user", "123456"); //Sets signature info signature.Bounds = new RectangleF(new PointF(0, 0), image.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -1997,6 +2010,7 @@ PdfBitmap image = new PdfBitmap(@"syncfusion_logo.jpeg"); signature.TimeStampServer = new TimeStampServer(new Uri("http://syncfusion.digistamp.com"), "user", "123456"); //Sets signature info signature.Bounds = new RectangleF(new PointF(0, 0), image.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -2028,6 +2042,7 @@ Dim image As New PdfBitmap("syncfusion_logo.jpeg") signature.TimeStampServer = New TimeStampServer(New Uri("http://syncfusion.digistamp.com"), "user", "123456") 'Sets signature info signature.Bounds = New RectangleF(New PointF(0, 0), image.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -2481,6 +2496,7 @@ FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAcce PdfBitmap signatureImage = new PdfBitmap(imageStream); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -2523,6 +2539,7 @@ settings.CryptographicStandard = CryptographicStandard.CADES; PdfBitmap signatureImage = new PdfBitmap(@"signature.jpg"); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -2556,6 +2573,7 @@ settings.CryptographicStandard = CryptographicStandard.CADES Dim signatureImage As New PdfBitmap("signature.jpg") 'Sets signature info signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -2611,6 +2629,7 @@ FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAcce PdfBitmap signatureImage = new PdfBitmap(imageStream); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -2653,6 +2672,7 @@ settings.DigestAlgorithm = DigestAlgorithm.SHA256; PdfBitmap signatureImage = new PdfBitmap(@"signature.jpg"); //Sets signature information signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -2686,6 +2706,7 @@ settings.DigestAlgorithm = DigestAlgorithm.SHA256 Dim signatureImage As New PdfBitmap("signature.jpg") 'Sets signature info signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." @@ -4165,6 +4186,7 @@ FileStream imageStream = new FileStream("signature.jpg", FileMode.Open, FileAcce PdfBitmap signatureImage = new PdfBitmap(imageStream); //Set the signature information. signature.Bounds = new RectangleF(new PointF(0, 0), signatureImage.PhysicalDimension); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -4203,6 +4225,7 @@ PdfSignature signature = new PdfSignature(document, page, pdfCert, "Signature"); PdfBitmap signatureImage = new PdfBitmap(@"signature.png"); //Sets signature information. signature.Bounds = new RectangleF(0,0,200,100); +signature.SignedName = "Syncfusion"; signature.ContactInfo = "johndoe@owned.us"; signature.LocationInfo = "Honolulu, Hawaii"; signature.Reason = "I am author of this document."; @@ -4233,6 +4256,7 @@ Dim signature As New PdfSignature(document, page, pdfCert, "Signature") Dim signatureImage As New PdfBitmap("signature.jpg") 'Set the signature information. signature.Bounds = New RectangleF(New PointF(0, 0), signatureImage.PhysicalDimension) +signature.SignedName = "Syncfusion" signature.ContactInfo = "johndoe@owned.us" signature.LocationInfo = "Honolulu, Hawaii" signature.Reason = "I am author of this document." From 62ba33eb5155298a1373b3fc21e4f6f75b593e95 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Fri, 10 Oct 2025 09:57:40 +0530 Subject: [PATCH 19/22] 986143-ug: Resolved CI failures. --- Document-Processing/PDF/PDF-Library/NET/Split-Documents.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Split-Documents.md b/Document-Processing/PDF/PDF-Library/NET/Split-Documents.md index dbd2375e5..5bf488845 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Split-Documents.md +++ b/Document-Processing/PDF/PDF-Library/NET/Split-Documents.md @@ -126,7 +126,7 @@ loadedDocument.Close(true); Imports Syncfusion.Pdf.Parsing 'Create the values. -Dim values As Integer(,) = New Integer(,) {{2, 5},{8, 10}} +Dim values As Integer(,) = New Integer(,) {{2, 5}, {8, 10}} 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Set a output path From 7f2e27356a1a017d95091ae4a0136acf831c8f4c Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Fri, 10 Oct 2025 12:46:52 +0530 Subject: [PATCH 20/22] 985863-1: UG documentation feedback for PDF library- Part 2 --- .../PDF-Library/NET/Working-with-Security.md | 392 ++++++++++----- .../PDF-Library/NET/Working-with-Shapes.md | 417 ++++++++++++---- .../NET/Working-with-Tagged-PDF.md | 455 +++++++++++------- 3 files changed, 878 insertions(+), 386 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md index 6947d09c0..c4f7837f2 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md @@ -26,6 +26,11 @@ User password: Prevents people from opening or viewing a PDF document. Once the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-PDF-with-RC4-using-user-password/.NET/Encrypt-PDF-with-RC4-using-user-password/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -46,16 +51,19 @@ security.UserPassword = "password"; //Draw the text. graphics.DrawString("Encrypted with RC4 128bit", font, brush, new PointF(0, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -84,6 +92,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -124,6 +137,11 @@ Owner password: Sets PDF document restrictions, which can include printing, cont {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-PDF-with-RC4-using-owner-password/.NET/Encrypt-PDF-with-RC4-using-owner-password/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -147,16 +165,19 @@ security.UserPassword = "password"; //Draw the text. graphics.DrawString("This document is protected with owner password", font, brush, new PointF(0, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -188,6 +209,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -229,6 +255,11 @@ You can encrypt PDF document by specifying the [Algorithm](https://help.syncfusi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-PDF-with-AES-using-user-password/.NET/Encrypt-PDF-with-AES-using-user-password/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -249,16 +280,19 @@ security.UserPassword = "password"; //Draw the text. graphics.DrawString("Encrypted with AES 256bit", font, brush, new PointF(0, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -287,6 +321,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -323,6 +362,11 @@ You can protect the PDF document from printing, editing, copying with the [Owner {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-PDF-with-AES-using-owner-password/.NET/Encrypt-PDF-with-AES-using-owner-password/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -346,16 +390,19 @@ security.UserPassword = "password"; //Draw the text. graphics.DrawString("This document is protected with owner password", font, brush, new PointF(0, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -387,6 +434,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -432,6 +484,11 @@ Refer to the following code example for further details. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Secure_data%20_with%20_AES_GCM/.NET/Secure_data%20_with%20_AES_GCM/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -461,17 +518,19 @@ security.Algorithm = PdfEncryptionAlgorithm.AESGCM; security.OwnerPassword = "ownerPassword"; security.UserPassword = "userPassword"; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); - -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -510,6 +569,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + ' Create a new PDF document Dim document As PdfDocument = New PdfDocument() @@ -570,6 +634,11 @@ You can encrypt all the PDF content by specifying the [EncryptionOptions](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-all-contents-of-the-PDF-document/.NET/Encrypt-all-contents-of-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -592,16 +661,19 @@ security.UserPassword = "password"; //Draw the text. graphics.DrawString("Encrypted with AES 256bit", font, brush, new PointF(0, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -632,6 +704,11 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -676,6 +753,11 @@ N> Encrypt all contents except metadata is only supported in AES algorithms wit {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-all-contents-except-metadata-of-the-PDF/.NET/Encrypt-all-contents-except-metadata-of-the-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -698,16 +780,19 @@ security.UserPassword = "password"; //Draw the text. graphics.DrawString("Encrypted all contents except metadata with AES 256bit", font, brush, new PointF(0, 40)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. -document.Close(true); +//Save and close the document. +document.Save("Output.pdf"); +document.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -738,6 +823,11 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -782,6 +872,11 @@ N> [UserPassword](https://help.syncfusion.com/cr/document-processing/Syncfusion. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Encrypt-only-attachment-in-the-PDF-document/.NET/Encrypt-only-attachment-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -812,16 +907,19 @@ attachment.MimeType = "application/txt"; //Add the attachment to the document. document.Attachments.Add(attachment); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -860,6 +958,11 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Security + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -908,61 +1011,64 @@ The following code example demonstrates how to decrypt a PDF document and restor {% tabs %} -{% highlight c# tabtitle="C# [Cross-platform]" %} +{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Decrypting-encrypted-PDF-document/.NET/Decrypting-encrypted-PDF-document/Program.cs" %} -using (FileStream inputStream = new FileStream(@"Data/Input.pdf", FileMode.Open, FileAccess.Read)) -{ - // Load the encrypted PDF document from the input stream - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream, "syncfusion"); - - // Set the document permissions to default (removes any restrictions) - loadedDocument.Security.Permissions = PdfPermissionsFlags.Default; - - // Clear the owner and user passwords to decrypt the document - loadedDocument.Security.OwnerPassword = string.Empty; - loadedDocument.Security.UserPassword = string.Empty; - - using (FileStream outputStream = new FileStream(@"Output/Output.pdf", FileMode.Create, FileAccess.Write)) - { - // Save the decrypted PDF document to the output stream - loadedDocument.Save(outputStream); - } - // Close the loaded PDF document and release resources - loadedDocument.Close(true); -} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + + // Load the encrypted PDF document from the input stream + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf", "syncfusion"); + + // Set the document permissions to default (removes any restrictions) + loadedDocument.Security.Permissions = PdfPermissionsFlags.Default; + + // Clear the owner and user passwords to decrypt the document + loadedDocument.Security.OwnerPassword = string.Empty; + loadedDocument.Security.UserPassword = string.Empty; + + //Save and close the document. + loadedDocument.Save("Output.pdf"); + loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} -using (FileStream inputStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read)) -{ - // Load the encrypted PDF document from the input stream - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream, "syncfusion"); +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; - // Set the document permissions to default (removes any restrictions) - loadedDocument.Security.Permissions = PdfPermissionsFlags.Default; + // Load the encrypted PDF document from the input stream + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf", "syncfusion"); - // Clear the owner and user passwords to decrypt the document - loadedDocument.Security.OwnerPassword = string.Empty; - loadedDocument.Security.UserPassword = string.Empty; + // Set the document permissions to default (removes any restrictions) + loadedDocument.Security.Permissions = PdfPermissionsFlags.Default; - // Save the decrypted PDF document to the output stream - loadedDocument.Save("Output.pdf"); + // Clear the owner and user passwords to decrypt the document + loadedDocument.Security.OwnerPassword = string.Empty; + loadedDocument.Security.UserPassword = string.Empty; - // Close the loaded PDF document and release resources - loadedDocument.Close(true); -} + //Save and close the document. + loadedDocument.Save("Output.pdf"); + loadedDocument.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Open the encrypted PDF document using FileStream -Using inputStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode.Open, FileAccess.Read) +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security ' Load the encrypted PDF document from the input stream with password - Dim loadedDocument As New PdfLoadedDocument(inputStream, "syncfusion") + Dim loadedDocument As New PdfLoadedDocument("Input.pdf", "syncfusion") ' Set the document permissions to default (removes any restrictions) loadedDocument.Security.Permissions = PdfPermissionsFlags.Default @@ -977,13 +1083,11 @@ Using inputStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode ' Close the loaded PDF document and release resources loadedDocument.Close(True) -End Using - {% endhighlight %} {% endtabs %} -You can download a complete working sample from GitHub. +You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Security/Decrypting-encrypted-PDF-document/.NET). ## Opening an encrypt-only-attachment document @@ -1001,11 +1105,11 @@ The following code example explains how to load an encrypt-only-attachment docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Load-an-encrypt-only-attachment-document/.NET/Load-an-encrypt-only-attachment-document/Program.cs" %} -//Get the stream from an existing PDF document. -FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; //Load the PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(docStream, "password"); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf", "password"); //Accessing the attachments. foreach (PdfAttachment attachment in document.Attachments) @@ -1022,11 +1126,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -//Get the stream from an existing PDF document. -FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; //Load the PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(docStream, "password"); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf", "password"); //Accessing the attachments. foreach (PdfAttachment attachment in document.Attachments) @@ -1043,11 +1147,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Get the stream from an existing PDF document. -Dim docStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode.Open, FileAccess.Read) +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Interactive ' Load the PDF document. -Dim document As New PdfLoadedDocument(docStream, "password") +Dim document As New PdfLoadedDocument("Input.pdf", "password") ' Accessing the attachments. For Each attachment As PdfAttachment In document.Attachments @@ -1073,11 +1177,11 @@ The following code example illustrates how to provide the password when accessin {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Set-user-password-when-accessing-the-attachment/.NET/Set-user-password-when-accessing-the-attachment/Program.cs" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; //Load the PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); document.OnPdfPassword += Document_OnPdfPassword; @@ -1104,11 +1208,11 @@ void Document_OnPdfPassword(object sender, OnPdfPasswordEventArgs args) {% highlight c# tabtitle="C# [Windows-specific]" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; //Load the PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); document.OnPdfPassword += Document_OnPdfPassword; @@ -1135,11 +1239,11 @@ void Document_OnPdfPassword(object sender, OnPdfPasswordEventArgs args) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Get stream from an existing PDF document. -Dim docStream As New FileStream(Path.GetFullPath("Data/Input.pdf"), FileMode.Open, FileAccess.Read) +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Interactive ' Load the PDF document. -Dim document As New PdfLoadedDocument(docStream) +Dim document As New PdfLoadedDocument("Input.pdf") ' Add the event handler for PDF password. AddHandler document.OnPdfPassword, AddressOf Document_OnPdfPassword @@ -1175,9 +1279,11 @@ N> [UserPassword](https://help.syncfusion.com/cr/document-processing/Syncfusion. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Protect-attachments-in-existing-PDF-document/.NET/Protect-attachments-in-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //PDF document security. PdfSecurity security = document.Security; @@ -1189,9 +1295,8 @@ security.UserPassword = "password"; //Specifies encryption option. security.EncryptionOptions = PdfEncryptionOptions.EncryptOnlyAttachments; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1199,6 +1304,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -1221,6 +1329,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load the PDF document. Dim document As New PdfLoadedDocument("Input.pdf") @@ -1253,9 +1364,11 @@ You can protect an existing PDF document with both [UserPassword](https://help.s {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Protect-an-existing-PDF-document/.NET/Protect-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //PDF document security. PdfSecurity security = document.Security; @@ -1266,16 +1379,17 @@ security.Algorithm = PdfEncryptionAlgorithm.AES; security.OwnerPassword = "ownerPassword256"; security.UserPassword = "userPassword256"; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the document. +//Save and close the document. +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -1297,6 +1411,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load an existing document. Dim document As New PdfLoadedDocument("Input.pdf") @@ -1328,22 +1445,26 @@ You can change the [UserPassword](https://help.syncfusion.com/cr/document-proces {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Change-password-of-the-PDF-document/.NET/Change-password-of-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream, "password"); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf", "password"); //Change the user password loadedDocument.Security.UserPassword = "NewPassword"; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the document +//Save the password changed PDF document. +loadedDocument.Save("Output.pdf"); +//Close the document. loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the password protected PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf","password"); //Change the user password. @@ -1358,6 +1479,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load the password protected PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf", "password") 'Change the user password @@ -1429,22 +1553,25 @@ You can change the permission of the PDF document using the [Permissions](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Change-the-permission-of-the-PDF-document/.NET/Change-the-permission-of-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream, "syncfusion"); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf", "syncfusion"); //Change the permission loadedDocument.Security.Permissions = PdfPermissionsFlags.CopyContent | PdfPermissionsFlags.AssembleDocument; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the PDF document +//Save and Close the PDF document +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the password protected PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf", "syncfusion"); //Change the permission @@ -1458,6 +1585,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load the password protected PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf", "syncfusion") 'Change the permission @@ -1481,22 +1611,25 @@ You can remove the [UserPassword](https://help.syncfusion.com/cr/document-proces {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Remove-password-from-user-password-PDF-document/.NET/Remove-password-from-user-password-PDF-document/Program.cs" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream, "password"); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf", "password"); //Change the user password loadedDocument.Security.UserPassword = string.Empty; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the document +//Save and Close the PDF document +loadedDocument.Save("Output.pdf"); loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; + //Load the password protected PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf","password"); //Change the user password @@ -1511,6 +1644,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Parsing +Imports Syncfusion.Pdf.Security + 'Load the password protected PDF document Dim loadedDocument As New PdfLoadedDocument("Input.pdf", "password") 'Change the user password @@ -1535,11 +1671,13 @@ You can determine whether the existing PDF document is password protected or not {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/Determine-whether-the-PDF-is-protected-or-not/.NET/Determine-whether-the-PDF-is-protected-or-not/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + try { //Load the PDF document - FileStream docStream = new FileStream("Output.pdf", FileMode.Open, FileAccess.Read); - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); } catch (PdfDocumentException exception) { @@ -1553,6 +1691,9 @@ catch (PdfDocumentException exception) {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + try { //Load the password protected PDF document without user password @@ -1570,6 +1711,9 @@ catch (PdfDocumentException exception) {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + Try 'Load the password protected PDF document without user password Dim loadedDocument As New PdfLoadedDocument("Output.pdf") diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Shapes.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Shapes.md index 58980f3ae..eb9d8891e 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Shapes.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Shapes.md @@ -31,6 +31,10 @@ You can draw a polygon in PDF document by using the [DrawPolygon](https://help.s {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-polygon-in-new-PDF-document/.NET/Draw-polygon-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -50,9 +54,8 @@ PointF[] points = { p1, p2, p3, p4, p5 }; //Draw the polygon on PDF document page.Graphics.DrawPolygon(pen, brush, points); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -60,6 +63,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -87,6 +94,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -122,9 +133,12 @@ The following code snippet explains how to draw a polygon in an existing PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-polygon-in-an-existing-PDF-document/.NET/Draw-a-polygon-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Initialize PdfPen to draw the polygon @@ -141,9 +155,8 @@ PointF[] points = { p1, p2, p3, p4, p5 }; //Draw the polygon on PDF document loadedPage.Graphics.DrawPolygon(pen, brush, points); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -151,6 +164,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -178,6 +195,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -215,6 +236,10 @@ You can draw a line in PDF document by using the [DrawLine](https://help.syncfus {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-line-in-new-PDF-document/.NET/Draw-a-line-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -228,9 +253,8 @@ PointF point2 = new PointF(10, 100); //Draw the line on PDF document page.Graphics.DrawLine(pen, point1, point2); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -238,6 +262,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -259,6 +287,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -288,12 +320,15 @@ The following code snippet explains how to draw a line in an existing PDF docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-line-in-an-existing-PDF-document/.NET/Draw-a-line-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; - //Initialize pen to draw the line PdfPen pen = new PdfPen(PdfBrushes.Black, 5f); //Create the line points @@ -302,9 +337,8 @@ PointF point2 = new PointF(10, 100); //Draw the line on PDF document loadedPage.Graphics.DrawLine(pen, point1, point2); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -312,6 +346,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -333,6 +372,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -365,6 +409,10 @@ You can draw a curve in PDF document by using the [Draw](https://help.syncfusion {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-curve-in-new-PDF-document/.NET/Draw-a-curve-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -377,9 +425,8 @@ PdfBezierCurve bezier = new PdfBezierCurve(new PointF(0, 0), new PointF(100, 50) //Draw the bezier curve on PDF document bezier.Draw(graphics, new PointF(10, 10)); -//Save the PDF document to MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -387,6 +434,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -408,6 +459,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -437,22 +492,25 @@ The following code snippet explains how to draw a curve in an existing PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-curve-in-an-existing-PDF-document/.NET/Draw-a-curve-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Get the graphics of PdfLoadedPage PdfGraphics graphics = loadedPage.Graphics; //Create new instance of PdfBezierCurve -PdfBezierCurve bezier = new PdfBezierCurve(new PointF(0, 0), new PointF(100, 50), new PointF(50, 50), new PointF(100, 100)); +PdfBezierCurve bezier = new PdfBezierCurve(new PointF(0, 0), new PointF(100, 50), new PointF(50, 50), new PointF(100, 100)); //Draw the bezier curve on PDF document bezier.Draw(graphics, new PointF(10, 10)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -460,6 +518,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -481,6 +544,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -512,6 +580,10 @@ You can draw a path in PDF document by using the [DrawPath](https://help.syncfus {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-path-in-a-new-PDF-document/.NET/Draw-path-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -527,9 +599,8 @@ path.AddLine(new PointF(100, 200), new PointF(10, 100)); //Draw the PDF path on page page.Graphics.DrawPath(PdfPens.Black, path); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -537,6 +608,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -561,6 +636,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -593,9 +672,13 @@ The following code snippet explains how to draw path in an existing PDF document {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-path-in-an-existing-PDF-document/.NET/Draw-path-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -609,9 +692,8 @@ path.AddLine(new PointF(100, 200), new PointF(10, 100)); //Draw the PDF path on page loadedPage.Graphics.DrawPath(PdfPens.Black, path); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -619,6 +701,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -643,6 +730,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -681,6 +773,10 @@ You can draw a rectangle in PDF document by using the [DrawRectangle](https://he {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-rectangle-in-a-new-PDF-document/.NET/Draw-a-rectangle-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -693,9 +789,8 @@ RectangleF bounds = new RectangleF(10, 10, 100, 50); //Draw the rectangle on PDF document page.Graphics.DrawRectangle(brush, bounds); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -703,6 +798,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -724,6 +823,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -753,12 +856,16 @@ The following code snippet explains how to draw a rectangle in an existing PDF d {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-rectangle-in-an-existing-PDF-document/.NET/Draw-a-rectangle-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; +//Load an existing PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; + //Initialize PdfSolidBrush for drawing the rectangle PdfSolidBrush brush = new PdfSolidBrush(Color.Green); //Set the bounds for rectangle @@ -766,9 +873,8 @@ RectangleF bounds = new RectangleF(10, 10, 100, 50); //Draw the rectangle on PDF document loadedPage.Graphics.DrawRectangle(brush, bounds); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -776,6 +882,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -797,6 +908,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -828,6 +944,10 @@ You can draw a pie in PDF document by using the [DrawPie](https://help.syncfusio {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-pie-in-new-PDF-document/.NET/Draw-a-pie-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -842,9 +962,8 @@ RectangleF rectangle = new RectangleF(10, 50, 200, 200); //Draw the pie on PDF document page.Graphics.DrawPie(pen, PdfBrushes.Green, rectangle, 180, 60); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -852,6 +971,10 @@ document.Close(true); {% highlight c# tabtitle="C#" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -875,6 +998,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -906,9 +1033,13 @@ The following code snippet explains how to draw a pie in an existing PDF documen {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-pie-in-an-existing-PDF-document/.NET/Draw-a-pie-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -921,16 +1052,20 @@ RectangleF rectangle = new RectangleF(10, 50, 200, 200); //Draw the pie on PDF document loadedPage.Graphics.DrawPie(pen, PdfBrushes.Green, rectangle, 180, 60); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the instance of PdfLoadedDocument -loadedDocument.Close(true); +//Save the PDF document +document.Save("Output.pdf"); +//Close the instance of PdfDocument +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -954,6 +1089,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -987,6 +1127,10 @@ You can draw an arc in PDF document by using the [DrawArc](https://help.syncfusi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-an-arc-in-new-PDF-document/.NET/Draw-an-arc-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1000,9 +1144,8 @@ RectangleF bounds = new RectangleF(20, 40, 200, 200); //Draw the arc on PDF document page.Graphics.DrawArc(pen, bounds, 270, 90); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -1010,6 +1153,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1033,6 +1180,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -1064,9 +1215,13 @@ The following code snippet explains how to draw an arc in an existing PDF docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-an-arc-in-an-existing-PDF-document/.NET/Draw-an-arc-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -1079,9 +1234,8 @@ RectangleF bounds = new RectangleF(20, 40, 200, 200); //Draw the arc on PDF document loadedPage.Graphics.DrawArc(pen, bounds, 270, 90); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -1089,6 +1243,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -1112,6 +1271,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -1145,6 +1309,10 @@ You can draw a bezier in PDF document by using the [DrawBezier](https://help.syn {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-bazier-in-new-PDF-document/.NET/Draw-a-bazier-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1155,9 +1323,8 @@ PdfPen pen = new PdfPen(PdfBrushes.Brown, 1f); //Draw the bezier on PDF document page.Graphics.DrawBezier(pen, new PointF(10, 10), new PointF(10, 50), new PointF(50, 80), new PointF(80, 10)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -1165,6 +1332,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1184,6 +1355,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -1211,9 +1386,13 @@ The following code snippet explains how to draw a bezier in an existing PDF docu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-a-bazier-in-an-existing-PDF-document/.NET/Draw-a-bazier-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -1222,9 +1401,8 @@ PdfPen pen = new PdfPen(PdfBrushes.Brown, 1f); //Draw the bezier on PDF document loadedPage.Graphics.DrawBezier(pen, new PointF(10, 10), new PointF(10, 50), new PointF(50, 80), new PointF(80, 10)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -1232,6 +1410,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -1251,6 +1434,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -1280,6 +1468,10 @@ You can draw an ellipse in PDF document by using the [DrawEllipse](https://help. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-an-ellipse-in-new-PDF-document/.NET/Draw-an-ellipse-in-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1290,9 +1482,8 @@ PdfSolidBrush brush = new PdfSolidBrush(Color.Red); //Draw ellipse on the page page.Graphics.DrawEllipse(brush, new RectangleF(10, 10, 200, 100)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the PDF document +document.Save("Output.pdf"); //Close the instance of PdfDocument document.Close(true); @@ -1300,6 +1491,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1319,6 +1514,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -1346,9 +1545,13 @@ The following code snippet explains how to draw an ellipse in an existing PDF do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-an-ellipse-in-an-existing-PDF-document/.NET/Draw-an-ellipse-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document as stream -FileStream inputStream = new FileStream("Input.pdf", FileMode.Open); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream); +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + +//Load an existing PDF document +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -1357,9 +1560,8 @@ PdfSolidBrush brush = new PdfSolidBrush(Color.Red); //Draw ellipse on the page loadedPage.Graphics.DrawEllipse(brush, new RectangleF(10, 10, 200, 100)); -//Saving the PDF to the MemoryStream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the PDF document +loadedDocument.Save("Output.pdf"); //Close the instance of PdfLoadedDocument loadedDocument.Close(true); @@ -1367,6 +1569,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page into PdfLoadedPage @@ -1386,6 +1593,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the page into PdfLoadedPage @@ -1415,6 +1627,10 @@ You can also allow large shapes to paginate across pages by assigning ```Paginat {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Draw-large-shapes-across-multiple-pages/.NET/Draw-large-shapes-across-multiple-pages/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create Document PdfDocument doc = new PdfDocument(); //Add new page @@ -1432,16 +1648,18 @@ ellipse.Brush = PdfBrushes.Brown; //Draw ellipse. ellipse.Draw(page, 20, 20, format); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -//Closes the document +//Save and close the PDF document +doc.Save("Shapes.pdf"); doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create Document PdfDocument doc = new PdfDocument(); //Add new page @@ -1467,6 +1685,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create Document Dim doc As New PdfDocument() 'Add new page @@ -1504,6 +1726,10 @@ The following code example demonstrates applying a dash pattern to a line shape. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Shapes/Dash-pattern-in-shapes/.NET/Dash-pattern-in-shapes/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document PdfDocument document = new PdfDocument(); // Add a page to the document @@ -1523,12 +1749,9 @@ dashPen.DashPattern = dashPattern; // Draw a line with the custom dash pattern graphics.DrawLine(dashPen, new Syncfusion.Drawing.PointF(10, 10), new PointF(300, 10)); -//Create file stream. -using (FileStream outputFileStream = new FileStream("Output/Output.pdf", FileMode.Create, FileAccess.ReadWrite)) -{ - //Save the PDF document to file stream. - document.Save(outputFileStream); -} + +//Save the PDF document to file stream. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1536,6 +1759,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document PdfDocument document = new PdfDocument(); // Add a page to the document @@ -1565,6 +1792,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + ' Create a new PDF document Dim document As New PdfDocument() ' Add a page to the document diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md index c85b41ebc..675548a73 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md @@ -28,6 +28,10 @@ The following code sample explains you how to add tag for the text element in PD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-tag-for-the-text-element-in-PDF-document/.NET/Add-tag-for-the-text-element-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -53,23 +57,18 @@ element.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); //Draws text PdfLayoutResult result = element.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width, 200)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +doc.Save("Output.pdf"); doc.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -103,6 +102,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() 'Set the document title @@ -148,6 +151,10 @@ The following code explains how to add tag for image element in PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-tag-for-image-element-in-PDF-document/.NET/Add-tag-for-image-element-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -172,23 +179,18 @@ bitmap.PdfTag = imageElement; //Draw image bitmap.Draw(page.Graphics, new PointF(50, 20)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +doc.Save("Image.pdf"); doc.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Image.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -218,6 +220,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() 'Set the document title @@ -259,6 +265,10 @@ The following code explains how to add tag for shape element in the PDF document {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Adding-tag-to-shape-element-in-the-PDF-document/.NET/Adding-tag-to-shape-element-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -284,23 +294,18 @@ line.PdfTag = element; //Draws the line line.Draw(page.Graphics); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +doc.Save("Output.pdf"); doc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -331,6 +336,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() 'Set the document title @@ -373,6 +382,11 @@ The following code explains how to add tag for the form fields in PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Adding-tag-to-form-fields-in-the-PDF-document/.NET/Adding-tag-to-form-fields-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set document information @@ -395,23 +409,19 @@ textBoxField.ToolTip = "TextBox field"; //Add the form field to the document. doc.Form.Fields.Add(textBoxField); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +doc.Save("Output.pdf"); doc.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document information @@ -442,6 +452,11 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() 'Set the document information @@ -484,6 +499,10 @@ The following code explains how to add tag for the annotations in PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Adding-tag-to-annotation-in-the-PDF-document/.NET/Adding-tag-to-annotation-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -508,23 +527,18 @@ popupAnnotation.Icon = PdfPopupIcon.NewParagraph; //Adds this annotation to a new page page.Annotations.Add(popupAnnotation); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +doc.Save("Output.pdf"); doc.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "PopupAnnotation.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Creates new PDF document PdfDocument doc = new PdfDocument(); //Set the document title @@ -558,6 +572,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() 'Set the document title @@ -603,6 +621,11 @@ The following code example shows how to add tag for hyperlink in PDF document {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-tag-for-hyperlink-in-the-PDF-document/.NET/Add-tag-for-hyperlink-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); document.DocumentInformation.Title = "Link"; @@ -630,24 +653,21 @@ textLink.Brush = PdfBrushes.Blue; //Draw the hyperlink in PDF page textLink.DrawTextWebLink(page, new PointF(10, 40)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document +document.Save("Output.pdf"); +//Close the document document.Close(true); fontStream.Dispose(); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); document.DocumentInformation.Title = "Link"; @@ -685,6 +705,11 @@ fontStream.Dispose(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument() document.DocumentInformation.Title = "Link" @@ -733,6 +758,10 @@ The following code sample explains how to add tag support for the template eleme {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-tags-to-template-in-PDF-document/.NET/Add-tags-to-template-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates a new PDF document PdfDocument pdfDocument = new PdfDocument(); pdfDocument.DocumentInformation.Title = "TemplateDocument"; @@ -760,23 +789,18 @@ template.Graphics.DrawRectangle(brush, new RectangleF(0, 30, 150, 90)); //Draw the template on the page graphics of the document pdfPage.Graphics.DrawPdfTemplate(template, PointF.Empty); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +pdfDocument.Save("Output.pdf"); pdfDocument.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates a new PDF document PdfDocument pdfDocument = new PdfDocument(); pdfDocument.DocumentInformation.Title = "TemplateDocument"; @@ -810,6 +834,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates a new PDF document Dim pdfDocument As PdfDocument = New PdfDocument() pdfDocument.DocumentInformation.Title = "TemplateDocument" @@ -857,6 +885,11 @@ The following code snippet illustrates how to add tag for table element. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-tags-to-table-in-the-PDF-document/.NET/Add-tags-to-table-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Grid; + //Creates a new PDF document PdfDocument pdfDocument = new PdfDocument(); pdfDocument.DocumentInformation.Title = "Table"; @@ -906,23 +939,19 @@ pdfGridRow.Cells[2].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell); //Draw the PdfGrid pdfGrid.Draw(pdfPage, PointF.Empty); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +pdfDocument.Save("Output.pdf"); pdfDocument.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Grid; + //Creates a new PDF document PdfDocument pdfDocument = new PdfDocument(); pdfDocument.DocumentInformation.Title = "Table"; @@ -980,6 +1009,11 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Grid + 'Creates a new PDF document Dim pdfDocument As PdfDocument = New PdfDocument() pdfDocument.DocumentInformation.Title = "Table" @@ -1049,6 +1083,10 @@ The following code example illustrates how to add tag support for list element. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-the-tag-to-list-element-in-PDF-document/.NET/Add-the-tag-to-list-element-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Sets document title @@ -1092,23 +1130,18 @@ for (int i = 0; i < products.Length; i++) //Draw the list pdfList.Draw(page, new RectangleF(0, 20, size.Width, size.Height)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save and close the document +document.Save("Output.pdf"); document.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Sets document title @@ -1158,6 +1191,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument() 'Sets document title @@ -1218,6 +1255,10 @@ You can apply tags to nested list elements using the [PdfStructureElement](https {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document PdfDocument document = new PdfDocument(); @@ -1285,12 +1326,8 @@ mainList.Items[1].SubList = subList; // Draw the main list, which includes the nested sublist, on the PDF mainList.Draw(page, new RectangleF(0, 30, size.Width, size.Height)); -//Create file stream. -using (FileStream outputFileStream = new FileStream("Output.pdf", FileMode.Create, FileAccess.ReadWrite)) -{ - //Save the PDF document to file stream. - document.Save(outputFileStream); -} +//Save the PDF document +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1298,6 +1335,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document PdfDocument document = new PdfDocument(); @@ -1374,6 +1415,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + ' Create a new PDF document Dim document As New PdfDocument() @@ -1465,6 +1510,10 @@ The following code sample demonstrates how to create a well-tagged PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Well-Tagged-PDF/.NET/Well-Tagged-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); @@ -1499,17 +1548,19 @@ textElement.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); // Draw text element with tag textElement.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width, 200)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Closes the document -document.Close(true); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); @@ -1553,6 +1604,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument(PdfConformanceLevel.Pdf_A4) @@ -1608,6 +1663,10 @@ The following code sample demonstrates how to create a PDF with Universal Access {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/PDF-for-Universal-Accessibility/.NET/PDF-for-Universal-Accessibility/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); @@ -1640,17 +1699,19 @@ textElement.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); // Draw text element with tag textElement.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width, 200)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Closes the document -document.Close(true); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); @@ -1692,6 +1753,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() @@ -1745,6 +1810,10 @@ The following code explains how to add tag for header and footers in the PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Add-tags-for-header-and-footer-in-the-PDF-document/.NET/Add-tags-for-header-and-footer-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document @@ -1786,23 +1855,18 @@ compositeField.Draw(footer.Graphics, new PointF(470, 40)); //Add the footer template at the bottom pdfDocument.Template.Bottom = footer; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +pdfDocument.Save("HeaderFooter.pdf"); pdfDocument.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "HeaderFooter.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document @@ -1850,6 +1914,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim pdfDocument As PdfDocument = New PdfDocument() 'Add a page to the PDF document @@ -1909,6 +1977,10 @@ The following code example illustrates how to order the tagged elements in a PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Order-the-tagged-elements-in-a-PDF-document/.NET/Order-the-tagged-elements-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Sets document title @@ -1951,23 +2023,18 @@ element2.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); element2.PdfTag = paraStruct2; element2.Draw(page.Graphics, new PointF(0, 100)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Sets document title @@ -2019,6 +2086,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument() 'Sets document title @@ -2083,6 +2154,10 @@ N> Enabling the auto-tag feature will never add alternate texts/descriptions for {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Auto-tag-the-elements-in-a-PDF-document/.NET/Auto-tag-the-elements-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument document = new PdfDocument(); //Set true to auto tag all elements in document @@ -2106,23 +2181,18 @@ PdfTextElement element2 = new PdfTextElement("This is paragraph THREE.", new Pdf element2.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); element2.Draw(page.Graphics, new PointF(0, 100)); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document and dispose it +document.Save("Output.pdf"); document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "AutoTag.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates new PDF document PdfDocument document = new PdfDocument(); //Set true to auto tag all elements in document @@ -2154,6 +2224,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Creates new PDF document Dim document As PdfDocument = New PdfDocument() 'Set true to auto tag all elements in document @@ -2212,10 +2286,12 @@ The following code sample shows how to preserve document structured tags in the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Converting-word-document-to-Tagged-PDF/.NET/Converting-word-document-to-Tagged-PDF/Program.cs" %} -//Open the file as Stream -FileStream docStream = new FileStream(@"D:\Template.docx", FileMode.Open, FileAccess.Read); +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIORenderer; +using Syncfusion.Pdf; + //Loads file stream into Word document -WordDocument wordDocument = new WordDocument(docStream, Syncfusion.DocIO.FormatType.Automatic); +WordDocument wordDocument = new WordDocument("Template.docx", Syncfusion.DocIO.FormatType.Automatic); //Instantiation of DocIORenderer for Word to PDF conversion DocIORenderer render = new DocIORenderer(); @@ -2225,19 +2301,20 @@ render.Settings.AutoTag = true; //Converts Word document into PDF document PdfDocument pdfDocument = render.ConvertToPDF(wordDocument); -//Releases all resources used by the Word document and DocIO Renderer objects -render.Dispose(); -wordDocument.Dispose(); -//Saves the PDF file -MemoryStream outputStream = new MemoryStream(); -pdfDocument.Save(outputStream); -//Closes the instance of PDF document object -pdfDocument.Close(); +//Saves the PDF file to file system +pdfDocument.Save("WordtoPDF.pdf"); +//Closes the instance of document objects +pdfDocument.Close(true); +wordDocument.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIORenderer; +using Syncfusion.Pdf; + //Loads an existing Word document WordDocument wordDocument = new WordDocument("Sample.docx", FormatType.Docx); @@ -2259,6 +2336,10 @@ wordDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.DocIO.DLS +Imports Syncfusion.DocIORenderer +Imports Syncfusion.Pdf + 'Loads an existing Word document Dim wordDocument As New WordDocument("Sample.docx", FormatType.Docx) @@ -2304,6 +2385,10 @@ The following code sample demonstrates how to create custom role mapping documen {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Tagged%20PDF/Custom-Role-Mapping/.NET/Custom-Role-Mapping/Program.cs" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using Syncfusion.Drawing; + // Create a new PDF document PdfDocument doc = new PdfDocument(); @@ -2344,10 +2429,8 @@ element.Brush = new PdfSolidBrush(new PdfColor(89, 89, 93)); // Draw text on the page PdfLayoutResult result = element.Draw(page, new RectangleF(0, 0, page.Graphics.ClientSize.Width, 200)); -// Save the document into a memory stream (Cross-platform compatibility) -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -stream.Position = 0; // Reset stream position for further processing if needed +// Save the document +doc.Save("Output.pdf"); // Close the document to release resources doc.Close(true); @@ -2355,6 +2438,10 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using System.Drawing; + // Create a new PDF document PdfDocument doc = new PdfDocument(); @@ -2405,6 +2492,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + ' Create a new PDF document Dim doc As New PdfDocument() @@ -2464,10 +2555,13 @@ You can extract the existing tag details by using the [StructureElement](https:/ {% highlight c# tabtitle="C# [Cross-platform]" %} -//Get the stream from the document. -FileStream documentStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using System.Drawing; + //Load the existing PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the structure element root from the document. PdfStructureElement rootElement = document.StructureElement; //Get the child elements for the element. @@ -2493,6 +2587,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using System.Drawing; + //Load the existing PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the structure element root from the document. @@ -2522,6 +2621,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document. Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the structure element root from the document. @@ -2557,10 +2661,13 @@ You can also extract the accessibility tags page-wise with the help of the [Stru {% highlight c# tabtitle="C# [Cross-platform]" %} -//Get the stream from the document. -FileStream documentStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using System.Drawing; + //Load the existing PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(documentStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document. PdfLoadedPage loadedPage = document.Pages[0] as PdfLoadedPage; //Get the structure elements associated with the page. @@ -2590,6 +2697,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; +using System.Drawing; + //Load the existing PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the first page from the document. @@ -2622,6 +2734,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document. Dim document As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Get the first page from the document. From 4261c2b6caaeed9218319dc17e3cf2a288477375 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Fri, 10 Oct 2025 18:26:30 +0530 Subject: [PATCH 21/22] 985863-1: Changed the six md files. --- .../NET/Working-with-Text-Extraction.md | 130 +- .../PDF/PDF-Library/NET/Working-with-Text.md | 488 +++++-- .../NET/Working-with-Watermarks.md | 171 ++- .../PDF/PDF-Library/NET/Working-with-XFA.MD | 922 ++++++++---- .../NET/Working-with-ZUGFeRD-invoice.md | 75 +- .../PDF/PDF-Library/NET/Working-with-forms.md | 1282 +++++++++++------ 6 files changed, 2112 insertions(+), 956 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md index 2c4e45eef..5f0638fb1 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md @@ -22,10 +22,11 @@ The following code snippet explains how to extract the texts from a page. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text%20Extraction/Extract-the-texts-from-a-page-in-the-PDF-document/.NET/Extract-the-texts-from-a-page-in-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Sample.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page. PdfPageBase page = loadedDocument.Pages[0]; @@ -38,8 +39,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the first page. PdfPageBase page = loadedDocument.Pages[0]; @@ -52,8 +56,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the first page. Dim page As PdfPageBase = loadedDocument.Pages(0) @@ -78,10 +85,11 @@ The below code illustrates how to extract the text from entire PDF document: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text%20Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Sample.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Loading page collections PdfLoadedPageCollection loadedPages = loadedDocument.Pages; @@ -98,8 +106,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + // Load an existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Loading page collections PdfLoadedPageCollection loadedPages = loadedDocument.Pages; @@ -116,8 +127,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + ' Load an existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") ' Loading page collections Dim loadedPages As PdfLoadedPageCollection = loadedDocument.Pages @@ -145,10 +159,11 @@ Please refer the following code snippet to extract the text with layout. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text%20Extraction/Extract-the-text-with-layout-in-a-PDF-document/.NET/Extract-the-text-with-layout-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Sample.pdf", FileMode.Open, FileAccess.Read); -//Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load first page. PdfPageBase page = loadedDocument.Pages[0]; @@ -157,9 +172,8 @@ string extractedTexts = page.ExtractText(true); //Close the document. loadedDocument.Close(true); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document +loadedDocument.Save("Output.pdf"); //Closes the document loadedDocument.Close(true); @@ -167,8 +181,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load first page. PdfPageBase page = loadedDocument.Pages[0]; @@ -181,15 +198,20 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -//Load an existing PDF. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); -//Load first page. -PdfPageBase page = loadedDocument.Pages[0]; +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing -//Extract text from first page. -string extractedTexts = page.ExtractText(true); -//close the document -loadedDocument.Close(true); +' Load an existing PDF +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") + +' Load the first page +Dim page As PdfPageBase = loadedDocument.Pages(0) + +' Extract text from the first page +Dim extractedTexts As String = page.ExtractText(True) + +' Close the document +loadedDocument.Close(True) {% endhighlight %} @@ -211,8 +233,11 @@ You can get the line and its properties that contains texts by using [TextLine]( //PDF supports getting the lines and its properties using TextLine only in WinForms, WPF and Xamarin platforms. Instead of TextLine, TextLineCollection can be used in ASP.NET Core. +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + // Load the existing PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Get the first page of the loaded PDF document PdfPageBase page = loadedDocument.Pages[0]; var lineCollection = new TextLineCollection(); @@ -232,8 +257,11 @@ foreach (var line in lineCollection.TextLine) {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + // Load the existing PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Get the first page of the loaded PDF document PdfPageBase page = loadedDocument.Pages[0]; TextLines lineCollection = new TextLines(); @@ -250,8 +278,12 @@ string text = line.Text; {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + ' Load the existing PDF document -Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument(fileName) +Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") ' Get the first page of the loaded PDF document Dim page As PdfPageBase = loadedDocument.Pages(0) Dim lineCollection As TextLines = New TextLines() @@ -281,8 +313,12 @@ You can get the single word and its properties by using [TextWord](https://help. //PDF supports getting the word and its properties using TextWord only in WinForms, WPF and Xamarin platforms. Instead of TextLine, TextLineCollection can be used in ASP.NET Core. +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + // Load the existing PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Get the first page of the loaded PDF document PdfPageBase page = loadedDocument.Pages[0]; var lineCollection = new TextLineCollection(); @@ -304,8 +340,12 @@ foreach (var line in lineCollection.TextLine) {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + // Load the existing PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Get the first page of the loaded PDF document PdfPageBase page = loadedDocument.Pages[0]; TextLines lineCollection = new TextLines(); @@ -325,8 +365,12 @@ List textWordCollection = line.WordCollection; {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + ' Load the existing PDF document -Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument(fileName) +Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") ' Get the first page of the loaded PDF document Dim page As PdfPageBase = loadedDocument.Pages(0) Dim lineCollection As TextLines = New TextLines() @@ -356,8 +400,12 @@ You can retrieve a single character and its properties, including bounds, font n {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text%20Extraction/Get-text-glyph-details-from-extract-text/.NET/Get-text-glyph-details-from-extract-text/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + // Load the existing PDF document -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Get the first page of the loaded PDF document PdfPageBase page = loadedDocument.Pages[0]; TextLineCollection lineCollection = new TextLineCollection(); @@ -393,8 +441,12 @@ Color glyphColor = textGlyph.TextColor; {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + ' Load the existing PDF document -Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument(stream) +Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") ' Get the first page of the loaded PDF document Dim page As PdfPageBase = loadedDocument.Pages(0) Dim lineCollection As New TextLineCollection() @@ -441,9 +493,11 @@ The code example provided below demonstrates the utilization of the [FindText](h {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Find-text-in-PDF-document/.NET/Find-text-in-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Returns page number and rectangle positions of the text maches. Dictionary> matchRects = new Dictionary>(); loadedDocument.FindText("document", out matchRects); @@ -454,6 +508,9 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Returns page number and rectangle positions of the text maches. @@ -466,6 +523,9 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Parsing + 'Load an existing PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf") 'Returns page number and rectangle positions of the text maches. diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md index 864810cdb..18c4d8516 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md @@ -20,6 +20,10 @@ You can add text in the new PDF document by using [DrawString](https://help.sync {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Drawing-text-in-a-new-PDF-document/.NET/Drawing-text-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -32,17 +36,18 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream. -document.Save(stream); -//Close the document. +//Save the document and dispose it +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -64,6 +69,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -98,6 +107,10 @@ Please refer to the below code example to understand how to save and restore the {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/refs/heads/master/Text/Saving-and-Restoring-the-PdfGraphics/.NET/Saving-and-Restoring-the-PdfGraphics/Saving-and-Restoring-the-PdfGraphics/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document using (PdfDocument pdfDocument = new PdfDocument()) { @@ -116,11 +129,8 @@ using (PdfDocument pdfDocument = new PdfDocument()) graphics.Restore(); // Draw text that is not influenced by transformations graphics.DrawString("This text is not rotated.", font, PdfBrushes.Black, new PointF(0, 100)); - using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) - { - //Save the PDF document to file stream. - pdfDocument.Save(outputFileStream); - } + // Save the document to a file + pdfDocument.Save("Output.pdf"); } @@ -128,6 +138,10 @@ using (PdfDocument pdfDocument = new PdfDocument()) {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + // Create a new PDF document using (PdfDocument pdfDocument = new PdfDocument()) { @@ -153,6 +167,11 @@ using (PdfDocument pdfDocument = new PdfDocument()) {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Graphics + Imports System.Drawing + ' Create a PDF document Using pdfDocument As New PdfDocument() ' Add Pages to the document @@ -171,8 +190,9 @@ using (PdfDocument pdfDocument = new PdfDocument()) graphics.Restore() ' Draw text that is not influenced by transformations graphics.DrawString("This text is not rotated.", font, PdfBrushes.Black, New PointF(0, 100)) - ' Save the document to a file + ' Save and close the document to a file pdfDocument.Save("Output.pdf") + pdfDocument.Close(True) {% endhighlight %} @@ -190,9 +210,13 @@ The following code snippet illustrates how to add text in the existing PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Draw-text-in-an-existing-PDF-document/.NET/Draw-text-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument doc = new PdfLoadedDocument(docStream); +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Get first page from document. PdfLoadedPage page = doc.Pages[0] as PdfLoadedPage; //Create PDF graphics for the page. @@ -203,10 +227,8 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream. -doc.Save(stream); +//Save the document. +doc.Save("Output.pdf"); //Close the document. doc.Close(true); @@ -214,6 +236,11 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load a PDF document. PdfLoadedDocument doc = new PdfLoadedDocument("input.pdf"); //Get first page from document. @@ -235,6 +262,11 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing +Imports Syncfusion.Pdf.Parsing + 'Load a PDF document. Dim doc As New PdfLoadedDocument("input.pdf") 'Get first page from document @@ -278,6 +310,10 @@ You can add text using the standard PDF fonts, by initializing [PdfFont](https:/ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Draw-text-in-PDF-document-using-standard-fonts/.NET/Draw-text-in-PDF-document-using-standard-fonts/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -290,17 +326,18 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream. -document.Save(stream); -//Close the document. +//Save the document and dispose it +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -322,6 +359,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -353,6 +394,9 @@ You can add text using the TrueType fonts installed in the system, by initializi {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -374,6 +418,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -401,6 +448,9 @@ You can add text using the font file from local file system by providing the pat {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Draw-text-in-a-PDF-using-TrueType-fonts/.NET/Draw-text-in-a-PDF-using-TrueType-fonts/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -414,17 +464,17 @@ PdfFont font = new PdfTrueTypeFont(fontStream, 14); //Draw the text. graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream. -document.Save(stream); -//Close the document. +//Save the document and dispose it +document.Save("Output.pdf"); document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -446,6 +496,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -477,6 +530,9 @@ You can add text using CJK fonts, initializing [PdfFont](https://help.syncfusion {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Draw-text-in-a-PDF-using-CJK-fonts/.NET/Draw-text-in-a-PDF-using-CJK-fonts/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -489,10 +545,8 @@ PdfFont font = new PdfCjkStandardFont(PdfCjkFontFamily.HeiseiMinchoW3, 20); //Draw the text. graphics.DrawString("こんにちは世界", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -500,6 +554,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -521,6 +578,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -552,6 +612,10 @@ The Essential® PDF allows you to measure the size of a string whi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Measure-the-text-in-PDF-document/.NET/Measure-the-text-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create the new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -567,17 +631,19 @@ SizeF size = font.MeasureString(text); //Draw string to th ePDF page graphics.DrawString(text, font, PdfBrushes.Black, new RectangleF(PointF.Empty, size)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//Close the document +//Save the document. +document.Save("Output.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create the new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -602,6 +668,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create the new PDF document Dim document As New PdfDocument() 'Add a page to the document @@ -639,6 +709,10 @@ Refer to the following code example for further information. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Measure-tilting-space-in-PDF/.NET/Measure-tilting-space-in-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + PdfDocument document = new PdfDocument(); //Add a page to the document PdfPage page = document.Pages.Add(); @@ -655,18 +729,20 @@ string text = "Hello World!"; SizeF size = font.MeasureString(text, format); //Draw the text to the PDF document. page.Graphics.DrawString(text, font, PdfBrushes.Black, new RectangleF(0, 0, size.Width, size.Height)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document as stream -document.Save(stream); -//Close the document -document.Close(true); +//Save the document. +document.Save("Output.pdf"); +//Close the document. +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} - //Create a new PDF document +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + +//Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document PdfPage page = document.Pages.Add(); @@ -690,6 +766,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create the new PDF document Dim document As PdfDocument = New PdfDocument() 'Add a page to the document @@ -707,9 +787,8 @@ Dim text As String = "Hello World!" Dim size As SizeF = font.MeasureString(text, format) 'Draw the text to the PDF document. page.Graphics.DrawString(text, font, PdfBrushes.Black, New RectangleF(0, 0, size.Width, size.Height)) -Dim stream As MemoryStream = New MemoryStream() -Save the document as stream -document.Save(stream) +Save the document +document.Save("Output.pdf") Close the document document.Close(True) @@ -735,6 +814,10 @@ N> To render a Unicode text in the PDF document the chosen font should have the {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -760,6 +843,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim document As New PdfDocument() 'Add a page to the document. @@ -795,6 +882,10 @@ The Essential® PDF allows you to draw the right-to-left language {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Draw-Right-To-Left-text-in-a-PDF-document/.NET/Draw-Right-To-Left-text-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -827,10 +918,8 @@ format.Alignment = PdfTextAlignment.Left; //Draw string with left-to-right format graphics.DrawString(text, font, PdfBrushes.Black, new RectangleF(0, 100, page.GetClientSize().Width, page.GetClientSize().Height), format); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -doc.Save(stream); +//Save the document +doc.Save("Output.pdf"); //Close the document doc.Close(true); @@ -838,6 +927,10 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -877,6 +970,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document Dim doc As PdfDocument = New PdfDocument() 'Add a page to the document @@ -977,6 +1074,10 @@ The following code example illustrates how to render the HTML string in a PDF do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Adding-HTML-styled-text-to-PDF-document/.NET/Adding-HTML-styled-text-to-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -997,16 +1098,19 @@ format.Break = PdfLayoutBreakType.FitPage; //Draw htmlString. richTextElement.Draw(page, new RectangleF(0, 20, page.GetClientSize().Width, page.GetClientSize().Height), format); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -//Close the document +//Save the document +doc.Save("Output.pdf"); +//Close the document doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page to the document. @@ -1038,6 +1142,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim doc As New PdfDocument() 'Add a page to the document. @@ -1078,6 +1186,9 @@ Essential® PDF allows you to create multi-column text in PDF docu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Creating-a-multicolumn-PDF-document/.NET/Creating-a-multicolumn-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document instance PdfDocument document = new PdfDocument(); //Add page to the document @@ -1094,10 +1205,8 @@ textElement = new PdfTextElement(text, new PdfStandardFont(PdfFontFamily.TimesRo //Draw the text in the second column textElement.Draw(page, new RectangleF(page.GetClientSize().Width / 2, 0, page.GetClientSize().Width / 2, page.GetClientSize().Height)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1105,6 +1214,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document instance PdfDocument document = new PdfDocument(); //Add page to the document @@ -1129,6 +1241,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a PDF document instance Dim document As New PdfDocument() 'Add page to the document @@ -1165,6 +1280,9 @@ The following code example demonstrates how to add elements relatively and also {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Add-text-across-multiple-pages/.NET/Add-text-across-multiple-pages/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document instance PdfDocument document = new PdfDocument(); //Add page to the document @@ -1188,10 +1306,8 @@ PdfLayoutResult result = textElement.Draw(page, new RectangleF(0, 0, page.GetCli //Draw the second paragraph from the first paragraph end position result = textElement.Draw(page, new RectangleF(0, result.Bounds.Bottom + paragraphGap, page.GetClientSize().Width / 2, page.GetClientSize().Height), layoutFormat); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1199,6 +1315,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a PDF document instance PdfDocument document = new PdfDocument(); //Add page to the document @@ -1230,6 +1349,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics + 'Create a PDF document instance Dim document As New PdfDocument() 'Add page to the document @@ -1280,6 +1402,10 @@ The following code example illustrates how to insert RTF text in PDF document. {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument doc = new PdfDocument(); //Add a page. @@ -1307,6 +1433,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim doc As New PdfDocument() 'Add a page. @@ -1345,6 +1475,10 @@ Essential® PDF allows you to create an ordered list in the docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Adding-an-ordered-list-to-PDF-document/.NET/Adding-an-ordered-list-to-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new instance of PdfDocument class. PdfDocument document = new PdfDocument(); //Add a new page to the document. @@ -1374,10 +1508,8 @@ foreach (string s in products) } pdfList.Draw(page, new RectangleF(0, 20, size.Width, size.Height)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1385,6 +1517,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new instance of PdfDocument class. PdfDocument document = new PdfDocument(); //Add a new page to the document. @@ -1422,6 +1558,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new instance of PdfDocument class. Dim document As New PdfDocument() 'Add a new page to the document. @@ -1469,6 +1609,10 @@ Essential® PDF also provides support to create an unordered List {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Adding-an-unordered-list-to-PDF-document/.NET/Adding-an-unordered-list-to-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new instance of PdfDocument class. PdfDocument document = new PdfDocument(); //Add a new page to the document. @@ -1502,10 +1646,8 @@ list.TextIndent = 10; //Draw list list.Draw(page, new RectangleF(0, 10, size.Width, size.Height)); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -1513,6 +1655,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new instance of PdfDocument class. PdfDocument document = new PdfDocument(); //Add a new page to the document. @@ -1554,6 +1700,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new instance of PdfDocument class. Dim document As New PdfDocument() 'Add a new page to the document. @@ -1611,6 +1761,10 @@ Essential® PDF allows you to replace the fonts in an existing PDF {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Creates a new PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Replace font @@ -1624,6 +1778,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Creates a new PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Replace font @@ -1653,6 +1811,9 @@ The following code snippet illustrates how to get the bound of a text from PDF d {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.PdfViewer; + PdfViewerControl documentViewer = new PdfViewerControl(); //Load the PDF document documentViewer.Load("Input.pdf"); @@ -1666,6 +1827,9 @@ documentViewer.Dispose(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing; +Imports Syncfusion.PdfViewer; + Dim documentViewer As New PdfViewerControl() 'Load the PDF document documentViewer.Load("Input.pdf") @@ -1687,6 +1851,10 @@ Essential® PDF allows you to add complex script language text in {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Drawing-complex-script-language-text-to-PDF/.NET/Drawing-complex-script-language-text-to-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -1704,16 +1872,19 @@ format.ComplexScript = true; //Draw the text graphics.DrawString("สวัสดีชาวโลก", pdfFont, PdfBrushes.Black, new RectangleF(0, 0, page.GetClientSize().Width, page.GetClientSize().Height), format); -//Save the PDF document -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -//Close the PDF document +//Save the document +doc.Save("Output.pdf"); +//Close the document doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -1740,6 +1911,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document Dim doc As New PdfDocument() 'Add a page to the document @@ -1774,9 +1949,12 @@ You can add the complex script language text in an existing PDF document by usin {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Add-complex-script-to-an-existing-PDF-document/.NET/Add-complex-script-to-an-existing-PDF-document/Program.cs" %} -FileStream inputFileStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Load a PDF document -PdfLoadedDocument doc = new PdfLoadedDocument(inputFileStream); +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Get first page from the document PdfLoadedPage page = doc.Pages[0] as PdfLoadedPage; @@ -1792,16 +1970,19 @@ format.ComplexScript = true; //Draw the text graphics.DrawString("สวัสดีชาวโลก", pdfFont, PdfBrushes.Black, new RectangleF(0, 0, page.Size.Width, page.Size.Height), format); -//Save the PDF document -MemoryStream stream = new MemoryStream(); -await doc.Save(stream); -//Close the PDF document +//Save the document +doc.Save("Output.pdf"); +//Close the document doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Load a PDF document PdfLoadedDocument doc = new PdfLoadedDocument("input.pdf"); //Get first page from the document @@ -1828,6 +2009,10 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Load a PDF document Dim doc As New PdfLoadedDocument("input.pdf") 'Get first page from the document @@ -1864,6 +2049,10 @@ Essential® PDF supports drawing text on a PDF document with OpenT {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Draw-text-using-OpenTypeFont-in-PDF-document/.NET/Draw-text-using-OpenTypeFont-in-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page @@ -1884,16 +2073,19 @@ RectangleF rect = new RectangleF(0, 0, clipBounds.Width, clipBounds.Height); //Draw the text page.Graphics.DrawString(text, font, brush, rect); -//Save the PDF document -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the PDF document +//Save the document. +document.Save("Output.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -1919,6 +2111,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document Dim document As PdfDocument = New PdfDocument 'Add a page to the document @@ -1954,6 +2150,10 @@ The Essential® PDF allows you to draw text using a different type {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Drawing-text-with-baseline-alignment-in-a-PDF/.NET/Drawing-text-with-baseline-alignment-in-a-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Create a new PDF document PdfDocument doc = new PdfDocument(); //Add a page to the document @@ -1981,23 +2181,19 @@ graphics.DrawString("Hello World!", font, PdfBrushes.Black, new PointF(0, 50), f graphics.DrawString("Hello World!", font1, PdfBrushes.Black, new PointF(65, 50), format); graphics.DrawString("Hello World!", font2, PdfBrushes.Black, new PointF(220, 50), format); graphics.DrawString("Hello World!", font3, PdfBrushes.Black, new PointF(320, 50), format); -//Save the PDF document -MemoryStream stream = new MemoryStream(); -doc.Save(stream); -//Close the PDF document -doc.Close(true); - -//Defining the content type for PDF file. -string contentType = "application/pdf"; -//Define the file name -string fileName = "Output.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); +//Save the document +doc.Save("Output.pdf"); +//Close the document +doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -2032,6 +2228,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document Dim document As New PdfDocument() 'Add a page to the document @@ -2078,6 +2278,10 @@ The following code sample explains this. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Drawing-text-using-different-text-alignment/.NET/Drawing-text-using-different-text-alignment/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -2099,19 +2303,19 @@ graphics.DrawRectangle(PdfPens.Black, new RectangleF(10, 10, 200, 20)); //Draw the text graphics.DrawString("Right-Alignment", font, PdfBrushes.Red, new RectangleF(10, 10, 200, 20), format); -//Create a file stream to save the document -using (FileStream fs = new FileStream("Output.pdf", FileMode.Create, FileAccess.Write)) -{ - //Save the document to the file stream - document.Save(fs); -} -//Close the document +//Save the document. +document.Save("Output.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a page to the document @@ -2143,6 +2347,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document Dim document As New PdfDocument() 'Add a page to the document @@ -2186,6 +2394,10 @@ N>To enable this functionality in .NET Core, ensure that the following encoding {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Add-text-encoding-using-standard-PDF-fonts/.NET/Add-text-encoding-using-standard-PDF-fonts/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Adding a new page to the PDF document @@ -2200,10 +2412,8 @@ font.SetTextEncoding(Encoding.GetEncoding("Windows-1250")); //Draw string to a PDF page. graphics.DrawString("äÖíßĆŇ", font, PdfBrushes.Black, PointF.Empty); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -2211,6 +2421,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Adding a new page to the PDF document. @@ -2234,6 +2448,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim document As PdfDocument = New PdfDocument() 'Adding a new page to the PDF document. @@ -2269,6 +2487,10 @@ The following code example demonstrates how to access the remainder text when th {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + // Create a new PDF document PdfDocument document = new PdfDocument(); @@ -2311,6 +2533,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + // Create a new PDF document PdfDocument document = new PdfDocument(); @@ -2353,6 +2579,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + ' Create a new PDF document Dim document As New PdfDocument() @@ -2406,6 +2636,10 @@ The following code example illustrates this. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Text/Customizing-truetype-fonts-in-a-PDF/.NET/Customizing-truetype-fonts-in-a-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Drawing; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -2417,11 +2651,11 @@ FileStream fontStream = new FileStream("Arial.ttf", FileMode.Open, FileAccess.Re // Initialize the PdfFontSettings PdfFontSettings fontSettings = new PdfFontSettings(10, PdfFontStyle.Bold, true, true, true); PdfFont pdfFont = new PdfTrueTypeFont(fontStream, fontSettings); -//Draw the text. graphics.DrawString("Hello World!!!", pdfFont, PdfBrushes.Black, new PointF(0, 0)); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -document.Save(stream); +//Draw the text. +graphics.DrawString("Hello World!!!", pdfFont, PdfBrushes.Black, new PointF(0, 0)); + +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -2429,6 +2663,10 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using System.Drawing; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a page to the document. @@ -2438,7 +2676,8 @@ PdfGraphics graphics = page.Graphics; // Initialize the PdfFontSettings PdfFontSettings fontSettings = new PdfFontSettings(10, PdfFontStyle.Bold, true, true, true); PdfFont pdfFont = new PdfTrueTypeFont(new Font("Arial"), fontSettings); -//Draw the text. graphics.DrawString("Hello World!!!", pdfFont, PdfBrushes.Black, new PointF(0, 0)); +//Draw the text. +graphics.DrawString("Hello World!!!", pdfFont, PdfBrushes.Black, new PointF(0, 0)); //Save the document. document.Save("Output.pdf"); //Close the document. @@ -2448,6 +2687,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim document As PdfDocument = New PdfDocument 'Add a page to the document. @@ -2476,7 +2719,6 @@ You can download a complete working sample from [GitHub](https://github.com/Sync **LineLimit:** When LineLimit is enabled, the provided string will be laid out within the specified bounds. If the LineLimit property is disabled, the layout will continue to fill any remaining space. The default value of the LineLimit property is true. - **NoClip:** If we enable the NoClip option, it will show the text without cutting any words. If we disable the NoClip option, any text outside the fitting area will be hidden. The following code example illustrates this. @@ -2485,6 +2727,10 @@ The following code example illustrates this. {% highlight c# tabtitle="C# [Cross-platform]" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Graphics; + using Syncfusion.Drawing; + // Create a new PdfStringFormat and set its properties PdfStringFormat format = new PdfStringFormat(); //Set no clip @@ -2512,10 +2758,8 @@ The following code example illustrates this. // Draw the string inside the rectangle with the specified font, brush, and format graphics.DrawString("PDF text line 1 \r\nPDF text line 3", font, PdfBrushes.Black, new RectangleF(100, 100, 100, 20), format); - //Creating the stream object. - MemoryStream stream = new MemoryStream(); - //Save the document into stream. - document.Save(stream); + //Save the document. + document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -2524,6 +2768,10 @@ The following code example illustrates this. {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Graphics; + using System.Drawing; + // Create a new PdfStringFormat and set its properties PdfStringFormat format = new PdfStringFormat(); //Set no clip @@ -2560,6 +2808,10 @@ The following code example illustrates this. {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Graphics + Imports System.Drawing + ' Create a new PdfStringFormat and set its properties Dim format As New PdfStringFormat() ' Set no clip diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Watermarks.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Watermarks.md index d3422ab4d..78ca24559 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Watermarks.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Watermarks.md @@ -20,6 +20,10 @@ The below code illustrates how to draw the text watermark in new PDF document us {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Watermark/Adding-text-watermark-in-PDF-document/.NET/Adding-text-watermark-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -35,23 +39,18 @@ graphics.SetTransparency(0.25f); graphics.RotateTransform(-40); graphics.DrawString("Imported using Essential PDF", font, PdfPens.Red, PdfBrushes.Red, new PointF(-150, 450)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -stream.Position = 0; -//Close the document. +//Save and close the document. +pdfDocument.Save("Watermark.pdf"); pdfDocument.Close(true); -//Defining the content type for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Watermark.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -75,6 +74,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim pdfDocument As New PdfDocument() 'Add a page to the PDF document. @@ -109,9 +112,13 @@ The below code illustrates how to draw the text watermark in an existing PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Watermark/Add-text-watermark-in-an-existing-PDF-document/.NET/Add-text-watermark-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get first page from document. PdfPageBase loadedPage = loadedDocument.Pages[0]; //Create PDF graphics for the page. @@ -124,27 +131,23 @@ PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); PdfGraphicsState state = graphics.Save(); graphics.SetTransparency(0.25f); graphics.RotateTransform(-40); -graphics.DrawString("Imported using Essential PDF", font, PdfPens.Red, PdfBrushes.Red, new PointF(-150, +graphics.DrawString("Imported using Essential PDF", font, PdfPens.Red, PdfBrushes.Red, new PointF(-150, 450)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document. +//Save and close the document. +loadedDocument.Save("Watermark.pdf"); loadedDocument.Close(true); -//Defining the content type for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Watermark.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get first page from document. PdfPageBase loadedPage = loadedDocument.Pages[0]; //Create PDF graphics for the page. @@ -166,8 +169,13 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + 'Load an existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get first page from document. Dim loadedPage As PdfPageBase = loadedDocument.Pages(0) 'Create PDF graphics for the page. @@ -203,6 +211,10 @@ The below code sample illustrates how to add image watermark in PDF document, us {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Watermark/Adding-image-watermark-in-PDF-document/.NET/Adding-image-watermark-in-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -219,23 +231,18 @@ graphics.SetTransparency(0.25f); //Draw the image. graphics.DrawImage(image, new PointF(0, 0), pdfPage.Graphics.ClientSize); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -pdfDocument.Save(stream); -stream.Position = 0; -//Close the document. +//Save and close the document. +pdfDocument.Save("Watermark.pdf"); pdfDocument.Close(true); -//Defining the content type for PDF file. -string contentType = "application/pdf"; -//Define the file name. -string fileName = "Watermark.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name. -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; + //Create a new PDF document. PdfDocument pdfDocument = new PdfDocument(); //Add a page to the PDF document. @@ -258,6 +265,10 @@ pdfDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports System.Drawing + 'Create a new PDF document. Dim pdfDocument As New PdfDocument() 'Add a page to the PDF document. @@ -291,9 +302,13 @@ The below code illustrates how to draw the image watermark in existing PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Watermark/Draw-the-image-watermark-in-an-existing-PDF-document/.NET/Draw-the-image-watermark-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get first page from document PdfPageBase loadedPage = loadedDocument.Pages[0]; //Create PDF graphics for the page @@ -307,25 +322,21 @@ graphics.SetTransparency(0.25f); //Draw the image graphics.DrawImage(image, new PointF(0, 0), loadedPage.Graphics.ClientSize); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -stream.Position = 0; -//Close the document +//Save and close the document. +loadedDocument.Save("watermark.pdf"); loadedDocument.Close(true); -//Defining the content type for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Watermark.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load an existing document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get first page from document. PdfPageBase loadedPage = loadedDocument.Pages[0]; //Create PDF graphics for the page. @@ -346,8 +357,13 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + 'Load the document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get first page from document. Dim loadedPage As PdfPageBase = loadedDocument.Pages(0) 'Create PDF graphics for the page @@ -382,9 +398,13 @@ The following code example explains how to add a watermark annotation in the PDF {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Annotation/Add-watermark-annotation-in-the-PDF-document/.NET/Add-watermark-annotation-in-the-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the PDF document -FileStream docStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the page PdfLoadedPage lpage = loadedDocument.Pages[0] as PdfLoadedPage; @@ -397,16 +417,19 @@ watermark.Appearance.Normal.Graphics.DrawString("Watermark Text", new PdfStandar //Adds the annotation to page lpage.Annotations.Add(watermark); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); -//Close the document -loadedDocument.Close(true); +//Saves the document. +loadedDocument.Save("WatermarkAnnotation.pdf"); +loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); //Get the page @@ -429,6 +452,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Parsing +Imports System.Drawing + 'Load the existing PDF document Dim loadedDocument As New PdfLoadedDocument("input.pdf") 'Get the page @@ -460,9 +488,12 @@ You can remove the Watermark annotation from the annotation collection, represen {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Watermark/Removing-watermark-annotation-in-PDF-document/.NET/Remove-watermark-annotation-in-the-PDF-document/Program.cs" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Graphics; + using Syncfusion.Pdf.Parsing; + //Load the PDF document - FileStream docStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read); - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Iterate through the annotations collection and remove PdfLoadedWatermark annotations foreach (PdfPageBase page in loadedDocument.Pages) { @@ -477,16 +508,18 @@ You can remove the Watermark annotation from the annotation collection, represen } } - //Save the document into stream - MemoryStream stream = new MemoryStream(); - loadedDocument.Save(stream); - //Close the document - loadedDocument.Close(true); + //Saves the document to disk. + loadedDocument.Save("WatermarkAnnotation.pdf"); + loadedDocument.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Graphics; + using Syncfusion.Pdf.Parsing; + //Load the existing PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); // Iterate through the annotations collection and remove PdfLoadedWatermark annotations @@ -511,6 +544,10 @@ You can remove the Watermark annotation from the annotation collection, represen {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Graphics + Imports Syncfusion.Pdf.Parsing + 'Load the existing PDF document Dim loadedDocument As New PdfLoadedDocument("input.pdf") ' Iterate through the annotations collection and remove PdfLoadedWatermark annotations diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD b/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD index f64c310e9..92cc4fa51 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD @@ -24,6 +24,8 @@ The following code example explains how to add a new page using [PdfXfaPage](htt {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-a-new-page-in-a-PDF-XFA-document/.NET/Add-a-new-page-in-a-PDF-XFA-document/Program.cs" %} +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -38,16 +40,16 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf", PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -71,6 +73,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -110,6 +114,10 @@ The below sample illustrates how to create a new PDF document with XFA page size {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Create-a-new-PDF-document-with-XFA-page-size/.NET/Create-a-new-PDF-document-with-XFA-page-size/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -128,9 +136,8 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -138,6 +145,10 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -165,6 +176,10 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document. Dim document As New PdfXfaDocument() 'Set the page size. @@ -200,6 +215,10 @@ You can create a custom page size to the PDF document by using following code sn {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Create-a-custom-page-size-to-the-PDF-document/.NET/Create-a-custom-page-size-to-the-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -218,9 +237,8 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -228,6 +246,10 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -255,6 +277,10 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Set the page size @@ -290,6 +316,10 @@ You can change page orientation from portrait to landscape by using [PdfXfaPageO {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Change-page-orientation-from-portrait-to-landscape-in-PDF/.NET/Change-page-orientation-from-portrait-to-landscape-in-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -310,9 +340,8 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -320,6 +349,10 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -349,6 +382,10 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Set the page size @@ -388,6 +425,10 @@ To create a dynamic XFA forms using [PdfXfaType](https://help.syncfusion.com/cr/ {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Create-a-dynamic-XFA-forms-in-a-PDF-document/.NET/Create-a-dynamic-XFA-forms-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -406,9 +447,8 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -416,6 +456,10 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -443,6 +487,10 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Set the page size @@ -480,6 +528,10 @@ To create a static XFA forms using [PdfXfaType](https://help.syncfusion.com/cr/d {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Create-a-static-XFA-forms-in-a-PDF-document/.NET/Create-a-static-XFA-forms-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -498,9 +550,8 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Static); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -508,6 +559,10 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Set the page size. @@ -535,6 +590,10 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Set the page size @@ -574,6 +633,9 @@ The below code snippet illustrates how to add a textbox field to a new PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-a-textbox-field-to-a-new-PDF-document/.NET/Add-a-textbox-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -592,9 +654,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -602,6 +663,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -629,6 +693,9 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document. Dim document As New PdfXfaDocument() 'Add a new XFA page. @@ -664,10 +731,11 @@ The below code snippet illustrates how to add a textbox field to an existing PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-a-textbox-field-to-an-existing-PDF-document/.NET/Add-a-textbox-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -680,10 +748,8 @@ textBoxField.ToolTip = "First Name"; //Add the field to the existing XFA form. loadedForm.Fields.Add(textBoxField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -loadedDocument.Save(stream); +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -691,6 +757,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -714,6 +783,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document. Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form. @@ -747,6 +819,9 @@ The below code snippet illustrates how to add a numeric field to a new PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-a-XFA-numeric-field-to-a-new-PDF-document/.NET/Add-a-XFA-numeric-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -763,9 +838,8 @@ mainForm.Fields.Add(numericField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Save the PDF document to stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -773,6 +847,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -798,6 +875,9 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf. + 'Create a new PDF XFA document. Dim document As New PdfXfaDocument() 'Add a new XFA page. @@ -831,10 +911,11 @@ The below code snippet illustrates how to add the numeric field to an existing P {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-numeric-field-to-an-existing-PDF-document/.NET/Add-the-XFA-numeric-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -845,10 +926,8 @@ numericField.Caption.Text = "Numeric Field"; //Add the field to the existing XFA form. loadedForm.Fields.Add(numericField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -loadedDocument.Save(stream); +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -856,6 +935,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -877,6 +959,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -908,6 +993,9 @@ The below code snippet illustrates how to add a combo box field to a new PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-a-combobox-field-to-a-new-PDF-document/.NET/Add-a-combobox-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -929,10 +1017,8 @@ mainForm.Fields.Add(comboBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -document.Save(stream, PdfXfaType.Dynamic); +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -940,6 +1026,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -969,6 +1058,9 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Create a new PDF XFA document Dim document As PdfXfaDocument = New PdfXfaDocument() 'Add a new XFA page @@ -1006,10 +1098,11 @@ The below code snippet illustrates how to add the combo box field to an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-combobox-field-to-an-existing-PDF-document/.NET/Add-the-combobox-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -1024,10 +1117,8 @@ comboBoxField.Items.Add("Documentation."); //Add the field to the existing XFA form. loadedForm.Fields.Add(comboBoxField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -loadedDocument.Save(stream); +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -1035,6 +1126,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -1060,6 +1154,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -1095,6 +1192,9 @@ The below code snippet illustrates how to add a list box field to a new PDF docu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-listbox-field-to-a-new-PDF-document/.NET/Add-the-XFA-listbox-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1117,10 +1217,8 @@ mainForm.Fields.Add(listBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -document.Save(stream, PdfXfaType.Dynamic); +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -1128,6 +1226,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1159,6 +1260,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -1198,10 +1301,11 @@ The below code snippet illustrates how to add the list box field to an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-listbox-field-to-an-existing-PDF-document/.NET/Add-the-XFA-listbox-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -1218,10 +1322,8 @@ listBoxField.Items.Add("German"); //Add the field to the existing XFA form. loadedForm.Fields.Add(listBoxField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -loadedDocument.Save(stream); +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -1229,6 +1331,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -1256,6 +1361,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -1293,6 +1401,9 @@ The below code snippet illustrates how to add a check box field to a new PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-checkbox-field-to-a-new-PDF-document/.NET/Add-the-XFA-checkbox-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1310,10 +1421,8 @@ mainForm.Fields.Add(checkBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -document.Save(stream, PdfXfaType.Dynamic); +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -1321,6 +1430,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1347,6 +1459,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -1381,10 +1495,11 @@ The below code snippet illustrates how to add the check box field to an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-checkbox-field-to-an-existing-PDF-document/.NET/Add-the-XFA-checkbox-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -1396,10 +1511,8 @@ checkBoxField.CheckedStyle = PdfXfaCheckedStyle.Cross; //Add the field to the existing XFA form. loadedForm.Fields.Add(checkBoxField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -loadedDocument.Save(stream); +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -1407,6 +1520,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -1429,6 +1545,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -1461,6 +1580,9 @@ The below code snippet illustrates how to add a radio button field to a new PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-radio-button-field-to-a-new-PDF-document/.NET/Add-the-XFA-radio-button-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1486,10 +1608,8 @@ mainForm.Fields.Add(group); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -document.Save(stream, PdfXfaType.Dynamic); +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -1497,6 +1617,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1531,6 +1654,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -1573,10 +1698,11 @@ The below code snippet illustrates how to add the radio button field to an exist {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-radio-button-field-to-an-existing-PDF-document/.NET/Add-the-XFA-radio-button-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -1596,10 +1722,8 @@ group.Items.Add(radioButtonField2); //Add the field to the existing XFA form. loadedForm.Fields.Add(group); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -1607,6 +1731,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -1637,6 +1764,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -1677,6 +1807,9 @@ The below code snippet illustrates how to add a date time field to a new PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-datetime-field-in-a-new-PDF-document/.NET/Add-the-XFA-datetime-field-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1695,17 +1828,17 @@ mainForm.Fields.Add(dateTimeField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1733,6 +1866,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -1768,10 +1903,11 @@ The below code snippet illustrates how to add the date time field to an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-datetime-field-in-an-existing-PDF-document/.NET/Add-the-XFA-datetime-field-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -1784,10 +1920,8 @@ dateTimeField.ToolTip = "Date Time"; //Add the field to the existing XFA form. loadedForm.Fields.Add(dateTimeField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -1795,6 +1929,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -1818,6 +1955,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -1851,6 +1991,9 @@ The below code snippet illustrates how to add a button field to a new PDF docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-button-field-to-a-new-PDF-document/.NET/Add-the-XFA-button-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1867,17 +2010,17 @@ mainForm.Fields.Add(buttonField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -1903,6 +2046,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -1936,10 +2081,11 @@ The below code snippet illustrates how to add the button field to an existing PD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-button-field-to-an-existing-PDF-document/.NET/Add-the-XFA-button-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -1950,10 +2096,8 @@ buttonField.Content = "Click"; //Add the field to the existing XFA form. loadedForm.Fields.Add(buttonField); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -1961,6 +2105,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -1982,6 +2129,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -2013,6 +2163,9 @@ The below code snippet illustrates how to add a text element to a new PDF docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-text-element-to-a-new-PDF-document/.NET/Add-the-XFA-text-element-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2029,10 +2182,8 @@ mainForm.Fields.Add(textElement); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -2040,6 +2191,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2065,6 +2219,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -2098,10 +2254,11 @@ The below code snippet illustrates how to add a text element to an existing PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-text-element-to-an-existing-PDF-document/.NET/Add-the-XFA-text-element-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -2112,10 +2269,8 @@ textElement.Font = new PdfStandardFont(PdfFontFamily.Helvetica, 14, PdfFontStyle //Add the text element to the existing XFA form. loadedForm.Fields.Add(textElement); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -2123,6 +2278,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -2144,6 +2302,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -2175,6 +2336,9 @@ The below code snippet illustrates how to add the rectangle field to a new PDF d {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-rectangle-field-to-a-new-PDF-document/.NET/Add-the-XFA-rectangle-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2191,17 +2355,17 @@ mainForm.Fields.Add(rectangle); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2227,6 +2391,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -2260,10 +2426,11 @@ The below code snippet illustrates how to add the rectangle field to an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-rectangle-field-to-an-existing-PDF-document/.NET/Add-the-XFA-rectangle-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -2274,10 +2441,8 @@ rectangle.Border.FillColor = new PdfXfaSolidBrush(Color.FromArgb(0,255,0,0)); //Add the rectangle to the existing XFA form. loadedForm.Fields.Add(rectangle); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -2285,6 +2450,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form @@ -2306,6 +2474,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -2337,6 +2508,9 @@ The below code snippet illustrates how to add the circle field to a new PDF docu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-circle-field-to-a-new-PDF-document/.NET/Add-the-XFA-circle-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2353,17 +2527,17 @@ mainForm.Fields.Add(circle); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2389,6 +2563,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -2422,10 +2598,11 @@ The below code snippet illustrates how to add the circle field to an existing PD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-circle-field-to-an-existing-PDF-document/.NET/Add-circle-field-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -2436,10 +2613,8 @@ circle.Border.FillColor = new PdfXfaSolidBrush(Color.FromArgb(0,255,0,0)); //Add the circle to the existing XFA form. loadedForm.Fields.Add(circle); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -2447,6 +2622,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -2468,6 +2646,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -2499,6 +2680,9 @@ The below code snippet illustrates how to add a line to a new PDF document using {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-line-to-a-new-PDF-document/.NET/Add-the-XFA-line-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2515,17 +2699,17 @@ mainForm.Fields.Add(line); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2551,6 +2735,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -2584,10 +2770,11 @@ The below code snippet illustrates how to add a line to an existing PDF document {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-XFA-line-to-an-existing-PDF-document/.NET/Add-XFA-line-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -2598,10 +2785,8 @@ line.Color = new PdfColor(Color.FromArgb(0,255,0,0)); //Add the line to the existing XFA form. loadedForm.Fields.Add(line); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -2609,6 +2794,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm.pdf"); //Load the existing XFA form. @@ -2630,6 +2818,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm.pdf") 'Load the existing XFA form @@ -2661,6 +2852,9 @@ The below code snippet illustrates how to add an image to a new PDF document usi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-image-to-a-new-PDF-document/.NET/Add-the-XFA-image-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2677,17 +2871,17 @@ mainForm.Fields.Add(image); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream, PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); - {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add a new XFA page. @@ -2711,6 +2905,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add a new XFA page @@ -2742,24 +2938,23 @@ The below code snippet illustrates how to add an image to an existing PDF docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-XFA-image-to-an-existing-PDF-document/.NET/Add-the-XFA-image-to-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; //Load the image as stream. -MemoryStream imageStream = new MemoryStream(File.ReadAllBytes(imageFileName)); +MemoryStream imageStream = new MemoryStream(File.ReadAllBytes("Image.png")); //Create a image and add the properties. PdfXfaImage image = new PdfXfaImage("imgage1", imageStream); //Add the image to the existing XFA form. loadedForm.Fields.Add(image); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -2767,6 +2962,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. @@ -2786,6 +2984,9 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa + 'Load the existing XFA document Dim loadedDocument As New PdfLoadedXfaDocument("XfaForm1.pdf") 'Load the existing XFA form @@ -2822,6 +3023,9 @@ You can set the flow direction to an XFA form while creating, using [PdfXfaFlowD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Set-the-horizontal-flow-direction-in-XFA-forms/.NET/Set-the-horizontal-flow-direction-in-XFA-forms/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -2846,10 +3050,8 @@ mainForm.Fields.Add(textBoxField1); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Add the field to the XFA form. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf", PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -2857,6 +3059,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -2890,6 +3095,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -2933,6 +3140,9 @@ You can set the flow direction to an XFA form while creating, using [PdfXfaFlowD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Set-the-vertical-flow-direction-in-XFA-forms/.NET/Set-the-vertical-flow-direction-in-XFA-forms/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -2957,17 +3167,18 @@ mainForm.Fields.Add(textBoxField1); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} - + +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3001,6 +3212,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3044,6 +3257,9 @@ You can rotate a form field in XFA document, using [PdfXfaRotateAngle](https://h {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Rotating-the-XFA-form-fields-in-a-PDF-document/.NET/Rotating-the-XFA-form-fields-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3064,10 +3280,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3075,6 +3289,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3104,6 +3321,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3143,6 +3362,9 @@ You can validate the date time fields of the input text by enabling the [Require {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Validating-the-XFA-datetime-field-in-a-PDF-document/.NET/Validating-the-XFA-datetime-field-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3163,10 +3385,8 @@ mainForm.Fields.Add(dateTimeField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3174,6 +3394,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3203,6 +3426,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3244,6 +3469,9 @@ Please refer the below link for numeric pattern format in detail, {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Customizing-the-XFA-numeric-field-in-a-PDF-document/.NET/Customizing-the-XFA-numeric-field-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3262,10 +3490,8 @@ mainForm.Fields.Add(numericField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3273,6 +3499,9 @@ document.Close(); {% highlight c# tabtitle="C#" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3337,6 +3566,9 @@ You can add the nested sub forms by using [PdfXfaForm](https://help.syncfusion.c {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-XFA-nested-subforms-in-a-PDF-document/.NET/Add-XFA-nested-subforms-in-a-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3366,10 +3598,8 @@ mainForm.Fields.Add(form1); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3377,6 +3607,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3415,6 +3648,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3487,10 +3722,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3498,6 +3731,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3525,6 +3761,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3562,6 +3800,9 @@ You can add the vertical alignments in XFA form fields through [VerticalAlignmen {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-vertical-alignments-in-XFA-form-fields/.NET/Add-the-vertical-alignments-in-XFA-form-fields/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3580,10 +3821,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3591,6 +3830,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3618,6 +3860,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3655,6 +3899,9 @@ You can add margin to the XFA form fields by using [Margins](https://help.syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Adding-margins-to-the-XFA-form-fields/.NET/Adding-margins-to-the-XFA-form-fields/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3674,10 +3921,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3685,6 +3930,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3713,6 +3961,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3751,6 +4001,9 @@ You can add padding to the XFA form fields by using [padding](https://help.syncf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-the-padding-to-XFA-form-fields/.NET/Add-the-padding-to-XFA-form-fields/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3769,10 +4022,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3780,6 +4031,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3807,6 +4061,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3844,6 +4100,9 @@ You can add border to the XFA fields by using [Border](https://help.syncfusion.c {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Add-border-to-the-XFA-form-fields/.NET/Add-border-to-the-XFA-form-fields/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3863,10 +4122,8 @@ mainForm.Fields.Add(textBoxField); //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -3874,6 +4131,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -3902,6 +4162,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -3944,10 +4206,11 @@ Please refer the below sample for filling the XFA text box field using [PdfLoade {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Filling-the-XFA-textbox-field-in-an-existing-PDF-document/.NET/Filling-the-XFA-textbox-field-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -3956,10 +4219,8 @@ PdfLoadedXfaTextBoxField loadedTextBox = (loadedForm.Fields["subform1[0]"] as Pd //fill the text box. loadedTextBox.Text = "First Name"; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -3967,6 +4228,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -3986,6 +4250,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4015,10 +4281,11 @@ You can fill the XFA numeric field by using [PdfLoadedXfaNumericField](https://h {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Filling-the-XFA-numeric-field-in-an-existing-PDF-document/.NET/Filling-the-XFA-numeric-field-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4027,10 +4294,8 @@ PdfLoadedXfaNumericField loadedNumericField = (loadedForm.Fields["subform1[0]"] //fill the numeric field. loadedNumericField.NumericValue = 945322; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4038,6 +4303,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4057,6 +4325,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4086,10 +4356,11 @@ You can fill the XFA combo box field by using [PdfLoadedXfaComboBoxField](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Filling-the-XFA-combobox-field-in-an-existing-PDF-document/.NET/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4098,10 +4369,8 @@ PdfLoadedXfaComboBoxField loadedComboBoxField = (loadedForm.Fields["subform1[0]" //Set the combo box selected index. loadedComboBoxField.SelectedIndex = 1; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4109,6 +4378,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4128,6 +4400,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4155,10 +4429,11 @@ You can fill and save hidden items in XFA combo box field by using [HiddenItems] {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Fill-and-save-hidden-items-in-XFA-combobox-field/.NET/Fill-and-save-hidden-items-in-XFA-combobox-field/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4170,10 +4445,8 @@ loadedComboBoxField.SelectedValue = loadedComboBoxField.HiddenItems[0]; List hiddenValues = new List(); hiddenValues = loadedComboBoxField.HiddenItems; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4181,6 +4454,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("Input.pdf"); //Load the existing XFA form. @@ -4203,6 +4479,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("Input.pdf") 'Load the existing XFA form @@ -4235,10 +4513,11 @@ You can fill the XFA list box field by using [PdfLoadedXfaListBoxField](https:// {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Fill-the-XFA-listbox-field-in-an-existing-PDF-document/.NET/Fill-the-XFA-listbox-field-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4247,10 +4526,8 @@ PdfLoadedXfaListBoxField loadedListBoxField = (loadedForm.Fields["subform1[0]"] //Set the list box selected index. loadedListBoxField.SelectedIndex = 1; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4258,6 +4535,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4277,6 +4557,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4304,10 +4586,11 @@ You can also select the multiple values by using [SelectedItems](https://help.sy {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Select-multiple-values-in-an-existing-XFA-listbox-field/.NET/Select-multiple-values-in-an-existing-XFA-listbox-field/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4316,10 +4599,8 @@ PdfLoadedXfaListBoxField loadedListBoxField = (loadedForm.Fields["subform1[0]"] //Set the list box selected items. loadedListBoxField.SelectedItems = new string[] { "English", "Spanish" }; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4327,6 +4608,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4346,6 +4630,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4375,10 +4661,11 @@ You can fill the XFA date time field by using [PdfLoadedXfaDateTimeField](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Fill-the-XFA-datetime-field-in-an-existing-PDF-document/.NET/Fill-the-XFA-datetime-field-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4387,10 +4674,8 @@ PdfLoadedXfaDateTimeField loadedDateTimeField = (loadedForm.Fields["subform1[0]" //Set the value. loadedDateTimeField.Value = DateTime.Now; -//Save the document to memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(); @@ -4398,6 +4683,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4417,6 +4705,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4446,10 +4736,11 @@ You can fill the XFA check box field by using [PdfLoadedXfaCheckBoxField](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Fill-the-XFA-checkbox-field-in-an-existing-PDF-document/.NET/Fill-the-XFA-checkbox-field-in-an-existing-PDF-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4458,10 +4749,8 @@ PdfLoadedXfaCheckBoxField loadedCheckBox = (loadedForm.Fields["subform1[0]"] as //Check the check box. loadedCheckBox.IsChecked = true; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4469,6 +4758,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4488,6 +4780,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4517,10 +4811,11 @@ You can fill the XFA radio button field by using [PdfLoadedXfaRadioButtonField]( {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Fill-the-XFA-radiobutton-field-in-an-existing-PDF-document/.NET/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4531,10 +4826,8 @@ PdfLoadedXfaRadioButtonField loadedRadioButtonField = loadedRadioButtonGroup.Fie //Check the radio button. loadedRadioButtonField.IsChecked = true; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4542,6 +4835,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4563,6 +4859,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4596,6 +4894,9 @@ The below code snippet illustrates how to set the [ReadOnly](https://help.syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Removing-editing-capability-of-form-fields-in-a-new-PDF/.NET/Removing-editing-capability-of-form-fields-in-a-new-PDF/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -4614,10 +4915,8 @@ mainForm.ReadOnly = true; //Add the XFA form to the document. document.XfaForm = mainForm; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -document.Save(stream,PdfXfaType.Dynamic); +//Save the document. +document.Save("XfaForm.pdf",PdfXfaType.Dynamic); //Close the document. document.Close(); @@ -4625,6 +4924,9 @@ document.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Create a new PDF XFA document. PdfXfaDocument document = new PdfXfaDocument(); //Add new XFA page. @@ -4652,6 +4954,8 @@ document.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Create a new PDF XFA document Dim document As New PdfXfaDocument() 'Add new XFA page @@ -4687,19 +4991,18 @@ The below code snippet illustrates how to set the [ReadOnly](https://help.syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Remove-editing-capability-to-an-existing-form-fields/.NET/Remove-editing-capability-to-an-existing-form-fields/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; //Set the form as read only. loadedForm.ReadOnly = true; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4707,6 +5010,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4723,6 +5029,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4757,6 +5065,9 @@ The following code snippet illustrates how to flatten the XFA form field. {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing document. PdfLoadedXfaDocument ldoc = new PdfLoadedXfaDocument("input.pdf"); //Set flatten. @@ -4771,6 +5082,8 @@ ldoc.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing document Dim ldoc As New PdfLoadedXfaDocument("input.pdf") 'Set flatten @@ -4795,10 +5108,11 @@ You can remove the dynamic XFA form fields by using [Remove](https://help.syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Removing-the-dynamic-form-fields-from-an-existing-PDF/.NET/Removing-the-dynamic-form-fields-from-an-existing-PDF/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4807,10 +5121,8 @@ PdfLoadedXfaTextBoxField loadedText = (loadedForm.Fields["subform1[0]"] as PdfLo //Remove the field. loadedForm.Fields.Remove(loadedText); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4818,6 +5130,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4837,6 +5152,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4866,10 +5183,11 @@ You can modify the existing dynamic XFA fields like Width, Height and Text by us {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Modidy-the-existing-fields-in-XFA-document/.NET/Modidy-the-existing-fields-in-XFA-document/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Load the existing XFA form. PdfLoadedXfaForm loadedForm = loadedDocument.XfaForm; @@ -4881,10 +5199,8 @@ loadedText.Height = 30; //Set the caption text. loadedText.Caption.Text = "Second Name"; -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4892,6 +5208,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing PDF document. PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("input.pdf"); //Load the existing XFA form. @@ -4914,6 +5233,8 @@ loadedDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa 'Load the existing PDF document Dim loadedDocument As New PdfLoadedXfaDocument("input.pdf") 'Load the existing XFA form @@ -4948,19 +5269,18 @@ The following sample illustrates how to clear the date time field in an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/XFA/Clear-XFA-datetime-field-value-in-an-existing-XFA-document/.NET/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); +using Syncfusion.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA document. -PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument(docStream); +PdfLoadedXfaDocument loadedDocument = new PdfLoadedXfaDocument("XfaForm1.pdf"); //Get the date time field. PdfLoadedXfaDateTimeField dateTimeField = loadedDocument.XfaForm.TryGetFieldByCompleteName("form[0].subform[0].dateTime[0]") as PdfLoadedXfaDateTimeField; //Clear the date time field value. dateTimeField.ClearValue(); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document to memory stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("XfaForm.pdf"); //Close the document. loadedDocument.Close(); @@ -4968,6 +5288,9 @@ loadedDocument.Close(); {% highlight c# tabtitle="C# [Windows-specific]" %} +using System.Drawing; +using Syncfusion.Pdf.Xfa; + //Load the existing XFA PDF document. PdfLoadedXfaDocument loadedXfaDocument = new PdfLoadedXfaDocument("input.pdf"); //Get the date time field. @@ -4983,7 +5306,8 @@ loadedXfaDocument.Close(); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing XFA PDF document +Imports System.Drawing +Imports Syncfusion.Pdf.Xfa'Load the existing XFA PDF document Dim loadedXfaDocument As PdfLoadedXfaDocument = New PdfLoadedXfaDocument("input.pdf") 'Get the date time field Dim dateTimeField As PdfLoadedXfaDateTimeField = TryCast(loadedXfaDocument.XfaForm.TryGetFieldByCompleteName("form[0].subform[0].dateTime[0]"), PdfLoadedXfaDateTimeField) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md index 8be1a1b8e..d0746ee48 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md @@ -162,6 +162,9 @@ Using **PDF/A-3b** conformance, you can create a **ZUGFeRD invoice PDF** by spec {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/ZUGFeRD/Factur-X/.NET/Factur-X/Program.cs" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf; + //Create a new PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3B); @@ -184,17 +187,18 @@ attachment.MimeType = "text/xml"; //Add attachment to PDF document document.Attachments.Add(attachment); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; +//Save the document +document.Save("Output.pdf"); //Closes the document -document.Close(true); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf; + //Create a new PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3B); @@ -226,6 +230,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf + ' Create a new PDF document Dim document As New PdfDocument(PdfConformanceLevel.Pdf_A3B) @@ -266,6 +273,9 @@ The complete code to create ZUGFeRD invoice PDF document as follows. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/ZUGFeRD/Create-ZUGFeRD-compliment-PDF-invoice/.NET/Create-ZUGFeRD-compliment-PDF-invoice/Program.cs" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf; + //Create ZUGFeRD invoice PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3B); //Set ZUGFeRD conformance level @@ -281,25 +291,18 @@ attachment.MimeType = "application/xml"; //Add attachment to PDF document document.Attachments.Add(attachment); -//Creating the stream object -MemoryStream stream = new MemoryStream(); -//Save the document into memory stream -document.Save(stream); -//If the position is not set to '0', then the PDF will be empty -stream.Position = 0; -//Close the document -document.Close(true); -//Defining the ContentType for PDF file -string contentType = "application/pdf"; -//Define the file name -string fileName = "Zugferd.pdf"; -//Creates a FileContentResult object by using the file contents, content type, and file name -return File(stream, contentType, fileName); +//Save the document +document.Save("Output.pdf"); +//Closes the document +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf; + //Create ZUGFeRD invoice PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A3B); //Set ZUGFeRD conformance level @@ -323,6 +326,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf + 'Create ZUGFeRD invoice PDF document Dim document As PdfDocument = New PdfDocument(PdfConformanceLevel.Pdf_A3B) 'Set ZUGFeRD conformance level @@ -356,28 +362,32 @@ You can extract the ZUGFeRD invoice using [PdfAttachment](https://help.syncfusio {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/ZUGFeRD/Extract-ZUGFeRD-invoice-from-PDF-document/.NET/Extract-ZUGFeRD-invoice-from-PDF-document/Program.cs" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Input.pdf"), FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; -//Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +//Loads the PDF document +PdfLoadedDocument document = new PdfLoadedDocument("Sample.pdf"); -//Iterates the attachments. -foreach (PdfAttachment attachment in loadedDocument.Attachments) +//Iterates the attachments +foreach (PdfAttachment attachment in document.Attachments) { - //Extracts the ZUGFeRD invoice attachment and saves it to the disk. - FileStream s = new FileStream("Output/" + attachment.FileName, FileMode.Create, FileAccess.Write); - s.Write(attachment.Data, 0, attachment.Data.Length); - s.Dispose(); +//Extracts the ZUGFeRD invoice attachment and saves it to the disk +FileStream s = new FileStream(attachment.FileName, FileMode.Create); +s.Write(attachment.Data, 0, attachment.Data.Length); +s.Dispose(); } -//Close the PDF document. -loadedDocument.Close(true); +//Saves and closes the document +document.Save("Output.pdf"); +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Loads the PDF document PdfLoadedDocument document = new PdfLoadedDocument("Sample.pdf"); @@ -398,6 +408,9 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Loads the PDF document Dim document As New PdfLoadedDocument("Sample.pdf") diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md index cb5da10af..8f6961431 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md @@ -26,6 +26,11 @@ The below code snippet illustrates how to add a textbox field to a new PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-a-textbox-field-to-a-new-PDF-document/.NET/Add-a-textbox-field-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -38,10 +43,8 @@ textBoxField.ToolTip = "First Name"; //Add the form field to the document. document.Form.Fields.Add(textBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -49,6 +52,11 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -70,7 +78,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Drawing +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Graphics +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As PdfDocument = New PdfDocument() 'Add a new page to the PDF document. Dim page As PdfPage = document.Pages.Add() @@ -99,9 +112,12 @@ The below code snippet illustrates how to add the textbox to an existing PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-the-textbox-to-an-existing-PDF-document/.NET/Add-the-textbox-to-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -115,10 +131,8 @@ textBoxField.ToolTip = "First Name"; //Add the form field to the existing PDF document. loadedDocument.Form.Fields.Add(textBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -126,8 +140,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if(loadedDocument.Form==null) loadedDocument.CreateForm(); @@ -150,8 +168,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create the form if the form does not exist in the loaded document If loadedDocument.Form Is Nothing Then loadedDocument.CreateForm() @@ -187,6 +209,9 @@ Please refer the below code snippet for adding the combo box in new PDF document {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Adding-combo-box-in-the-new-PDF-document/.NET/Adding-combo-box-in-the-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -205,10 +230,8 @@ comboBoxField.Items.Add(new PdfListFieldItem("Documentation", "content")); //Add combo box to the form. document.Form.Fields.Add(comboBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -216,6 +239,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -242,8 +268,11 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - -'Create a new PDF document + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document Dim page As PdfPage = document.Pages.Add() @@ -278,9 +307,12 @@ Please refer the below code snippet for adding the combo box in existing PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Adding-the-combo-box-in-existing-PDF-document/.NET/Adding-the-combo-box-in-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -300,10 +332,8 @@ comboBoxField.Items.Add(new PdfListFieldItem("Documentation", "content")); //Add combo box to the form. loadedDocument.Form.Fields.Add(comboBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -311,8 +341,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if(loadedDocument.Form==null) loadedDocument.CreateForm(); @@ -341,8 +375,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create the form if the form does not exist in the loaded document If loadedDocument.Form Is Nothing Then loadedDocument.CreateForm() @@ -382,29 +420,28 @@ Use the [TextAlignment](https://help.syncfusion.com/cr/document-processing/Syncf {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Annotation/Set-text-alignment-in-a-Combo-Box-field/.NET/Set-text-alignment-in-a-Combo-Box-field/Program.cs" %} - // Load an existing document from a file stream. - using (FileStream fileStream = new FileStream("SourceForm.pdf", FileMode.Open, FileAccess.Read)) - { - PdfLoadedDocument doc = new PdfLoadedDocument(fileStream); - // Load an existing combo box field by its name. - PdfLoadedComboBoxField comboField = doc.Form.Fields["EmployeeCombo"] as PdfLoadedComboBoxField; - // Set text alignment to center for the combo box field. - comboField.TextAlignment = PdfTextAlignment.Center; - - // Save the updated document to a file stream. - using (FileStream outputStream = new FileStream("Form.pdf", FileMode.Create, FileAccess.Write)) - { - doc.Save(outputStream); - } + using Syncfusion.Pdf; + using Syncfusion.Pdf.Interactive; + using Syncfusion.Pdf.Parsing; - // Close the document. - doc.Close(true); - } + // Load an existing document. + PdfLoadedDocument doc = new PdfLoadedDocument("SourceForm.pdf"); + // Load an existing combo box field by its name. + PdfLoadedComboBoxField comboField = doc.Form.Fields["EmployeeCombo"] as PdfLoadedComboBoxField; + // Set text alignment to center for the combo box field. + comboField.TextAlignment = PdfTextAlignment.Center; + // Save the updated document. + doc.Save("Form.pdf"); + doc.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Interactive; + using Syncfusion.Pdf.Parsing; + // Load an existing document. PdfLoadedDocument doc = new PdfLoadedDocument("SourceForm.pdf"); // Load an existing combo box field by its name. @@ -418,8 +455,11 @@ Use the [TextAlignment](https://help.syncfusion.com/cr/document-processing/Syncf {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - - ' Load an existing document. + + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Interactive + + 'Load the PDF document. Dim doc As New PdfLoadedDocument("SourceForm.pdf") ' Load an existing combo box field by its name. Dim comboField As PdfLoadedComboBoxField = TryCast(doc.Form.Fields("EmployeeCombo"), PdfLoadedComboBoxField) @@ -445,6 +485,9 @@ Please refer the below code snippet for adding the radio button in new PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Adding-radio-button-in-new-PDF-document/.NET/Adding-radio-button-in-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -463,16 +506,16 @@ radioButtonItem2.Bounds = new Syncfusion.Drawing.RectangleF(100, 170, 20, 20); employeesRadioList.Items.Add(radioButtonItem1); employeesRadioList.Items.Add(radioButtonItem2); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; //Create a new PDF document. PdfDocument document = new PdfDocument(); @@ -500,8 +543,11 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - -'Create a new PDF document. + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -536,9 +582,12 @@ The below code snippet illustrates how to add the radio button in existing PDF d {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-radio-button-in-existing-PDF-document/.NET/Add-radio-button-in-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -558,10 +607,8 @@ radioButtonItem2.Bounds = new Syncfusion.Drawing.RectangleF(100, 170, 20, 20); employeesRadioList.Items.Add(radioButtonItem1); employeesRadioList.Items.Add(radioButtonItem2); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -569,8 +616,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if(loadedDocument.Form==null) loadedDocument.CreateForm(); @@ -599,8 +650,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create the form if the form does not exist in the loaded document If loadedDocument.Form Is Nothing Then loadedDocument.CreateForm() @@ -640,6 +695,9 @@ You can choose default value for radio button field using [SelectedIndex](https: {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/refs/heads/master/Forms/Default-value-for-radio-button-field/.NET/Default_Value_For_Radio_Button/Program.cs" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Interactive; + // Create a new PDF document PdfDocument document = new PdfDocument(); // Add a new page to the PDF document @@ -672,16 +730,18 @@ You can choose default value for radio button field using [SelectedIndex](https: // Add the radio button list to the form document.Form.Fields.Add(employeesRadioList); - //Save the document into stream. - MemoryStream stream = new MemoryStream(); - document.Save(stream); - //Close the document. - document.Close(true); +//Save the document. +document.Save("Form.pdf"); +//Close the document. +document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} + using Syncfusion.Pdf; + using Syncfusion.Pdf.Interactive; + // Create a new PDF document PdfDocument document = new PdfDocument(); // Add a new page to the PDF document @@ -723,7 +783,10 @@ You can choose default value for radio button field using [SelectedIndex](https: {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - ' Create a new PDF document + Imports Syncfusion.Pdf + Imports Syncfusion.Pdf.Interactive + + 'Load the PDF document. Dim document As New PdfDocument() ' Add a new page to the PDF document Dim page As PdfPage = document.Pages.Add() @@ -777,6 +840,9 @@ Please refer the below code snippet for adding the list box field in new PDF doc {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-listbox-field-in-new-PDF-document/.NET/Add-listbox-field-in-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -797,10 +863,8 @@ listBoxField.MultiSelect = true; //Add the list box into PDF document. document.Form.Fields.Add(listBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -808,6 +872,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -836,8 +903,11 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - -'Create a new PDF document. + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -874,9 +944,12 @@ Please refer the below code snippet for adding the list box field in existing PD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-listbox-field-in-an-existing-PDF-document/.NET/Add-listbox-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -898,10 +971,8 @@ listBoxField.MultiSelect = true; //Add the list box into PDF document. loadedDocument.Form.Fields.Add(listBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -909,8 +980,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if(loadedDocument.Form==null) loadedDocument.CreateForm(); @@ -941,8 +1016,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create the form if the form does not exist in the loaded document. If loadedDocument.Form Is Nothing Then loadedDocument.CreateForm() @@ -986,6 +1065,9 @@ Please refer the below code snippet for adding the check box field in new PDF do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-checkbox-field-in-new-PDF-document/.NET/Add-checkbox-field-in-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -999,10 +1081,8 @@ checkBoxField.Bounds = new Syncfusion.Drawing.RectangleF(0, 20, 10, 10); //Add the form field to the document. document.Form.Fields.Add(checkBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -1010,6 +1090,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -1031,8 +1114,11 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - -'Create a new PDF document. + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -1062,8 +1148,12 @@ Please refer the below code snippet for adding the check box field in existing P {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Adding-checkbox-field-in-an-existing-PDF-document/.NET/Adding-checkbox-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if(loadedDocument.Form==null) loadedDocument.CreateForm(); @@ -1087,35 +1177,41 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) -'Create the form if the form does not exist in the loaded document. -If loadedDocument.Form Is Nothing Then -loadedDocument.CreateForm() -End If -'Load the page. -Dim loadedPage As PdfLoadedPage = TryCast(loadedDocument.Pages(0), PdfLoadedPage) +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; -'Create Check Box field. -Dim checkBoxField As New PdfCheckBoxField(loadedPage, "CheckBox") -'Set check box properties. -checkBoxField.ToolTip = "Check Box" -checkBoxField.Bounds = New RectangleF(0, 20, 10, 10) -'Add the form field to the existing document. -loadedDocument.Form.Fields.Add(checkBoxField) +//Load the existing PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); +//Create the form if the form does not exist in the loaded document. +if(loadedDocument.Form==null) + loadedDocument.CreateForm(); +//Load the page. +PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; -'Save the document. -loadedDocument.Save("Form.pdf") -'close the document. -loadedDocument.Close(True) +//Create Check Box field. +PdfCheckBoxField checkBoxField = new PdfCheckBoxField(loadedPage, "CheckBox"); +//Set check box properties. +checkBoxField.ToolTip = "Check Box"; +checkBoxField.Bounds = new RectangleF(0, 20, 10, 10); +//Add the form field to the existing document. +loadedDocument.Form.Fields.Add(checkBoxField); + +//Save the document. +loadedDocument.Save("Form.pdf"); +//Close the document. +loadedDocument.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -//Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -1130,10 +1226,8 @@ checkBoxField.Bounds = new Syncfusion.Drawing.RectangleF(0, 20, 10, 10); //Add the form field to the existing document. loadedDocument.Form.Fields.Add(checkBoxField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -1153,6 +1247,9 @@ Please refer the below code snippet for adding the signature field in new PDF do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-signature-field-in-a-new-PDF-document/.NET/Add-signature-field-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -1166,10 +1263,8 @@ signatureField.ToolTip = "Signature"; //Add the form field to the document. document.Form.Fields.Add(signatureField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -1177,6 +1272,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -1199,7 +1297,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -1229,9 +1330,12 @@ Please refer the below code snippet for adding the signature field in existing P {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Adding-the-signatre-field-in-existing-PDF-document/.NET/Adding-the-signatre-field-in-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -1246,10 +1350,8 @@ signatureField.ToolTip = "Signature"; //Add the form field to the existing document. loadedDocument.Form.Fields.Add(signatureField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -1257,8 +1359,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if(loadedDocument.Form==null) loadedDocument.CreateForm(); @@ -1282,8 +1388,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create the form if the form does not exist in the loaded document. If loadedDocument.Form Is Nothing Then loadedDocument.CreateForm() @@ -1318,6 +1428,9 @@ The signedDate parameter in the [PdfSignature](https://help.syncfusion.com/cr/do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Digital%20Signature/Customize-the-signed-date/.NET/Customize-the-signed-date/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Creates a new PDF document. PdfDocument document = new PdfDocument(); //Adds a new page. @@ -1327,9 +1440,8 @@ PdfSignature signature = new PdfSignature(page, "Signature", new DateTime(2020, signature.TimeStampServer = new TimeStampServer(new Uri("http://timestamp.digicert.com")); signature.SignedName = "Test"; signature.Bounds = new RectangleF(new PointF(0, 0), new SizeF(200, 100)); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -1337,6 +1449,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Creates a new PDF document. PdfDocument document = new PdfDocument(); //Adds a new page. @@ -1354,8 +1469,11 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - -'Creates a new PDF document. + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Adds a new page. Dim page As PdfPage = document.Pages.Add() @@ -1385,6 +1503,9 @@ The below code illustrates how to add the button field in new PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-the-button-field-in-a-new-PDF-document/.NET/Add-the-button-field-in-a-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -1398,10 +1519,8 @@ buttonField.Text = "Click"; //Add the form field to the document. document.Form.Fields.Add(buttonField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -1409,6 +1528,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -1430,8 +1552,11 @@ document.Close(true); {% endhighlight %} {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} - -'Create a new PDF document. + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -1461,9 +1586,12 @@ Please refer the below code snippet for adding the button field in existing PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Adding-button-field-in-an-existing-PDF-document/.NET/Adding-button-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -1477,10 +1605,8 @@ buttonField.Text = "Click"; //Add the form field to the existing document. loadedDocument.Form.Fields.Add(buttonField); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the PDF document to stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -1488,8 +1614,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Create the form if the form does not exist in the loaded document. if (loadedDocument.Form == null) loadedDocument.CreateForm(); @@ -1510,10 +1640,14 @@ loadedDocument.Close(true); {% endhighlight %} -{% highlight c# tabtitle="C# [Windows-specific]" %} +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing -'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Create the form if the form does not exist in the loaded document. If loadedDocument.Form Is Nothing Then loadedDocument.CreateForm() @@ -1547,6 +1681,9 @@ You can add a complex script language text in PDF AcroForm fields by using the [ {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new PDF page. @@ -1570,16 +1707,18 @@ document.Form.Fields.Add(textField); //Set default appearance as false. document.Form.SetDefaultAppearance(false); -//Save the PDF document. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the PDF document. +//Save the document. +document.Save("Form.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new PDF page. @@ -1611,7 +1750,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new PDF page. Dim page As PdfPage = document.Pages.Add() @@ -1657,6 +1799,9 @@ The following code example illustrates how to add complex script support for all {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new PDF page. @@ -1680,16 +1825,18 @@ document.Form.SetDefaultAppearance(false); //Enable complex script layout for form. document.Form.ComplexScript = true; -//Save the PDF document. -MemoryStream stream = new MemoryStream(); -document.Save(stream); -//Close the PDF document. +//Save the document. +document.Save("Form.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new PDF page. @@ -1721,7 +1868,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new PDF page Dim page As PdfPage = document.Pages.Add() @@ -1758,9 +1909,11 @@ You can also flatten the existing form fields with complex script layout by usin {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Flatten-the-existing-form-fields-with-complex-script/.NET/Flatten-the-existing-form-fields-with-complex-script/Program.cs" %} -//Load the existing PDF document. -FileStream inputFileStream = new FileStream("Form.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputFileStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the existing PDF form. PdfLoadedForm lForm = loadedDocument.Form as PdfLoadedForm; //Set the complex script layout. @@ -1768,10 +1921,8 @@ lForm.ComplexScript = true; //Set flatten. lForm.Flatten = true; -//Create memory stream. -MemoryStream stream = new MemoryStream(); //Save the document. -loadedDocument.Save(stream); +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -1779,6 +1930,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Form.pdf"); //Get the existing PDF form. @@ -1797,7 +1952,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Form.pdf") 'Get the existing PDF form Dim lForm As PdfLoadedForm = TryCast(loadedDocument.Form, PdfLoadedForm) @@ -1835,9 +1994,12 @@ You can fill a text box field using [Text](https://help.syncfusion.com/cr/docume {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Filling-the-textbox-field-in-an-existing-PDF-document/.NET/Filling-the-textbox-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -1845,9 +2007,8 @@ PdfLoadedForm loadedForm = loadedDocument.Form; PdfLoadedTextBoxField loadedTextBoxField = loadedForm.Fields[0] as PdfLoadedTextBoxField; loadedTextBoxField.Text = "First Name"; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -1855,8 +2016,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -1873,8 +2038,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -1901,9 +2070,12 @@ You can fill a combo box field using [SelectedValue](https://help.syncfusion.com {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Fill-the-combobox-field-in-an-existing-PDF-document/.NET/Fill-the-combobox-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -1912,9 +2084,8 @@ PdfLoadedComboBoxField loadedComboboxField = loadedForm.Fields[1] as PdfLoadedCo //Select the item. loadedComboboxField.SelectedIndex = 1; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -1922,8 +2093,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -1941,8 +2116,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -1970,9 +2149,12 @@ You can fill a radio button field using [SelectedValue](https://help.syncfusion. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Fill-radio-button-field-in-an-existing-PDF-document/.NET/Fill-radio-button-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -1981,9 +2163,8 @@ PdfLoadedRadioButtonListField loadedRadioButtonField = loadedForm.Fields[3] as P //Select the item. loadedRadioButtonField.SelectedIndex = 1; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -1991,8 +2172,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2010,8 +2195,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -2039,9 +2228,12 @@ The below code snippet illustrates how to fill the list box field in an existing {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Fill-list-box-field-in-an-existing-PDF-document/.NET/Fill-list-box-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2050,9 +2242,8 @@ PdfLoadedListBoxField loadedListBox = loadedForm.Fields[2] as PdfLoadedListBoxFi //Fill list box and Modify the list box select index. loadedListBox.SelectedIndex = new int[2] { 1, 2 }; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -2060,8 +2251,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2079,8 +2274,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -2108,9 +2307,12 @@ You can fill a check box field by enabling [Checked](https://help.syncfusion.com {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Fill-the-checkbox-field-in-an-existing-PDF-document/.NET/Fill-the-checkbox-field-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2121,9 +2323,8 @@ loadedCheckBoxField.Items[0].Checked = true; //Check the checkbox if it is not grouped. loadedCheckBoxField.Checked = true; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -2131,8 +2332,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2152,8 +2357,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -2183,9 +2392,12 @@ The below code snippet illustrates how to fill the signature field with certific {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Fill-the-signature-field-in-an-existing-PDF/.NET/Fill-the-signature-field-in-an-existing-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2199,9 +2411,8 @@ loadedSignatureField.Signature = new PdfSignature(); loadedSignatureField.Signature.Certificate = certificate; loadedSignatureField.Signature.Reason = "Reason"; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -2209,8 +2420,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2232,8 +2447,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") Dim loadedPage As PdfLoadedPage = TryCast(loadedDocument.Pages(0), PdfLoadedPage) 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -2269,9 +2488,12 @@ The following code snippet illustrates how to fill XFA forms via Acroform API. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Fill-the-XFA-forms-fields-via-acroform-API/.NET/Fill-the-XFA-forms-fields-via-acroform-API/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the existing Acroform. PdfLoadedForm acroform = loadedDocument.Form; //Enable XFA form filling. @@ -2285,10 +2507,8 @@ PdfLoadedTextBoxField lastName = acroform.Fields["LastName"] as PdfLoadedTextBox //Set text. lastName.Text = "Bistro"; -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Form.pdf"); //Close the document. loadedDocument.Close(true); @@ -2296,6 +2516,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the existing XFA PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Form.pdf"); //Get the existing Acroform. @@ -2320,7 +2544,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the existing XFA PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Form.pdf") 'Get the existing Acroform. Dim acroform As PdfLoadedForm = loadedDocument.Form @@ -2356,9 +2584,12 @@ The following code example illustrates this. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Enumarate-form-fields-in-a-PDF-document/.NET/Enumarate-form-fields-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument document = new PdfLoadedDocument(docStream); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm form = document.Form; @@ -2373,9 +2604,8 @@ for (int i = 0; i < fields.Count; i++) } } -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -2383,8 +2613,12 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument document = new PdfLoadedDocument(fileName); +PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm form = document.Form; @@ -2407,8 +2641,12 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim document As New PdfLoadedDocument(fileName) +Dim document As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim form As PdfLoadedForm = document.Form @@ -2445,6 +2683,9 @@ By default, the value is set to true. This is illustrated in the following code {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Auto-naming-of-form-fields-in-a-PDF-document/.NET/Auto-naming-of-form-fields-in-a-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -2469,10 +2710,8 @@ textBoxField1.Text = "Doe"; //Add form field to the document. document.Form.Fields.Add(textBoxField1); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -2480,6 +2719,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -2513,7 +2755,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to the PDF document Dim page As PdfPage = document.Pages.Add() @@ -2563,9 +2809,12 @@ The following code snippet explains how to modify an existing form field in a PD {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Modify-the-existing-form-field-in-PDF-document/.NET/Modify-the-existing-form-field-in-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2577,9 +2826,8 @@ loadedTextBoxField.SpellCheck = true; loadedTextBoxField.Text = "New text of the field."; loadedTextBoxField.Password = false; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -2587,8 +2835,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2609,8 +2861,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -2643,9 +2899,12 @@ Please refer to the code example below to set the check box item. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Export_checkbox_values/.NET/Export_checkbox_values/Program.cs" %} -//Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2657,17 +2916,19 @@ PdfLoadedCheckBoxItem pdfLoadedCheckBoxItem = loadedCheckBoxField.Items[0] as Pd //Set the Export value pdfLoadedCheckBoxItem.ExportValue = "123"; -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document. +document.Save("Output.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -2692,6 +2953,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") @@ -2724,9 +2989,12 @@ You can retrieve/modify the fore and background color of existing form fields in {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Modifying-fore-and-backcolor-of-existing-form-fields/.NET/Modifying-fore-and-backcolor-of-existing-form-fields/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2741,9 +3009,8 @@ PdfColor backColor = loadedTextBoxField.BackColor; //Set the background color. loadedTextBoxField.BackColor = new PdfColor(Color.Green); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -2751,8 +3018,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -2774,10 +3045,14 @@ loadedDocument.Close(true); {% endhighlight %} -{% highlight c# tabtitle="C# [Windows-specific]" %} +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form Dim loadedForm As PdfLoadedForm = loadedDocument.Form @@ -2813,9 +3088,12 @@ The following code example illustrates how to get option values from acroform ra {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Get-option-value-from-acroform-radio-button/.NET/Get-option-value-from-acroform-radio-button/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument doc = new PdfLoadedDocument(docStream); +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Gets the loaded form. PdfLoadedForm form = doc.Form; //Set default appearance to false. @@ -2833,9 +3111,8 @@ foreach (PdfLoadedRadioButtonItem item in radioButtonField.Items) } } -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -doc.Save(stream); +//Save the document. +doc.Save("Output.pdf"); //Close the document. doc.Close(true); @@ -2843,6 +3120,10 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing document. PdfLoadedDocument doc = new PdfLoadedDocument("SourceForm.pdf"); //Gets the loaded form. @@ -2870,7 +3151,11 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load an existing document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim doc As New PdfLoadedDocument("SourceForm.pdf") 'Gets the loaded form. Dim form As PdfLoadedForm = doc.Form @@ -2907,9 +3192,12 @@ The following code snippet demonstrates how to retrieving an existing widget ann {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Loop through each page in the loaded PDF document. foreach (PdfLoadedPage page in loadedDocument.Pages) { @@ -2942,6 +3230,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Loop through each page in the loaded PDF document. @@ -2976,7 +3268,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Load the PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") ' Loop through each page in the loaded PDF document. @@ -3020,9 +3316,12 @@ Refer to the code snippet below to retrieve a custom value from a form field usi {% highlight c# tabtitle="C# [Cross-platform]" %} -// Load the PDF document using a file stream -FileStream docStream = new FileStream(@"Input.pdf", FileMode.Open, FileAccess.Read); - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page of the document PdfField field = loadedDocument.Form.Fields[0] as PdfField; @@ -3051,7 +3350,11 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} -// Load the PDF document using a file stream +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + +// Load the PDF document PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Gets the first page of the document @@ -3082,7 +3385,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Load the PDF document +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") ' Get the first form field from the document @@ -3121,9 +3428,12 @@ The below code snippet explains how to get the field from collection using [TryG {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Get-the-field-from-collection-using-TryGetField/.NET/Get-the-field-from-collection-using-TryGetField/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument doc = new PdfLoadedDocument(docStream); +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Load the form from the loaded document. PdfLoadedForm form = doc.Form; @@ -3136,9 +3446,8 @@ if (fieldCollection.TryGetField("f1-1", out loadedField)) (loadedField as PdfLoadedTextBoxField).Text = "1"; } -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -doc.Save(stream); +//Save the document. +doc.Save("Output.pdf"); //Close the document. doc.Close(true); @@ -3146,8 +3455,12 @@ doc.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the document. -PdfLoadedDocument doc = new PdfLoadedDocument(fileName); +PdfLoadedDocument doc = new PdfLoadedDocument("Input.pdf"); //Load the form from the loaded document. PdfLoadedForm form = doc.Form; @@ -3168,8 +3481,12 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the form from the loaded document. Dim form As PdfLoadedForm = loadedDocument.Form @@ -3201,9 +3518,12 @@ Please refer the below code snippet to get the field value from collection using {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Get-the-field-from-collection-using-TryGetValue/.NET/Get-the-field-from-collection-using-TryGetValue/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the form from the loaded document. PdfLoadedForm form = loadedDocument.Form; @@ -3213,9 +3533,8 @@ string fieldValue = string.Empty; //Get the field value using TryGetValue Method. fieldCollection.TryGetValue("FirstName", out fieldValue); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -3223,8 +3542,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(filename); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the form from the loaded document. PdfLoadedForm form = loadedDocument.Form; @@ -3242,8 +3565,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load the document. -Dim loadedDocument As New PdfLoadedDocument(filename) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the form from the loaded document. Dim form As PdfLoadedForm = loadedDocument.Form @@ -3273,11 +3600,12 @@ The below code illustrates get the pages of a form fields. {% highlight c# tabtitle="C# [Cross-platform]" %} -// Use the 'using' statement to automatically dispose of the FileStream when done. -using (FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read)) -{ + using Syncfusion.Pdf; + using Syncfusion.Pdf.Interactive; + using Syncfusion.Pdf.Parsing; + // Load the PDF document from the stream. - PdfLoadedDocument document = new PdfLoadedDocument(docStream); + PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); // Get all the form fields in the PDF. PdfLoadedForm loadedForm = document.Form; @@ -3306,12 +3634,15 @@ using (FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAcc // Close the PDF document. document.Close(true); -} {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + // Load the PDF document. PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf"); @@ -3347,7 +3678,11 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Load the PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim document As New PdfLoadedDocument("Input.pdf") ' Get all the form fields in the PDF. @@ -3389,9 +3724,12 @@ The below code illustrates how to remove the form fields from the existing PDF d {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Remove-the-form-fields-form-the-existing-PDF-document/.NET/Remove-the-form-fields-form-the-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page. PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Get the loaded form. @@ -3403,9 +3741,8 @@ loadedForm.Fields.Remove(loadedTextBoxField); //Remove the field at index 0. loadedForm.Fields.RemoveAt(0); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -3413,8 +3750,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C#" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the page. PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; //Get the loaded form. @@ -3433,10 +3774,14 @@ loadedDocument.Close(true); {% endhighlight %} -{% highlight vb.net tabtitle="VB.NET" %} +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing -'Load the PDF document -Dim loadedDocument As New PdfLoadedDocument(fileName) +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the page Dim loadedPage As PdfLoadedPage = TryCast(loadedDocument.Pages(0), PdfLoadedPage) 'Get the loaded form @@ -3469,6 +3814,9 @@ Please refer the sample for flattening the form fields in new PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Removing-editing-capability-of-form-fields/.NET/Removing-editing-capability-of-form-fields/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -3483,9 +3831,8 @@ document.Form.Flatten = true; //Add the form field to the document. document.Form.Fields.Add(textBoxField); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -3493,6 +3840,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -3516,7 +3866,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -3547,9 +3900,12 @@ Please refer the sample for flattening the form fields in existing PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Flattening-form-fields-in-an-existing-PDF-document/.NET/Flattening-form-fields-in-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; PdfLoadedFormFieldCollection fields = loadedForm.Fields; @@ -3559,9 +3915,8 @@ loadedTextBoxField.Text = "Text"; //Flatten the whole form. loadedForm.Flatten = true; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -3569,8 +3924,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm = loadedDocument.Form; PdfLoadedFormFieldCollection fields = loadedForm.Fields; @@ -3588,8 +3947,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form Dim fields As PdfLoadedFormFieldCollection = loadedForm.Fields @@ -3619,18 +3982,19 @@ Please refer the code sample to flatten the form fields before saving the PDF do {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Flattening-form-fields-in-an-existing-PDF-document/.NET/Flattening-form-fields-in-an-existing-PDF-document/Program.cs" %} -//Load an existing PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; //Flatten the form fields. loadedForm.FlattenFields(); -//Create memory stream. -MemoryStream stream = new MemoryStream(); -//Save the document into stream. -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("Output.pdf"); //Close the document. loadedDocument.Close(true); @@ -3638,6 +4002,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load a PDF document. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf"); //Get the loaded form. @@ -3654,6 +4022,10 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. @@ -3681,6 +4053,9 @@ The below code snippet illustrates how to set the [ReadOnly](https://help.syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Set-readonly-property-to-a-new-PDF-document/.NET/Set-readonly-property-to-a-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -3698,9 +4073,8 @@ textBoxField.Text = "john"; //Add the form field to the document. document.Form.Fields.Add(textBoxField); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -3708,6 +4082,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -3734,7 +4111,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -3768,17 +4148,19 @@ The below code snippet illustrates how to set the [ReadOnly](https://help.syncfu {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Set-the-ReadOnly-property-to-an-existing-PDF-document/.NET/Set-the-ReadOnly-property-to-an-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; //Set the form as read only. loadedForm.ReadOnly = true; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -3786,8 +4168,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; //Set the form as read only. @@ -3802,8 +4188,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form 'Set the form as read only. @@ -3833,17 +4223,18 @@ The below code illustrates how to import FDF file to PDF. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Importing-FDF-file-to-PDF-document/.NET/Importing-FDF-file-to-PDF-document/Program.cs" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get stream from an existing PDF document. FileStream fdfStream = new FileStream("ImportFDF.fdf", FileMode.Open, FileAccess.Read); //Import the FDF stream. loadedDocument.Form.ImportDataFDF(fdfStream, true); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -3851,8 +4242,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load the existing form. PdfLoadedForm loadedForm = loadedDocument.Form; //Load the FDF file. @@ -3866,8 +4261,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load an existing document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load the existing form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form 'Load the FDF file. @@ -3894,10 +4293,12 @@ The below code illustrates how to export FDF file from PDF document. {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Export-FDF-file-from-PDF-document/.NET/Export-FDF-file-from-PDF-document/Program.cs" %} -//Get stream from an existing PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -//Load the PDF document from stream. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + +//Load the PDF document. +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load an existing form. PdfLoadedForm loadedForm = loadedDocument.Form; //Load the FDF file. @@ -3911,8 +4312,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C#" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Load an existing form. PdfLoadedForm loadedForm = loadedDocument.Form; //Export the existing PDF document to FDF file. @@ -3922,10 +4327,14 @@ loadedDocument.Close(true); {% endhighlight %} -{% highlight vb.net tabtitle="VB.NET" %} +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} + +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing -'Load an existing document -Dim loadedDocument As New PdfLoadedDocument(fileName) +'Load the PDF document. +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Load an existing form Dim loadedForm As PdfLoadedForm = loadedDocument.Form 'Export the existing PDF document to FDF file @@ -3947,6 +4356,9 @@ You can set the export value of the check box field in PDF forms using [PdfCheck {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -3985,17 +4397,18 @@ checkBoxField2.BackColor = Color.YellowGreen; // Add to form form.Fields.Add(checkBoxField2); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document. +document.Save("Output.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -4043,7 +4456,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Create a new PDF document +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to the PDF document Dim page As PdfPage = document.Pages.Add() @@ -4102,6 +4518,9 @@ The following code example illustrates how to enable or disable unison functiona {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -4136,17 +4555,18 @@ reportFrequencyRadioList.Items.Add(monthlyItem); // Add the radio button list field to the document's form fields document.Form.Fields.Add(reportFrequencyRadioList); -//Save the document into stream -MemoryStream stream = new MemoryStream(); -document.Save(stream); -stream.Position = 0; -//Closes the document +//Save the document. +document.Save("Output.pdf"); +//Close the document. document.Close(true); {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document PdfDocument document = new PdfDocument(); //Add a new page to the PDF document. @@ -4190,7 +4610,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Create a new PDF document +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to the PDF document Dim page As PdfPage = document.Pages.Add() @@ -4273,9 +4696,12 @@ The following code snippet explains how to set appearance to the PDF form fields {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Set-appearance-to-the-PDF-form-fields/.NET/Set-appearance-to-the-PDF-form-fields/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; //Set the default appearance. @@ -4285,9 +4711,8 @@ loadedForm.SetDefaultAppearance(false); PdfLoadedTextBoxField loadedTextBoxField = loadedForm.Fields[0] as PdfLoadedTextBoxField; loadedTextBoxField.Text ="text"; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -4295,8 +4720,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; //Set the default appearance. @@ -4315,8 +4744,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form 'Set the default appearance. @@ -4371,6 +4804,9 @@ The following code snippet explains how to set the visibility of form fields in {% highlight c# tabtitle="C# [Cross-platform]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Creates a new page of the document. @@ -4387,10 +4823,8 @@ firstNameTextBox.Visibility = PdfFormFieldVisibility.Visible; page.Graphics.DrawString("First Name", font, PdfBrushes.Black, 10, 55); //Add the textbox in document. document.Form.Fields.Add(firstNameTextBox); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -4398,6 +4832,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Creates a new page of the document. @@ -4414,10 +4851,8 @@ firstNameTextBox.Visibility = PdfFormFieldVisibility.Visible; page.Graphics.DrawString("First Name", font, PdfBrushes.Black, 10, 55); //Add the textbox in document. document.Form.Fields.Add(firstNameTextBox); -//Creating the stream object. -MemoryStream stream = new MemoryStream(); -//Save the document as stream. -document.Save(stream); +//Save the document. +document.Save("Output.pdf"); //Close the document. document.Close(true); @@ -4425,7 +4860,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Creates a new page and adds it as the last page of the document. Dim page As PdfPage = document.Pages.Add() @@ -4441,10 +4879,9 @@ firstNameTextBox.Visibility = PdfFormFieldVisibility.Visible page.Graphics.DrawString("First Name", font, PdfBrushes.Black, 10, 55) 'Add the textbox in document. document.Form.Fields.Add(firstNameTextBox) -'Creating the stream object. -Dim stream As New MemoryStream() -'Save the document as stream. -document.Save(stream) + +'Save the document. +document.Save("Output.pdf") 'Close the document. document.Close(True) @@ -4464,11 +4901,12 @@ The following code example demonstrates how to modify these indicator colors pro {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Customize-indicator-colors/.NET/Customize-indicator-colors/Program.cs" %} -// Open the input PDF file stream. -using (FileStream fileStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read)) -{ + using Syncfusion.Pdf; + using Syncfusion.Pdf.Interactive; + using Syncfusion.Pdf.Parsing; + // Load the PDF document from the input stream. - PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileStream); + PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); // Access the existing form fields in the PDF. PdfLoadedForm form = loadedDocument.Form; @@ -4492,20 +4930,20 @@ using (FileStream fileStream = new FileStream("Input.pdf", FileMode.Open, FileAc } // Disable the default appearance to allow custom rendering of form fields. form.SetDefaultAppearance(false); - // Create the output file stream. - using (FileStream outputFileStream = new FileStream("Output.pdf", FileMode.Create, FileAccess.ReadWrite)) - { - // Save the modified PDF document to the new file stream. - loadedDocument.Save(outputFileStream); - } + + // Save the modified PDF document + loadedDocument.Save("Output.pdf"); // Close the PDF document. loadedDocument.Close(true); -} {% endhighlight %} {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + // Load the PDF document from the input PDF file. PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); @@ -4541,7 +4979,11 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -' Load the PDF document from the input PDF file. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim loadedDocument As New PdfLoadedDocument("Input.pdf") ' Access the form fields in the loaded PDF document. @@ -4585,9 +5027,12 @@ The following code illustrates how to set [AutoResizeText](https://help.syncfusi {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Auto-resize-the-text-of-textboxfield-in-a-PDF/.NET/Auto-resize-the-text-of-textboxfield-in-a-PDF/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -4598,9 +5043,8 @@ loadedField.AutoResizeText = true; //Flatten the form. form.Flatten = true; -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -4608,6 +5052,10 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load an existing document. PdfLoadedDocument doc = new PdfLoadedDocument("SourceForm.pdf"); //Read the text box field. @@ -4629,7 +5077,11 @@ doc.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Load an existing document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + +'Load the PDF document. Dim doc As PdfLoadedDocument = New PdfLoadedDocument("SourceForm.pdf") Dim form As PdfLoadedForm = doc.Form @@ -4663,6 +5115,9 @@ The below code illustrates how to enable the default appearance in new PDF docum {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Enable-default-appearance-in-new-PDF-document/.NET/Enable-default-appearance-in-new-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -4677,9 +5132,8 @@ document.Form.Fields.Add(textBoxField); //Enable the default Appearance. document.Form.SetDefaultAppearance(false); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -document.Save(stream); +//Save the document. +document.Save("Form.pdf"); //Close the document. document.Close(true); @@ -4687,6 +5141,9 @@ document.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; + //Create a new PDF document. PdfDocument document = new PdfDocument(); //Add a new page to PDF document. @@ -4710,7 +5167,10 @@ document.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} -'Create a new PDF document. +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive + +'Load the PDF document. Dim document As New PdfDocument() 'Add a new page to PDF document. Dim page As PdfPage = document.Pages.Add() @@ -4741,9 +5201,12 @@ The below code illustrates how to enable the default appearance in existing PDF {% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Enable-default-appearance-in-existing-PDF-document/.NET/Enable-default-appearance-in-existing-PDF-document/Program.cs" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -FileStream docStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -4753,9 +5216,8 @@ loadedTextBoxField.Text = "First Name"; //Enable the default Appearance. loadedDocument.Form.SetDefaultAppearance(false); -//Save the document into stream. -MemoryStream stream = new MemoryStream(); -loadedDocument.Save(stream); +//Save the document. +loadedDocument.Save("flatten.pdf"); //Close the document. loadedDocument.Close(true); @@ -4763,8 +5225,12 @@ loadedDocument.Close(true); {% highlight c# tabtitle="C# [Windows-specific]" %} +using Syncfusion.Pdf; +using Syncfusion.Pdf.Interactive; +using Syncfusion.Pdf.Parsing; + //Load the PDF document. -PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName); +PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"); //Get the loaded form. PdfLoadedForm loadedForm = loadedDocument.Form; @@ -4783,8 +5249,12 @@ loadedDocument.Close(true); {% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Imports Syncfusion.Pdf +Imports Syncfusion.Pdf.Interactive +Imports Syncfusion.Pdf.Parsing + 'Load the PDF document. -Dim loadedDocument As New PdfLoadedDocument(fileName) +Dim loadedDocument As New PdfLoadedDocument("Input.pdf") 'Get the loaded form. Dim loadedForm As PdfLoadedForm = loadedDocument.Form From 2a44f3ec6f2b484842c12d81f29732f36440b7d7 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Fri, 10 Oct 2025 18:51:47 +0530 Subject: [PATCH 22/22] 985863-1: Resolved CI failures. --- .../PDF/PDF-Library/NET/Working-with-Tagged-PDF.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md index 675548a73..8959a48b1 100644 --- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md +++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Tagged-PDF.md @@ -1517,7 +1517,7 @@ using Syncfusion.Pdf.Graphics; //Create a new PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); -//Set Pdf File version 2.0 +//Set PDF File version 2.0 document.FileStructure.Version = PdfVersion.Version2_0; //Set true to auto tag all elements in document @@ -1564,7 +1564,7 @@ using Syncfusion.Pdf.Graphics; //Create a new PDF document PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4); -//Set Pdf File version 2.0 +//Set PDF File version 2.0 document.FileStructure.Version = PdfVersion.Version2_0; //Set true to auto tag all elements in document @@ -1611,7 +1611,7 @@ Imports Syncfusion.Pdf.Graphics 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument(PdfConformanceLevel.Pdf_A4) -'Set Pdf File version 2.0 +'Set PDF File version 2.0 doc.FileStructure.Version = PdfVersion.Version2_0 'Set true to auto tag all elements in document @@ -1670,7 +1670,7 @@ using Syncfusion.Pdf.Graphics; //Create a new PDF document PdfDocument document = new PdfDocument(); -//Set Pdf File version 2.0 +//Set PDF File version 2.0 document.FileStructure.Version = PdfVersion.Version2_0; //Set true to auto tag all elements in document @@ -1715,7 +1715,7 @@ using Syncfusion.Pdf.Graphics; //Create a new PDF document PdfDocument document = new PdfDocument(); -//Set Pdf File version 2.0 +//Set PDF File version 2.0 document.FileStructure.Version = PdfVersion.Version2_0; //Set true to auto tag all elements in document @@ -1760,7 +1760,7 @@ Imports Syncfusion.Pdf.Graphics 'Creates new PDF document Dim doc As PdfDocument = New PdfDocument() -'Set Pdf File version 2.0 +'Set PDF File version 2.0 doc.FileStructure.Version = PdfVersion.Version2_0 'Set true to auto tag all elements in document