You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2014/06/01 21:12:22 UTC

svn commit: r1599026 - in /pdfbox/trunk: examples/ examples/src/main/java/org/apache/pdfbox/examples/pdfa/ examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ pdfbox/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/

Author: msahyoun
Date: Sun Jun  1 19:12:20 2014
New Revision: 1599026

URL: http://svn.apache.org/r1599026
Log:
PDFBOX-2107 Make PDFBox XMP library agnostic

Modified:
    pdfbox/trunk/examples/pom.xml
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java
    pdfbox/trunk/pdfbox/pom.xml
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDMetadata.java

Modified: pdfbox/trunk/examples/pom.xml
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/pom.xml?rev=1599026&r1=1599025&r2=1599026&view=diff
==============================================================================
--- pdfbox/trunk/examples/pom.xml (original)
+++ pdfbox/trunk/examples/pom.xml Sun Jun  1 19:12:20 2014
@@ -54,6 +54,11 @@
         <version>${project.version}</version>
     </dependency>
     <dependency>
+		<groupId>org.apache.pdfbox</groupId>
+        <artifactId>jempbox</artifactId>
+        <version>${project.version}</version>
+    </dependency>
+    <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-core</artifactId>
         <version>${lucene.version}</version>

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java?rev=1599026&r1=1599025&r2=1599026&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdfa/CreatePDFA.java Sun Jun  1 19:12:20 2014
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.examples.pdfa;
 
+import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 
 import org.apache.jempbox.xmp.XMPMetadata;
@@ -58,7 +59,7 @@ public class CreatePDFA
      *
      * @throws Exception If something bad occurs
      */
-    public void doIt( String file, String message) throws Exception
+    public void doIt( final String file, final String message, final String fontfile) throws Exception
     {
         // the document
         PDDocument doc = null;
@@ -69,9 +70,8 @@ public class CreatePDFA
             PDPage page = new PDPage();
             doc.addPage( page );
 
-            // load the font from pdfbox.jar
-            InputStream fontStream = CreatePDFA.class.getResourceAsStream("/org/apache/pdfbox/resources/ttf/ArialMT.ttf");
-            PDFont font = PDTrueTypeFont.loadTTF(doc, fontStream);
+            // load the font as this needs to be embedded as part of PDF/A
+            PDFont font = PDTrueTypeFont.loadTTF(doc, fontfile);
             
             // create a page with the message where needed
             PDPageContentStream contentStream = new PDPageContentStream(doc, page);
@@ -94,8 +94,9 @@ public class CreatePDFA
             pdfaid.setConformance("B");
             pdfaid.setPart(1);
             pdfaid.setAbout("");
-            metadata.importXMPMetadata(xmp);
-    
+            
+            metadata.importXMPMetadata( xmp.asByteArray() );
+            
             InputStream colorProfile = CreatePDFA.class.getResourceAsStream("/org/apache/pdfbox/resources/pdfa/sRGB Color Space Profile.icm");
             // create output intent
             PDOutputIntent oi = new PDOutputIntent(doc, colorProfile); 
@@ -129,13 +130,13 @@ public class CreatePDFA
         CreatePDFA app = new CreatePDFA();
         try
         {
-            if( args.length != 2 )
+            if( args.length != 3 )
             {
                 app.usage();
             }
             else
             {
-                app.doIt( args[0], args[1] );
+                app.doIt( args[0], args[1], args[2] );
             }
         }
         catch (Exception e)
@@ -149,6 +150,6 @@ public class CreatePDFA
      */
     private void usage()
     {
-        System.err.println( "usage: " + this.getClass().getName() + " <output-file> <Message>" );
+        System.err.println( "usage: " + this.getClass().getName() + " <output-file> <Message> <ttf-file>" );
     }
 }

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java?rev=1599026&r1=1599025&r2=1599026&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java Sun Jun  1 19:12:20 2014
@@ -26,6 +26,7 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
 import org.apache.pdfbox.pdmodel.common.PDMetadata;
 
