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));
}
}