Working with Metadata (XMP)

Metadata is a data that describes the characteristics or properties of a document.

Metadata includes document information properties such as author, modification date, and copyright status.

Working with the XMP metadata

In order to work multiple applications effectively with metadata, there must be a common standard that they understand. XMP-the Extensible Metadata Platform is designed to provide such a standard.

XMP standardizes the definition, creation, and processing of metadata.

Adding XMP metadata in a PDF document

You can add XMP metadata in a PDF document using XmpMetadata class as shown in the code snippet below.

//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Create a page

PdfPage page = pdfDoc.Pages.Add();

// Get XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

basic.Nickname = "nickname";

basic.Rating.Add(-25);

//save the document

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create a PDF document

Dim pdfDoc As New PdfDocument()

'Create a page

Dim page As PdfPage = pdfDoc.Pages.Add()

' Get XMP object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

' XMP Basic Schema.

Dim basic As BasicSchema = metaData.BasicSchema

'set the basic details of the document

basic.Advisory.Add("advisory")

basic.BaseURL = New Uri("http://google.com")

basic.CreateDate = DateTime.Now

basic.CreatorTool = "creator tool"

basic.Identifier.Add("identifier")

basic.Label = "label"

basic.MetadataDate = DateTime.Now

basic.ModifyDate = DateTime.Now

basic.Nickname = "nickname"

basic.Rating.Add(-25)

'save the document

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Create a page

PdfPage page = pdfDoc.Pages.Add();

// Get XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

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.Close(true);

//Defining the ContentType 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);
//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Create a page

PdfPage page = pdfDoc.Pages.Add();

// Get XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

basic.Nickname = "nickname";

basic.Rating.Add(-25);

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Adding XMP metadata in an existing PDF document

You can add metadata in an existing PDF document using XmpMetadata class, as follows.

//Load the document

PdfLoadedDocument pdfDoc = new PdfLoadedDocument("input.pdf");

// Get XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

basic.Nickname = "nickname";

basic.Rating.Add(-25);

//save the document

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Load the document

Dim pdfDoc As New PdfLoadedDocument("input.pdf")

' Get metaData object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

' XMP Basic Schema.

Dim basic As BasicSchema = metaData.BasicSchema

'set the basic details of the document

basic.Advisory.Add("advisory")

basic.BaseURL = New Uri("http://google.com")

basic.CreateDate = DateTime.Now

basic.CreatorTool = "creator tool"

basic.Identifier.Add("identifier")

basic.Label = "label"

basic.MetadataDate = DateTime.Now

basic.ModifyDate = DateTime.Now

basic.Nickname = "nickname"

basic.Rating.Add(-25)

'save the document

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Load the PDF document

FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read);

PdfLoadedDocument pdfDoc = new PdfLoadedDocument(docStream);

// Get XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

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.Close(true);

//Defining the ContentType 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);
//Load the file as stream

Stream docStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("Sample.Assets.Input.pdf");

PdfLoadedDocument pdfDoc = new PdfLoadedDocument(docStream);

// Get XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

basic.Nickname = "nickname";

basic.Rating.Add(-25);

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Supported Schema types

XMP is provided with the following schemas:

  • Basic Schema
  • Dublin Core Schema
  • Rights Management Schema
  • Basic Job Ticket Schema
  • Paged-Text Schema
  • PDF Schema

Basic Schema

Basic Schema contains properties that provide basic descriptive information such as,

  • Base URL
  • Creation date
  • Creator tool
  • Label
  • Modified date.
  • Meta data date
  • Nickname
  • Rating

BasicSchema class is used to create the basic schema properties.

Refer the following code sample to create XMP basic schema.

//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Create a page

PdfPage page = pdfDoc.Pages.Add();

// Get metaData object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

basic.Nickname = "nickname";

basic.Rating.Add(-25);

//save the document

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create a PDF document

Dim pdfDoc As New PdfDocument()

'Create a page

Dim page As PdfPage = pdfDoc.Pages.Add()

' Get metaData object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

' XMP Basic Schema.

Dim basic As BasicSchema = metaData.BasicSchema

'set the basic details of the document

basic.Advisory.Add("advisory")

basic.BaseURL = New Uri("http://google.com")

basic.CreateDate = DateTime.Now

basic.CreatorTool = "creator tool"

basic.Identifier.Add("identifier")

basic.Label = "label"

basic.MetadataDate = DateTime.Now

basic.ModifyDate = DateTime.Now

basic.Nickname = "nickname"

basic.Rating.Add(-25)

'save the document

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Create a page

PdfPage page = pdfDoc.Pages.Add();

