Example: This example shows how to create a Xmp Meta data and add it to the Xmp Metadata.
import com.cete.dynamicpdf.*;
import com.cete.dynamicpdf.xmp.*;
import java.io.*;
import java.util.*;
public class MyClass{
public static void main(String args[]) throws MalformedURLException{
// Create a PDF Document
Document document = new Document();
document.setKeywords( "XMP, metadata, pdf, example");
document.setTitle( "Pdf document with xmp metadata" );
// Add blank pages to the document
document.getPages().add( new Page( PageSize.LETTER ) );
document.getPages().add( new Page( PageSize.LETTER ) );
// Create an Xmp Metadata
XmpMetadata xmp = new XmpMetadata();
// Dublin Core Schema.
DublinCoreSchema dc = xmp.getDublinCore();
dc.getContributors().add( "Abc" );
dc.getContributors().add( "Xyz" );
dc.getContributors().add( "Pqrs" );
dc.setCoverage( "To test all the attributes of schema's provided" );
dc.getCreators().add( "MyProduct" );
dc.getCreators().add( "MyCompany" );
dc.getDate().add( new Date() );
dc.getDescription().addLang( "en-us", "XMP Schema's test" );
dc.setIdentifier( "First XMP pdf" );
dc.getPublisher().add( "mydomain.com" );
dc.getPublisher().add( "MyCompany" );
dc.getRelation().add( "test pdf with xmp" );
dc.getRights().setDefault( "US English" );
dc.getRights().addLang( "en-us", "All rights reserved 2006, MyCompany." );
dc.setSource( "XMP Project" );
dc.getSubject().add( "eXtensible Metadata Platform" );
dc.getTitle().addLang( "en-us", "XMP" );
dc.getTitle().addLang( "it-it", "XMP - Piattaforma Estendible di Metadata" );
dc.getTitle().addLang( "du-du", "De hallo Wereld" );
dc.getTitle().addLang( "fr-fr", "XMP - Une Platforme Extensible pour les Métédonnées" );
dc.getTitle().addLang( "DE-DE", "ÄËßÜ Hallo Welt" );
dc.getType().add( "Pdf file containing xmp metadata" );
// Basic Schema.
BasicSchema bs = xmp.getBasicSchema();
bs.getAdvisory().add( "Date" );
bs.getAdvisory().add( "Contributors" );
bs.setNickname( "xyz" );
bs.getThumbnails().add(106, 80, "JPEG", getImage( "[PhysicalPath]/thumbnail.jpg" ) );
// Rights Management Schema.
RightsManagementSchema rm = new RightsManagementSchema();
rm.setMarked2(CopyrightStatus.PUBLICDOMAIN);
rm.getOwner().add( "MyProduct" );
rm.getUsageTerms().addLang( "en-us", "Contact MyCompany" );
xmp.addSchema( rm );
// Basic Job Ticket Schema.
BasicJobTicketSchema job = new BasicJobTicketSchema();
try {
job.getJobRef().add( "MyCompany", "XMP Metadata", new URL( "http://www.mydomain.com" ) );
} catch(MalformedURLException ex) {
System.out.println("Error in the URL");
}
xmp.addSchema( job );
// Paged-Text Schema.
PagedTextSchema pt = new PagedTextSchema();
xmp.addSchema( pt );
/* Need not have to add Dublic core schema, Basic Schema and
Adobe Pdf schema at this point. These are already added internally. */
// Add the Xmp Metadata to the document
document.setXmpMetadata( xmp );
// Save the PDF
document.draw("[PhysicalPath]/MyDocument.pdf");
}
private static byte[] getImage( String filePath ) {
byte[] binaryData = null;
try {
FileInputStream inFile = new FileInputStream( filePath );
binaryData = new byte[ inFile.available() ];
inFile.read( binaryData );
inFile.close();
} catch(Exception e) {
System.out.println("EXCEPTION "+e.getMessage());
}
return binaryData;
}
}