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 2015/02/13 19:35:55 UTC

svn commit: r1659643 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: cos/COSDocument.java pdfparser/COSParser.java pdfparser/FDFParser.java pdfparser/PDFParser.java

Author: lehmi
Date: Fri Feb 13 18:35:54 2015
New Revision: 1659643

URL: http://svn.apache.org/r1659643
Log:
PDFBOX-2099: remove header string from COSDocument

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java?rev=1659643&r1=1659642&r2=1659643&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDocument.java Fri Feb 13 18:35:54 2015
@@ -71,8 +71,6 @@ public class COSDocument extends COSBase
      */
     private SignatureInterface signatureInterface;
 
-    private String headerString = "%PDF-" + version;
-
     private boolean warnMissingClose = true;
     
     /** 
@@ -255,18 +253,13 @@ public class COSDocument extends COSBase
     }
 
     /**
-     * This will set the version of this PDF document.
+     * This will set the header version of this PDF document.
      *
      * @param versionValue The version of the PDF document.
      */
-    public void setVersion( double versionValue )
+    public void setVersion( float versionValue )
     {
-        // update header string
-        if (versionValue != version) 
-        {
-            headerString = headerString.replaceFirst(String.valueOf(version), String.valueOf(versionValue));
-        }
-        version = (float)versionValue;
+        version = versionValue;
     }
 
     /**
@@ -276,21 +269,6 @@ public class COSDocument extends COSBase
      */
     public float getVersion()
     {
-        if (version < 0)
-        {
-            try
-            {
-                String[] headerParts = headerString.split("-");
-                if (headerParts.length == 2)
-                {
-                    version = Float. parseFloat(headerParts[1]);
-                }
-            }
-            catch ( NumberFormatException e )
-            {
-                version = -1;
-            }
-        }
         return version;
     }
 
@@ -577,23 +555,6 @@ public class COSDocument extends COSBase
     }
 
     /**
-     * @return Returns the headerString.
-     */
-    public String getHeaderString()
-    {
-        return headerString;
-    }
-    /**
-     * @param header The headerString to set.
-     */
-    public void setHeaderString(String header)
-    {
-        headerString = header;
-        // reset version
-        version = -1;
-    }
-
-    /**
      * This method will search the list of objects for types of ObjStm.  If it finds
      * them then it will parse out all of the objects from the stream that is contains.
      *

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1659643&r1=1659642&r2=1659643&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Fri Feb 13 18:35:54 2015
@@ -1176,6 +1176,7 @@ public class COSParser extends BaseParse
                 }
             }
         }
+        // TODO cross check found objects
     }
 
     /**
@@ -1498,9 +1499,6 @@ public class COSParser extends BaseParse
         COSDictionary parsedTrailer = parseCOSDictionary();
         xrefTrailerResolver.setTrailer( parsedTrailer );
     
-        // The version can also be specified within the document /Catalog
-        readVersionInTrailer(parsedTrailer);
-    
         skipSpaces();
         return true;
     }
@@ -1580,54 +1578,30 @@ public class COSParser extends BaseParse
                 pdfSource.unread(headerGarbage.getBytes(ISO_8859_1));
             }
         }
-        document.setHeaderString(header);
+        float headerVersion = -1;
         try
         {
-            if (header.startsWith( headerMarker ))
+            String[] headerParts = header.split("-");
+            if (headerParts.length == 2)
             {
-                float pdfVersion = Float. parseFloat(
-                        header.substring( headerMarker.length(), Math.min( header.length(), headerMarker.length()+3) ) );
-                document.setVersion( pdfVersion );
+                headerVersion = Float.parseFloat(headerParts[1]);
             }
         }
-        catch ( NumberFormatException e )
+        catch (NumberFormatException exception)
+        {
+            LOG.debug("Can't parse the header version.", exception);
+        }
+        if (headerVersion < 0)
         {
-            throw new IOException( "Error getting version: " + e.getMessage(), e );
+            throw new IOException( "Error getting header version: " + header);
         }
+        document.setVersion(headerVersion);
         // rewind
         pdfSource.seek(0);
         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
-     */
-    protected void readVersionInTrailer(COSDictionary parsedTrailer)
-    {
-        COSObject root = (COSObject) parsedTrailer.getItem(COSName.ROOT);
-        if (root != null)
-        {
-            COSBase item = root.getItem(COSName.VERSION);
-            if (item instanceof COSName)
-            {
-                COSName version = (COSName) item;
-                float trailerVersion = Float.valueOf(version.getName());
-                if (trailerVersion > document.getVersion())
-                {
-                    document.setVersion(trailerVersion);
-                }
-            }
-            else if (item != null)
-            {
-                LOG.warn("Incorrect /Version entry is ignored: " + item);
-            }
-        }
-    }
-
-    /**
      * This will parse the xref table from the stream and add it to the state
      * The XrefTable contents are ignored.
      * @param startByteOffset the offset to start at

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java?rev=1659643&r1=1659642&r2=1659643&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java Fri Feb 13 18:35:54 2015
@@ -152,9 +152,6 @@ public class FDFParser extends COSParser
         {
             parseDictObjects((COSDictionary) rootObject, (COSName[]) null);
         }
-    
-        // PDFBOX-1922: read the version again now that all objects have been resolved
-        readVersionInTrailer(trailer);
         initialParseDone = true;
     }
 

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=1659643&r1=1659642&r2=1659643&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 Fri Feb 13 18:35:54 2015
@@ -346,8 +346,6 @@ public class PDFParser extends COSParser
             parseDictObjects((COSDictionary) catalogObj.getObject(), (COSName[]) null);
             document.setDecrypted();
         }
-        // PDFBOX-1922: read the version again now that all objects have been resolved
-        readVersionInTrailer(trailer);
         initialParseDone = true;
     }