+import java.io.ByteArrayOutputStream;
 import java.util.GregorianCalendar;
 
 /**
@@ -70,7 +71,7 @@ public class AddMetadataFromDocInfo
                 }
                 PDDocumentCatalog catalog = document.getDocumentCatalog();
                 PDDocumentInformation info = document.getDocumentInformation();
-
+                
                 XMPMetadata metadata = new XMPMetadata();
 
                 XMPSchemaPDF pdfSchema = metadata.addPDFSchema();
@@ -89,7 +90,7 @@ public class AddMetadataFromDocInfo
                 dcSchema.setDescription( info.getSubject() );
 
                 PDMetadata metadataStream = new PDMetadata(document);
-                metadataStream.importXMPMetadata( metadata );
+                metadataStream.importXMPMetadata( metadata.asByteArray() );
                 catalog.setMetadata( metadataStream );
 
                 document.save( args[1] );

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java?rev=1599026&r1=1599025&r2=1599026&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java Sun Jun  1 19:12:20 2014
@@ -31,7 +31,12 @@ import java.text.DateFormat;
 import java.util.Calendar;
 import java.util.Iterator;
 import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
+import org.w3c.dom.Document;
 
 /**
  * This is an example on how to extract metadata from a PDF document.
@@ -84,7 +89,10 @@ public class ExtractMetadata
                 PDMetadata meta = catalog.getMetadata();
                 if ( meta != null)
                 {
-                    XMPMetadata metadata = meta.exportXMPMetadata();
+                	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+                    DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
+                	Document xmpDocument = documentBuilder.parse(meta.createInputStream());
+                    XMPMetadata metadata = new XMPMetadata(xmpDocument);
     
                     XMPSchemaDublinCore dc = metadata.getDublinCoreSchema();
                     if (dc != null)

Modified: pdfbox/trunk/pdfbox/pom.xml
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/pom.xml?rev=1599026&r1=1599025&r2=1599026&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/pom.xml (original)
+++ pdfbox/trunk/pdfbox/pom.xml Sun Jun  1 19:12:20 2014
@@ -43,11 +43,6 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.pdfbox</groupId>
-            <artifactId>jempbox</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
         </dependency>

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDMetadata.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDMetadata.java?rev=1599026&r1=1599025&r2=1599026&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDMetadata.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDMetadata.java Sun Jun  1 19:12:20 2014
@@ -18,10 +18,10 @@ package org.apache.pdfbox.pdmodel.common
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 
 import javax.xml.transform.TransformerException;
 
-import org.apache.jempbox.xmp.XMPMetadata;
 import org.apache.pdfbox.cos.COSStream;
 
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -74,16 +74,16 @@ public class PDMetadata extends PDStream
     }
 
     /**
-     * Extract the XMP metadata and create and build an in memory object.
+     * Extract the XMP metadata.
      * To persist changes back to the PDF you must call importXMPMetadata.
      *
-     * @return A parsed XMP object.
+     * @return A stream to get the xmp data from.
      *
      * @throws IOException If there is an error parsing the XMP data.
      */
-    public XMPMetadata exportXMPMetadata() throws IOException
+    public InputStream exportXMPMetadata() throws IOException
     {
-        return XMPMetadata.load( createInputStream() );
+        return createInputStream();
     }
 
     /**
@@ -94,9 +94,11 @@ public class PDMetadata extends PDStream
      * @throws IOException If there is an error generating the XML document.
      * @throws TransformerException If there is an error generating the XML document.
      */
-    public void importXMPMetadata( XMPMetadata xmp )
-        throws IOException, TransformerException
+    public void importXMPMetadata( byte[] xmp )
+        throws IOException
     {
-        xmp.save( createOutputStream() );
+    	OutputStream os = createOutputStream();
+    	os.write(xmp);
+    	os.close();
     }
 }