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/08/21 00:29:03 UTC
svn commit: r1619255 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
Author: tilman
Date: Wed Aug 20 22:29:03 2014
New Revision: 1619255
URL: http://svn.apache.org/r1619255
Log:
PDFBOX-2250: skip empty xref table followed by trailer
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=1619255&r1=1619254&r2=1619255&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 Wed Aug 20 22:29:03 2014
@@ -312,10 +312,10 @@ public class PDFParser extends BaseParse
// read first line
String header = readLine();
// some pdf-documents are broken and the pdf-version is in one of the following lines
- if ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1))
+ if (!header.contains(PDF_HEADER) && !header.contains(FDF_HEADER))
{
header = readLine();
- while ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1))
+ while (!header.contains(PDF_HEADER) && !header.contains(FDF_HEADER))
{
// if a line starts with a digit, it has to be the first one with data in it
if ((header.length() > 0) && (Character.isDigit(header.charAt(0))))
@@ -733,7 +733,17 @@ public class PDFParser extends BaseParse
{
return false;
}
-
+
+ // check for trailer after xref
+ String str = readString();
+ byte[] b = str.getBytes("ISO-8859-1");
+ pdfSource.unread(b, 0, b.length);
+ if (str.startsWith("trailer"))
+ {
+ LOG.warn("skipping empty xref table");
+ return false;
+ }
+
// signal start of new XRef
xrefTrailerResolver.nextXrefObj( startByteOffset, XRefType.TABLE );