You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/08/25 19:22:34 UTC

svn commit: r1620380 - in /pdfbox/branches/1.8/examples: ./ src/main/java/org/apache/pdfbox/examples/pdfa/ src/main/java/org/apache/pdfbox/examples/pdmodel/

Author: lehmi
Date: Mon Aug 25 17:22:34 2014
New Revision: 1620380

URL: http://svn.apache.org/r1620380
Log:
PDFBOX-2276: switched metadata examples from jempbox to xmpbox

Modified:
    pdfbox/branches/1.8/examples/pom.xml
    pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java
    pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java
    pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java

Modified: pdfbox/branches/1.8/examples/pom.xml
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/examples/pom.xml?rev=1620380&r1=1620379&r2=1620380&view=diff
==============================================================================
--- pdfbox/branches/1.8/examples/pom.xml (original)
+++ pdfbox/branches/1.8/examples/pom.xml Mon Aug 25 17:22:34 2014
@@ -44,6 +44,11 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.pdfbox</groupId>
+      <artifactId>xmpbox</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcmail-jdk15</artifactId>
       <version>1.44</version>

Modified: pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java?rev=1620380&r1=1620379&r2=1620380&view=diff
==============================================================================
--- pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java (original)
+++ pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java Mon Aug 25 17:22:34 2014
@@ -16,10 +16,9 @@
  */
 package org.apache.pdfbox.examples.pdfa;
 
+import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 
-import org.apache.jempbox.xmp.XMPMetadata;
-import org.apache.jempbox.xmp.pdfa.XMPSchemaPDFAId;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDPage;
@@ -28,6 +27,11 @@ import org.apache.pdfbox.pdmodel.edit.PD
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
 import org.apache.pdfbox.pdmodel.graphics.color.PDOutputIntent;
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.schema.PDFAIdentificationSchema;
+import org.apache.xmpbox.type.BadFieldValueException;
+import org.apache.xmpbox.xml.XmpSerializationException;
+import org.apache.xmpbox.xml.XmpSerializer;
 
 /**
  * This is an example that creates a simple PDF/A document.
@@ -87,14 +91,26 @@ public class CreatePDFA
             PDMetadata metadata = new PDMetadata(doc);
             cat.setMetadata(metadata);
 
-            // jempbox version
-            XMPMetadata xmp = new XMPMetadata();
-            XMPSchemaPDFAId pdfaid = new XMPSchemaPDFAId(xmp);
-            xmp.addSchema(pdfaid);
-            pdfaid.setConformance("B");
-            pdfaid.setPart(1);
-            pdfaid.setAbout("");
-            metadata.importXMPMetadata(xmp);
+            XMPMetadata xmp = XMPMetadata.createXMPMetadata();
+            try
+            {
+                PDFAIdentificationSchema pdfaid = xmp.createAndAddPFAIdentificationSchema();
+                pdfaid.setConformance("B");
+                pdfaid.setPart(1);
+                pdfaid.setAboutAsSimple("PDFBox PDFA sample");
+                XmpSerializer serializer = new XmpSerializer();
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                serializer.serialize(xmp, baos, false);
+                metadata.importXMPMetadata( baos.toByteArray() );
+            }
+            catch(BadFieldValueException badFieldexception)
+            {
+                // can't happen here, as the provided value is valid
+            }
+            catch(XmpSerializationException xmpException)
+            {
+                System.err.println(xmpException.getMessage());
+            }
     
             InputStream colorProfile = CreatePDFA.class.getResourceAsStream("/org/apache/pdfbox/resources/pdfa/sRGB Color Space Profile.icm");
             // create output intent

Modified: pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java?rev=1620380&r1=1620379&r2=1620380&view=diff
==============================================================================
--- pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java (original)
+++ pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java Mon Aug 25 17:22:34 2014
@@ -16,16 +16,17 @@
  */
 package org.apache.pdfbox.examples.pdmodel;
 
-import org.apache.jempbox.xmp.XMPMetadata;
-import org.apache.jempbox.xmp.XMPSchemaBasic;
-import org.apache.jempbox.xmp.XMPSchemaDublinCore;
-import org.apache.jempbox.xmp.XMPSchemaPDF;
-
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
 import org.apache.pdfbox.pdmodel.common.PDMetadata;
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.schema.AdobePDFSchema;
+import org.apache.xmpbox.schema.DublinCoreSchema;
+import org.apache.xmpbox.schema.XMPBasicSchema;
+import org.apache.xmpbox.xml.XmpSerializer;
 
