XMP Meta Data

Metadata is data that describes the characteristics or properties of a document and is different than the main contents of a document. For example, the contents include the actual text data and formatting information for a word processing document. In contrast, the metadata might consist of the author, modification date, or copyright status properties. The XMP (Extensible Metadata Platform) provides a standard format for creating, processing, and interchanging metadata for various applications.

XMP, the Extensible Metadata Platform, provides an understood standard that makes applications work more effectively with metadata.

XMP is provided with several schemas (predefined sets of Metadata property definitions relevant to a wide range of applications).

XMP Meta Data Schemas:

XMPMetaData

Use a Document class's XMPMetaData property to add XMP metadata to a PDF using the XMPMetaData class.

Properties

Property Description
BasicSchema Gets the BasicSchema schema object.
DublinCore Gets the DublinCoreSchema schema object.
RequiredPdfObjects Gets the number of PDF objects required by the resource.
ResourceType Gets the type of resource. (Inherited from Resource)
Uid Gets the unique ID of the resource. (Inherited from Resource)

This class has the following method for adding an XmpSchema to the XMPMetaData.

AddSchema(XmpSchema)

The following example illustrates how to create an XMPMetadata instance and add it to a document.

using System;
using System.IO;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Xmp;
         
class MyClass
{
    static void Main()
    {
        // Create a PDF Document
        Document document = new Document();
        document.Keywords = "XMP, metadata, pdf, example";
        document.Title = "Pdf document with xmp metadata";
        document.Author = "MyAuthor";
                
        // Add blank pages to the document
        document.Pages.Add( new Page( PageSize.Letter ) );
        document.Pages.Add( new Page( PageSize.Letter ) );
                
        // Create an Xmp Metadata
        XmpMetadata xmp = new XmpMetadata();
                
        // Dublin Core Schema.
        DublinCoreSchema dc = xmp.DublinCore;
        dc.Contributors.Add( "Abc" );
        dc.Contributors.Add( "Xyz" );
        dc.Contributors.Add( "Pqrs" );
        dc.Coverage = "To test all the attributes of schema's provided";
        dc.Creators.Add( "MyProduct" );
        dc.Creators.Add( "MyCompany" );
        dc.Date.Add( DateTime.Now );
        dc.Description.AddLang( "en-us", "XMP Schema's test" );
        dc.Identifier = "First XMP pdf";
        dc.Publisher.Add( "mydomain.com" );
        dc.Publisher.Add( "MyCompany" );
        dc.Relation.Add( "Test PDF with XMP" );
        dc.Rights.DefaultText = "US English";
        dc.Rights.AddLang( "en-us", "All rights reserved 2013,MyCompany." );
        dc.Source = "XMP Project";
        dc.Subject.Add( "eXtensible Metadata Platform" );
        dc.Title.AddLang( "en-us", "XMP" );
        dc.Title.AddLang( "it-it", "XMP - Piattaforma Estendible di Metadata" );
        dc.Title.AddLang( "du-du", "De hallo Wereld" );
        dc.Title.AddLang( "fr-fr", "XMP - Une Platforme Extensible pour les Mtdonnes" );
        dc.Title.AddLang( "DE-DE", " Hallo Welt" );
        dc.Type.Add( "Pdf file containing xmp metadata" );
        
        // Basic Schema.
        BasicSchema bs = xmp.BasicSchema;
        bs.Advisory.Add( "Date" );
        bs.Advisory.Add( "Contributors" );
        bs.Nickname = "xyz";
        bs.Thumbnails.Add(106, 80, "JPEG", GetImage( @"C:\thumbnail.jpg" ) );
                
        // Rights Management Schema.
        RightsManagementSchema rm = new RightsManagementSchema();
        rm.Marked2 = CopyrightStatus.PublicDomain;
        rm.Owner.Add( "MyCompany" );
        rm.UsageTerms.AddLang( "en-us", "Contact MyCompany" );
                       
        // Basic Job Ticket Schema.
        BasicJobTicketSchema job = new BasicJobTicketSchema();
        job.JobRef.Add( "MyCompany", "Xmp Test", new Uri( "http://www.mydomain.com/" ) );
        job.JobRef.Add( "MyCompany", "XMP Metadata", new Uri( "http://www.mydomain.com/" ) );
                       
        // Paged-Text Schema.
        PagedTextSchema pt = new PagedTextSchema();
                       
        // Add the Xmp Metadata to the document
        document.XmpMetadata = xmp;
                
        // Save the PDF document
        document.Draw(pdfFilePath);
    }
            