// Get metaData object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

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.Close(true);

//Defining the ContentType 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);
//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Create a page

PdfPage page = pdfDoc.Pages.Add();

// Get metaData object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Basic Schema.

BasicSchema basic = metaData.BasicSchema;

//set the basic details of the document

basic.Advisory.Add("advisory");

basic.BaseURL = new Uri("http://google.com");

basic.CreateDate = DateTime.Now;

basic.CreatorTool = "creator tool";

basic.Identifier.Add("identifier");

basic.Label = "label";

basic.MetadataDate = DateTime.Now;

basic.ModifyDate = DateTime.Now;

basic.Nickname = "nickname";

basic.Rating.Add(-25);

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Dublin Core Schema

The Dublin Core schema provides a set of commonly used properties such as,

  • Contributor
  • Coverage
  • Creator
  • Date
  • Description
  • Format
  • Language
  • Publisher
  • Title

DublinCoreSchema class is used to create the Dublin core schema properties.

//Create new PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Dublin core Schema.

DublinCoreSchema dublin = metaData.DublinCoreSchema;

//Set the Dublin Core Schema details of the document.

dublin.Creator.Add("Syncfusion");

dublin.Description.Add("Title", "Essential PDF creator");

dublin.Title.Add("Resource name", "Documentation");

dublin.Type.Add("PDF");

dublin.Publisher.Add("Essential PDF");

//Saves the document.

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create new PDF document

Dim pdfDoc As New PdfDocument()

Dim page As PdfPage = pdfDoc.Pages.Add()

'Gets XMP object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

'XMP Dublin core Schema.

Dim dublin As DublinCoreSchema = metaData.DublinCoreSchema

'Set the Dublin Core Schema details of the document.

dublin.Creator.Add("Syncfusion")

dublin.Description.Add("Title", "Essential PDF creator")

dublin.Title.Add("Resource name", "Documentation")

dublin.Type.Add("PDF")

dublin.Publisher.Add("Essential PDF")

'Saves the document.

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create new PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Dublin core Schema.

DublinCoreSchema dublin = metaData.DublinCoreSchema;

//Set the Dublin Core Schema details of the document.

dublin.Creator.Add("Syncfusion");

dublin.Description.Add("Title", "Essential PDF creator");

dublin.Title.Add("Resource name", "Documentation");

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.Close(true);

//Defining the ContentType 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);
//Create new PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Dublin core Schema.

DublinCoreSchema dublin = metaData.DublinCoreSchema;

//Set the Dublin Core Schema details of the document.

dublin.Creator.Add("Syncfusion");

dublin.Description.Add("Title", "Essential PDF creator");

dublin.Title.Add("Resource name", "Documentation");

dublin.Type.Add("PDF");

dublin.Publisher.Add("Essential PDF");

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Rights Management Schema

This schema includes properties related to rights management. These properties provide information regarding the legal restrictions associated with a resource.

  • Certificate
  • Marked
  • Owner
  • UsageTerm
  • WebStatement

RightsManagementSchema class is used to create the Rights management schema properties.

//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Rights Management Schema.

RightsManagementSchema rights = metaData.RightsManagementSchema;

//Set the Rights Management Schema details of the document.

rights.Certificate = new Uri("http://syncfusion.com");

rights.Owner.Add("Syncfusion");

rights.Marked = true;

//Save and close the document.

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create PDF document

Dim pdfDoc As New PdfDocument()

Dim page As PdfPage = pdfDoc.Pages.Add()

'Gets XMP object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

'XMP Rights Management Schema.

Dim rights As RightsManagementSchema = metaData.RightsManagementSchema

'Set the Rights Management Schema details of the document.

rights.Certificate = New Uri("http://syncfusion.com")

rights.Owner.Add("Syncfusion")

rights.Marked = True

'Save and close the document.

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Rights Management Schema.

RightsManagementSchema rights = metaData.RightsManagementSchema;

//Set the Rights Management Schema details of the document.

rights.Certificate = new Uri("http://syncfusion.com");

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.Close(true);

//Defining the ContentType 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);
//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Rights Management Schema.

RightsManagementSchema rights = metaData.RightsManagementSchema;

//Set the Rights Management Schema details of the document.

rights.Certificate = new Uri("http://syncfusion.com");

rights.Owner.Add("Syncfusion");

rights.Marked = true;

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Basic Job Ticket Schema

This schema describes very simple workflow or job information and BasicJobTicketSchema class is used for creation.

  • JobRef
//Create a document

PdfDocument pdfDoc = new PdfDocument();

