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 2016/11/02 16:49:36 UTC
svn commit: r1767730 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Author: tilman
Date: Wed Nov 2 16:49:36 2016
New Revision: 1767730
URL: http://svn.apache.org/viewvc?rev=1767730&view=rev
Log:
PDFBOX-3546: catch exception and skip incorrect XRefStm
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1767730&r1=1767729&r2=1767730&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Wed Nov 2 16:49:36 2016
@@ -249,6 +249,7 @@ public class COSParser extends BaseParse
fixedOffset = checkXRefStreamOffset(streamOffset, false);
if (fixedOffset > -1 && fixedOffset != streamOffset)
{
+ LOG.warn("/XRefStm offset " + streamOffset + " is incorrect, corrected to " + fixedOffset);
streamOffset = (int)fixedOffset;
trailer.setInt(COSName.XREF_STM, streamOffset);
}
@@ -256,7 +257,21 @@ public class COSParser extends BaseParse
{
source.seek(streamOffset);
skipSpaces();
- parseXrefObjStream(prev, false);
+ try
+ {
+ parseXrefObjStream(prev, false);
+ }
+ catch (IOException ex)
+ {
+ if (isLenient)
+ {
+ LOG.error("Failed to parse /XRefStm at offset " + streamOffset, ex);
+ }
+ else
+ {
+ throw ex;
+ }
+ }
}
else
{