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 2011/06/25 19:30:02 UTC

svn commit: r1139575 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java

Author: lehmi
Date: Sat Jun 25 17:30:01 2011
New Revision: 1139575

URL: http://svn.apache.org/viewvc?rev=1139575&view=rev
Log:
PDFBOX-1043: update the version info from the document catalog if available as proposed by Mehdi Houshmand

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java?rev=1139575&r1=1139574&r2=1139575&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java Sat Jun 25 17:30:01 2011
@@ -787,12 +787,38 @@ public class PDFParser extends BaseParse
 
         COSDictionary parsedTrailer = parseCOSDictionary();
         xrefTrailerResolver.setTrailer( parsedTrailer );
-        
+
+        // The version can also be specified within the document /Catalog
+        readVersionInTrailer(parsedTrailer);
+
         skipSpaces();
         return true;
     }
     
     /**
+     * The document catalog can also have a /Version parameter which overrides the version specified
+     * in the header if, and only if it is greater.
+     * 
+     * @param parsedTrailer the parsed catalog in the trailer
+     */
+    private void readVersionInTrailer(COSDictionary parsedTrailer) 
+    {
+        COSObject root = (COSObject) parsedTrailer.getItem(COSName.ROOT);
+        if (root != null)
+        {
+            COSName version =  (COSName) root.getItem(COSName.VERSION);
+            if (version != null) 
+            {
+                float trailerVersion = Float.valueOf(version.getName());
+                if (trailerVersion > document.getVersion()) 
+                {
+                    document.setVersion(trailerVersion);
+                }
+            }
+        }
+    }
+
+    /**
      * Fills XRefTrailerResolver with data of given stream.
      * Stream must be of type XRef.
      * @param stream the stream to be read