//Add a page

PdfPage page = pdfDoc.Pages.Add();

// Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Rights Management Schema.

BasicJobTicketSchema basicJob = metaData.BasicJobTicketSchema;

//Set the Rights Management Schema details of the document.

basicJob.JobRef.Add("PDF document creation");

//Save the document.

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create a document

Dim pdfDoc As New PdfDocument()

'Add a page

Dim page As PdfPage = pdfDoc.Pages.Add()

' Gets XMP object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

' XMP Rights Management Schema.

Dim basicJob As BasicJobTicketSchema = metaData.BasicJobTicketSchema

'Set the Rights Management Schema details of the document.

basicJob.JobRef.Add("PDF document creation")

'Save the document.

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create a document

PdfDocument pdfDoc = new PdfDocument();

//Add a page

PdfPage page = pdfDoc.Pages.Add();

// Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Rights Management Schema.

BasicJobTicketSchema basicJob = metaData.BasicJobTicketSchema;

//Set the Rights Management Schema details of the document.

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.Close(true);

//Defining the ContentType 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);
//Create a document

PdfDocument pdfDoc = new PdfDocument();

//Add a page

PdfPage page = pdfDoc.Pages.Add();

// Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

// XMP Rights Management Schema.

BasicJobTicketSchema basicJob = metaData.BasicJobTicketSchema;

//Set the Rights Management Schema details of the document.

basicJob.JobRef.Add("PDF document creation");

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Paged-Text Schema

The Paged-Text schema is used for text appearance on page in a document.

  • MaxPageSize
  • NPages
  • Colorants
  • PlateNames

PagedTextSchema class is used for creating Paged-Text schema properties.

//Create a Pdf document

PdfDocument pdfDoc = new PdfDocument();

//Create a Page

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Page text Schema.

PagedTextSchema pagedText = metaData.PagedTextSchema;

//Sets the Page text Schema details of the document.

pagedText.MaxPageSize.Width = 500;

pagedText.MaxPageSize.Height = 750;

pagedText.NPages = 1;

pagedText.PlateNames.Add("Sample page");

//Saves the document.

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create a Pdf document

Dim pdfDoc As New PdfDocument()

'Create a Page

Dim page As PdfPage = pdfDoc.Pages.Add()

'Gets XMP object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

'XMP Page text Schema.

Dim pagedText As PagedTextSchema = metaData.PagedTextSchema

'Sets the Page text Schema details of the document.

pagedText.MaxPageSize.Width = 500

pagedText.MaxPageSize.Height = 750

pagedText.NPages = 1

pagedText.PlateNames.Add("Sample page")

'Saves the document.

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create a Pdf document

PdfDocument pdfDoc = new PdfDocument();

//Create a Page

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Page text Schema.

PagedTextSchema pagedText = metaData.PagedTextSchema;

//Sets the Page text Schema details of the document.

pagedText.MaxPageSize.Width = 500;

pagedText.MaxPageSize.Height = 750;

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.Close(true);

//Defining the ContentType 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);
//Create a Pdf document

PdfDocument pdfDoc = new PdfDocument();

//Create a Page

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP Page text Schema.

PagedTextSchema pagedText = metaData.PagedTextSchema;

//Sets the Page text Schema details of the document.

pagedText.MaxPageSize.Width = 500;

pagedText.MaxPageSize.Height = 750;

pagedText.NPages = 1;

pagedText.PlateNames.Add("Sample page");

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

PDF schema

This schema specifies properties used with Adobe PDF documents.

PDFSchema class is used to create the PDF Schema. It has the following set of properties.

//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Add a page

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP PDF Schema.

PDFSchema pdfSchema = metaData.PDFSchema;

//Set the PDF Schema details of the document.

pdfSchema.Producer = "Syncfusion";

pdfSchema.PDFVersion = "1.5";

pdfSchema.Keywords = "Essential PDF";

//Save and Close the document.

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create a PDF document

Dim pdfDoc As New PdfDocument()

'Add a page

Dim page As PdfPage = pdfDoc.Pages.Add()

'Gets XMP object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

'XMP PDF Schema.

Dim pdfSchema As PDFSchema = metaData.PDFSchema

'Set the PDF Schema details of the document.

pdfSchema.Producer = "Syncfusion"

pdfSchema.PDFVersion = "1.5"

pdfSchema.Keywords = "Essential PDF"

'Save and Close the document.

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Add a page

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP PDF Schema.

PDFSchema pdfSchema = metaData.PDFSchema;

//Set the PDF Schema details of the document.

pdfSchema.Producer = "Syncfusion";

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.Close(true);