    private static byte[] GetImage( string filePath )
    {
        FileStream inFile = new FileStream( filePath, FileMode.Open, FileAccess.Read );
        byte[] binaryData = new byte[ inFile.Length ];
        inFile.Read( binaryData, 0, (int)inFile.Length );
        inFile.Close();                 
        return binaryData;
    }
 }        
Imports System
Imports System.IO
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Xmp
                
Module MyModule
Sub Main()
                
        ' Create a PDF Document
        Dim MyDocument As Document = New Document
        MyDocument.Keywords = "XMP, metadata, pdf, example"
        MyDocument.Title = "Pdf document with xmp metadata"
        MyDocument.Author = "MyAuthor"  

        ' Add blank pages to the document
        MyDocument.Pages.Add(New Page(PageSize.Letter))
        MyDocument.Pages.Add(New Page(PageSize.Letter))
                                
        ' Create an Xmp Metadata
        Dim MyXmp As XmpMetadata = New XmpMetadata
                                
        ' Dublin Core Schema.
        Dim Mydc As DublinCoreSchema = MyXmp.DublinCore
        Mydc.Contributors.Add( "Abc" )
        Mydc.Contributors.Add( "Xyz" )
        Mydc.Contributors.Add( "Pqrs" )
        Mydc.Coverage = "To test all the attributes of schema's provided"
        Mydc.Creators.Add( "MyProduct" )
        Mydc.Creators.Add( "MyCompany" )
        Mydc.Date.Add( DateTime.Now )
        Mydc.Description.AddLang( "en-us", "XMP Schema's test" )
        Mydc.Identifier = "First XMP pdf"
        Mydc.Publisher.Add( "mydomain.com" )
        Mydc.Publisher.Add( "MyCompany" )
        Mydc.Relation.Add( "test pdf with xmp" )
        Mydc.Rights.DefaultText = "US English"
        Mydc.Rights.AddLang( "en-us", "All rights reserved 2013,MyCompany." )
        Mydc.Source = "XMP Project"
        Mydc.Subject.Add( "eXtensible Metadata Platform" )
        Mydc.Title.AddLang( "en-us", "XMP" )
        Mydc.Title.AddLang( "it-it", "XMP - Piattaforma Estendible di Metadata" )
        Mydc.Title.AddLang( "du-du", "De hallo Wereld" )
        Mydc.Title.AddLang( "fr-fr", "XMP - Une Platforme Extensible pour les Mtdonnes" )
        Mydc.Title.AddLang( "DE-DE", " Hallo Welt" )
        Mydc.Type.Add( "Pdf file containing xmp metadata" )
                                
        ' Basic Schema.
        Dim Mybs As BasicSchema  = MyXmp.BasicSchema
        Mybs.Advisory.Add( "Date" )
        Mybs.Advisory.Add( "Contributors" )
        Mybs.Nickname = "xyz"
        Mybs.Thumbnails.Add(106, 80, "JPEG", GetImage("C:\thumbnail.jpg"))
                                
        ' Rights Management Schema.
        Dim Myrm As RightsManagementSchema = New RightsManagementSchema
        Myrm.Marked2 = CopyrightStatus.PublicDomain
        Myrm.Owner.Add( "MyCompany" )
        Myrm.UsageTerms.AddLang( "en-us", "Contact MyCompany" )
                                        
        ' Basic Job Ticket Schema.
        Dim MyJob As BasicJobTicketSchema = New BasicJobTicketSchema
        MyJob.JobRef.Add( "MyCompany", "Xmp Test", new Uri( "http://www.mydomain.com/" ) )
        MyJob.JobRef.Add( "MyCompany", "XMP Metadata", new Uri( "http://www.mydomain.com/" ) )
                                        
        ' Paged-Text Schema.
        Dim Mypt As PagedTextSchema = New PagedTextSchema
                                                
        ' Add the Xmp Metadata to the document
        MyDocument.XmpMetadata = MyXmp
                
        ' Save the PDF document
        MyDocument.Draw(pdfFilePath)
                                
End Sub
                        
Private Function GetImage(ByVal filePath As String) As Byte()
                        
        Dim MyInFile As FileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read)
        Dim MyBinaryData(MyInFile.Length) As Byte
        MyInFile.Read(MyBinaryData, 0, MyInFile.Length)
        MyInFile.Close()                        
        return MyBinaryData
                
End Function
                        
End Module

Refer to the XMPMetadata class and XMPMetadata property API documentation for complete examples.

In this topic