You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/05/26 12:04:30 UTC

svn commit: r1597548 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser: NonSequentialPDFParser.java PDFParser.java

Author: tilman
Date: Mon May 26 10:04:30 2014
New Revision: 1597548

URL: http://svn.apache.org/r1597548
Log:
PDFBOX-1739: skip extra xref entries in RegisSTAR documents

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1597548&r1=1597547&r2=1597548&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Mon May 26 10:04:30 2014
@@ -83,15 +83,9 @@ import org.apache.pdfbox.persistence.uti
  */
 public class NonSequentialPDFParser extends PDFParser
 {
-    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";
-
-	private static final byte[] XREF = new byte[] { 'x', 'r', 'e', 'f' };
+    private static final byte[] XREF = new byte[] { 'x', 'r', 'e', 'f' };
 
-	private static final int E = 'e';
+    private static final int E = 'e';
     private static final int N = 'n';
     private static final int X = 'x';
 
@@ -362,6 +356,17 @@ public class NonSequentialPDFParser exte
                 // use existing parser to parse xref table
                 parseXrefTable(prev);
                 // parse the last trailer.
+                long trailerOffset = pdfSource.getOffset();
+                //PDFBOX-1739 skip extra xref entries in RegisSTAR documents
+                while (isLenient && pdfSource.peek() != 't')
+                {
+                    if (pdfSource.getOffset() == trailerOffset)
+                    {
+                        // warn only the first time
+                        LOG.warn("Expected trailer object at position " + trailerOffset + ", keep trying");
+                    }
+                    readLine();
+                }
                 if (!parseTrailer())
                 {
                     throw new IOException("Expected trailer object at position: " + pdfSource.getOffset());

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java?rev=1597548&r1=1597547&r2=1597548&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java Mon May 26 10:04:30 2014
@@ -748,6 +748,10 @@ public class PDFParser extends BaseParse
         {
             long currObjID = readObjectNumber(); // first obj id
             long count = readLong(); // the number of objects in the xref table
+            if (count == 0)
+            {
+                LOG.warn("Count in xref table is 0 at offset " + pdfSource.getOffset());
+            }
             skipSpaces();
             for(int i = 0; i < count; i++)
             {