//Defining the ContentType 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);
//Create a PDF document

PdfDocument pdfDoc = new PdfDocument();

//Add a page

PdfPage page = pdfDoc.Pages.Add();

//Gets XMP object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//XMP PDF Schema.

PDFSchema pdfSchema = metaData.PDFSchema;

//Set the PDF Schema details of the document.

pdfSchema.Producer = "Syncfusion";

pdfSchema.PDFVersion = "1.5";

pdfSchema.Keywords = "Essential PDF";

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Custom Schema

A custom schema defines the structure of the customized information records. You can use the CustomSchema class to:

  • Define custom metadata files and,
  • Add them to the PDF document

Add the following code to define a custom schema.

//Create Pdf document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

// Get metaData object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//Create custom schema field

CustomSchema customSchema = new CustomSchema(metaData, "custom", "http://www.syncfusion.com");

customSchema["Author"] = "Syncfusion";

customSchema["creationDate"] = DateTime.Now.ToString();

customSchema["DOCID"] = "SYNCSAM001";

customSchema["Encryption"] = "Standard";

customSchema["Project"] = "Data processing";

//save the document

pdfDoc.Save("DocumentInformation.pdf");

pdfDoc.Close(true);
'Create Pdf document

Dim pdfDoc As New PdfDocument()

Dim page As PdfPage = pdfDoc.Pages.Add()

' Get metaData object.

Dim metaData As XmpMetadata = pdfDoc.DocumentInformation.XmpMetadata

'Create custom schema field

Dim customSchema As New CustomSchema(metaData, "custom", "http://www.syncfusion.com")

customSchema("Author") = "Syncfusion"

customSchema("creationDate") = DateTime.Now.ToString()

customSchema("DOCID") = "SYNCSAM001"

customSchema("Encryption") = "Standard"

customSchema("Project") = "Data processing"

'save the document

pdfDoc.Save("DocumentInformation.pdf")

pdfDoc.Close(True)
Essential PDF does not support Metadata (XMP) in UWP platform.
//Create Pdf document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

// Get metaData object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//Create custom schema field

CustomSchema customSchema = new CustomSchema(metaData, "custom", "http://www.syncfusion.com");

customSchema["creationDate"] = DateTime.Now.ToString();

customSchema["DOCID"] = "SYNCSAM001";

customSchema["Encryption"] = "Standard";

customSchema["Project"] = "Data processing";

//Save and close the document

MemoryStream stream = new MemoryStream();

pdfDoc.Save(stream);

stream.Position = 0;

//Close the document.

pdfDoc.Close(true);

//Defining the ContentType 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);
//Create Pdf document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

// Get metaData object.

XmpMetadata metaData = pdfDoc.DocumentInformation.XmpMetadata;

//Create custom schema field

CustomSchema customSchema = new CustomSchema(metaData, "custom", "http://www.syncfusion.com");

customSchema["creationDate"] = DateTime.Now.ToString();

customSchema["DOCID"] = "SYNCSAM001";

customSchema["Encryption"] = "Standard";

customSchema["Project"] = "Data processing";

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("DocumentInformation.pdf", "application/pdf", memoryStream);
}

Adding Custom Schema to the PDF document

Essential PDF allows you to add required metadata (custom schema) to a PDF document.

You can add custom schema using XmpMetadata class. The following code illustrates this.

//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Create XML Document container.

XmpMetadata metaData = new XmpMetadata(pdfDoc.DocumentInformation.XmpMetadata.XmlData);

//Create custom schema.

CustomSchema customSchema = new CustomSchema(metaData, "custom", "http://www.syncfusion.com");

customSchema["Author"] = "Syncfusion";

customSchema["creationDate"] = DateTime.Now.ToString();

customSchema["DOCID"] = "SYNCSAM001";

//Save and close the document.

pdfDoc.Save("CustomMetaField.pdf");

pdfDoc.Close(true);
'Create PDF document

Dim pdfDoc As New PdfDocument()

Dim page As PdfPage = pdfDoc.Pages.Add()

'Create XML Document container.

Dim metaData As New XmpMetadata(pdfDoc.DocumentInformation.XmpMetadata.XmlData)

'Create custom schema.

Dim customSchema As New CustomSchema(metaData, "custom", "http://www.syncfusion.com")

customSchema("Author") = "Syncfusion"

customSchema("creationDate") = DateTime.Now.ToString()

customSchema("DOCID") = "SYNCSAM001"

'Save and close the document.