+import java.io.ByteArrayOutputStream;
 import java.util.GregorianCalendar;
 
 /**
@@ -71,26 +72,30 @@ public class AddMetadataFromDocInfo
                 PDDocumentCatalog catalog = document.getDocumentCatalog();
                 PDDocumentInformation info = document.getDocumentInformation();
 
-                XMPMetadata metadata = new XMPMetadata();
+                XMPMetadata metadata = XMPMetadata.createXMPMetadata();
 
-                XMPSchemaPDF pdfSchema = metadata.addPDFSchema();
+                AdobePDFSchema pdfSchema = metadata.createAndAddAdobePDFSchema();
                 pdfSchema.setKeywords( info.getKeywords() );
                 pdfSchema.setProducer( info.getProducer() );
 
-                XMPSchemaBasic basicSchema = metadata.addBasicSchema();
+                XMPBasicSchema basicSchema = metadata.createAndAddXMPBasicSchema();
                 basicSchema.setModifyDate( info.getModificationDate() );
                 basicSchema.setCreateDate( info.getCreationDate() );
                 basicSchema.setCreatorTool( info.getCreator() );
                 basicSchema.setMetadataDate( new GregorianCalendar() );
 
-                XMPSchemaDublinCore dcSchema = metadata.addDublinCoreSchema();
+                DublinCoreSchema dcSchema = metadata.createAndAddDublinCoreSchema();
                 dcSchema.setTitle( info.getTitle() );
                 dcSchema.addCreator( "PDFBox" );
                 dcSchema.setDescription( info.getSubject() );
 
                 PDMetadata metadataStream = new PDMetadata(document);
-                metadataStream.importXMPMetadata( metadata );
                 catalog.setMetadata( metadataStream );
+                
+                XmpSerializer serializer = new XmpSerializer();
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                serializer.serialize(metadata, baos, false);
+                metadataStream.importXMPMetadata( baos.toByteArray() );
 
                 document.save( args[1] );
             }

Modified: pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java?rev=1620380&r1=1620379&r2=1620380&view=diff
==============================================================================
--- pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java (original)
+++ pdfbox/branches/1.8/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java Mon Aug 25 17:22:34 2014
@@ -16,15 +16,16 @@
  */
 package org.apache.pdfbox.examples.pdmodel;
 
-import org.apache.jempbox.xmp.XMPMetadata;
-import org.apache.jempbox.xmp.XMPSchemaBasic;
-import org.apache.jempbox.xmp.XMPSchemaDublinCore;
-import org.apache.jempbox.xmp.XMPSchemaPDF;
-
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
 import org.apache.pdfbox.pdmodel.common.PDMetadata;
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.schema.AdobePDFSchema;
+import org.apache.xmpbox.schema.DublinCoreSchema;
+import org.apache.xmpbox.schema.XMPBasicSchema;
+import org.apache.xmpbox.xml.DomXmpParser;
+import org.apache.xmpbox.xml.XmpParsingException;
 
 import java.text.DateFormat;
 import java.util.Calendar;
@@ -81,32 +82,41 @@ public class ExtractMetadata
                 PDMetadata meta = catalog.getMetadata();
                 if ( meta != null)
                 {
-                    XMPMetadata metadata = meta.exportXMPMetadata();
-    
-                    XMPSchemaDublinCore dc = metadata.getDublinCoreSchema();
-                    if (dc != null)
-                    {
-                        display("Title:", dc.getTitle());
-                        display("Description:", dc.getDescription());
-                        list("Creators: ", dc.getCreators());
-                        list("Dates:", dc.getDates());
-                        list("Subjects:", dc.getSubjects());
-                    }
-    
-                    XMPSchemaPDF pdf = metadata.getPDFSchema();
-                    if (pdf != null)
+                    DomXmpParser xmpParser = new DomXmpParser();
+                    try
                     {
-                        display("Keywords:", pdf.getKeywords());
-                        display("PDF Version:", pdf.getPDFVersion());
-                        display("PDF Producer:", pdf.getProducer());
+                        XMPMetadata metadata = xmpParser.parse(meta.createInputStream());
+
+                        DublinCoreSchema dc = metadata.getDublinCoreSchema();
+                        if (dc != null)
+                        {
+                            display("Title:", dc.getTitle());
+                            display("Description:", dc.getDescription());
+                            listString("Creators: ", dc.getCreators());
+                            listCalendar("Dates:", dc.getDates());
+                            listString("Subjects:", dc.getSubjects());
+                        }
+
+                        AdobePDFSchema pdf = metadata.getAdobePDFSchema();
+                        if (pdf != null)
+                        {
+                            display("Keywords:", pdf.getKeywords());
+                            display("PDF Version:", pdf.getPDFVersion());
+                            display("PDF Producer:", pdf.getProducer());
+                        }
+
+                        XMPBasicSchema basic = metadata.getXMPBasicSchema();
+                        if (basic != null)
+                        {
+                            display("Create Date:", basic.getCreateDate());
+                            display("Modify Date:", basic.getModifyDate());
+                            display("Creator Tool:", basic.getCreatorTool());
+                        }
                     }
-    
-                    XMPSchemaBasic basic = metadata.getBasicSchema();
-                    if (basic != null)
+                    catch (XmpParsingException e)
                     {
-                        display("Create Date:", basic.getCreateDate());
-                        display("Modify Date:", basic.getModifyDate());
-                        display("Creator Tool:", basic.getCreatorTool());
+                        System.err.println("An error ouccred when parsing the meta data: "
+                                + e.getMessage());
                     }
                 }
                 else
@@ -139,18 +149,33 @@ public class ExtractMetadata
         display("Producer:", information.getProducer());
     }
     
-    private static void list(String title, List list)
+    private static void listString(String title, List<String> list)
+    {
+        if (list == null)
+        {
+            return;
+        }
+        System.out.println(title);
+        Iterator<String> iter = list.iterator();
+        while (iter.hasNext())
+        {
+            String string = iter.next();
+            System.out.println("  " + string);
+        }
+    }
+
+    private static void listCalendar(String title, List<Calendar> list)
     {
         if (list == null)
         {
             return;
         }
         System.out.println(title);
-        Iterator iter = list.iterator();
+        Iterator<Calendar> iter = list.iterator();
         while (iter.hasNext())
         {
-            Object o = iter.next();
-            System.out.println("  " + format(o));
+            Calendar calendar = iter.next();
+            System.out.println("  " + format(calendar));
         }
     }