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 2013/10/28 19:13:02 UTC

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

Author: lehmi
Date: Mon Oct 28 18:13:01 2013
New Revision: 1536463

URL: http://svn.apache.org/r1536463
Log:
PDFBOX-1744: add a default value if the version is missing as proposed by Chris Bamford

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=1536463&r1=1536462&r2=1536463&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 Mon Oct 28 18:13:01 2013
@@ -58,6 +58,10 @@ public class PDFParser extends BaseParse
 
     private static final String PDF_HEADER = "%PDF-";
     private static final String FDF_HEADER = "%FDF-";
+    
+    private static final String PDF_DEFAULT_VERSION = "1.4";
+    private static final String FDF_DEFAULT_VERSION = "1.0";
+    
     /**
      * A list of duplicate objects found when Parsing the PDF
      * File.
@@ -352,20 +356,39 @@ public class PDFParser extends BaseParse
          */
         if (header.startsWith(PDF_HEADER))
         {
-            if(!header.matches(PDF_HEADER + "\\d.\\d"))
+            if (!header.matches(PDF_HEADER + "\\d.\\d"))
             {
-                String headerGarbage = header.substring(PDF_HEADER.length()+3, header.length()) + "\n";
-                header = header.substring(0, PDF_HEADER.length()+3);
-                pdfSource.unread(headerGarbage.getBytes("ISO-8859-1"));
+
+                if (header.length() < PDF_HEADER.length() + 3)
+                {
+                    // No version number at all, set to 1.4 as default
+                    header = PDF_HEADER + PDF_DEFAULT_VERSION;
+                    LOG.debug("No pdf version found, set to " + PDF_DEFAULT_VERSION + " as default.");
+                }
+                else
+                {
+                    String headerGarbage = header.substring(PDF_HEADER.length() + 3, header.length()) + "\n";
+                    header = header.substring(0, PDF_HEADER.length() + 3);
+                    pdfSource.unread(headerGarbage.getBytes("ISO-8859-1"));
+                }
             }
         }
         else
         {
-            if(!header.matches(FDF_HEADER + "\\d.\\d"))
+            if (!header.matches(FDF_HEADER + "\\d.\\d"))
             {
-                String headerGarbage = header.substring(FDF_HEADER.length()+3, header.length()) + "\n";
-                header = header.substring(0, FDF_HEADER.length()+3);
-                pdfSource.unread(headerGarbage.getBytes("ISO-8859-1"));
+                if (header.length() < FDF_HEADER.length() + 3)
+                {
+                    // No version number at all, set to 1.0 as default
+                    header = FDF_HEADER + FDF_DEFAULT_VERSION;
+                    LOG.debug("No fdf version found, set to " + FDF_DEFAULT_VERSION + " as default.");
+                }
+                else
+                {
+                    String headerGarbage = header.substring(FDF_HEADER.length() + 3, header.length()) + "\n";
+                    header = header.substring(0, FDF_HEADER.length() + 3);
+                    pdfSource.unread(headerGarbage.getBytes("ISO-8859-1"));
+                }
             }
         }
         document.setHeaderString(header);