pdfDoc.Save("CustomMetaField.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Create XML Document container.

XmpMetadata metaData = new XmpMetadata(pdfDoc.DocumentInformation.XmpMetadata.XmlData);

//Create custom schema.

CustomSchema customSchema = new CustomSchema(metaData, "custom", "http://www.syncfusion.com");

customSchema["Author"] = "Syncfusion";

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.Close(true);

//Defining the ContentType 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);
//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

PdfPage page = pdfDoc.Pages.Add();

//Create XML Document container.

XmpMetadata metaData = new XmpMetadata(pdfDoc.DocumentInformation.XmpMetadata.XmlData);

//Create custom schema.

CustomSchema customSchema = new CustomSchema(metaData, "custom", "http://www.syncfusion.com");

customSchema["Author"] = "Syncfusion";

customSchema["creationDate"] = DateTime.Now.ToString();

customSchema["DOCID"] = "SYNCSAM001";

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("CustomMetaField.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("CustomMetaField.pdf", "application/pdf", memoryStream);
}

Adding Custom Metadata to the PDF document

The custom metadata can be added in PDF document by using the CustomMetadata property. Refer to the following code.

//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

//Add new PDF page

PdfPage page = pdfDoc.Pages.Add();

//Add Custom MetaData

pdfDoc.DocumentInformation.CustomMetadata["ID"] = "IO1";

pdfDoc.DocumentInformation.CustomMetadata["CompanyName"] = "Syncfusion";

pdfDoc.DocumentInformation.CustomMetadata["Key"] = "DocumentKey";

//Save and close the document

pdfDoc.Save("AddCustomField.pdf");

pdfDoc.Close(true);
'Create PDF document

Dim pdfDoc As New PdfDocument()

'Add new PDF page

Dim page As PdfPage = pdfDoc.Pages.Add()

'Add Custom MetaData

pdfDoc.DocumentInformation.CustomMetadata("ID") = "IO1"

pdfDoc.DocumentInformation.CustomMetadata("CompanyName") = "Syncfusion"

pdfDoc.DocumentInformation.CustomMetadata("Key") = "DocumentKey"

'Save and close the document

pdfDoc.Save("AddCustomField.pdf")

pdfDoc.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

//Add new PDF page

PdfPage page = pdfDoc.Pages.Add();

//Add Custom MetaData

pdfDoc.DocumentInformation.CustomMetadata["ID"] = "IO1";

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.Close(true);

//Defining the ContentType 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);
//Create PDF document

PdfDocument pdfDoc = new PdfDocument();

//Add new PDF page

PdfPage page = pdfDoc.Pages.Add();

//Add Custom MetaData

pdfDoc.DocumentInformation.CustomMetadata["ID"] = "IO1";

pdfDoc.DocumentInformation.CustomMetadata["CompanyName"] = "Syncfusion";

pdfDoc.DocumentInformation.CustomMetadata["Key"] = "DocumentKey";

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

pdfDoc.Save(memoryStream);

//Close the documents.

pdfDoc.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("AddCustomField.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("AddCustomField.pdf", "application/pdf", memoryStream);
}

Removing Custom Metadata from an existing PDF document

You can remove the custom metadata from an existing PDF document as follows.

//Load the document

PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf");

//Remove custom metadata using key name

loadedDocument.DocumentInformation.CustomMetadata.Remove("Key");

//Save and close the document

loadedDocument.Save("Output.pdf");

loadedDocument.Close(true);
'Load the document

Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("Input.pdf")

'Remove custom metadata using key name

loadedDocument.DocumentInformation.CustomMetadata.Remove("Key")

'Save and close the document

loadedDocument.Save("Output.pdf")

loadedDocument.Close(True)
//Essential PDF does not support Metadata (XMP) in UWP platform.
//Load the PDF document

FileStream docStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read);

PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream);

//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.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);
//Load the file as stream

Stream docStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("Sample.Assets.Input.pdf");

PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream);

//Remove custom metadata using key name

loadedDocument.DocumentInformation.CustomMetadata.Remove("Key");

//Save the document into stream.

MemoryStream memoryStream = new MemoryStream();

loadedDocument.Save(memoryStream);

//Close the documents.

loadedDocument.Close(true);

//Save the stream into pdf file

//The operation in Save under Xamarin varies between Windows Phone, Android and iOS platforms. Please refer PDF/Xamarin section for respective code samples.
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
    Xamarin.Forms.DependencyService.Get<ISaveWindowsPhone>().Save("Output.pdf", "application/pdf", memoryStream);
}
else
{
    Xamarin.Forms.DependencyService.Get<ISave>().Save("Output.pdf", "application/pdf", memoryStream);
}