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 2021/04/23 13:22:39 UTC
svn commit: r1889129 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Author: lehmi
Date: Fri Apr 23 13:22:39 2021
New Revision: 1889129
URL: http://svn.apache.org/viewvc?rev=1889129&view=rev
Log:
PDFBOX-4892: DRY refactoring
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=1889129&r1=1889128&r2=1889129&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 Fri Apr 23 13:22:39 2021
@@ -313,6 +313,7 @@ public class COSParser extends BaseParse
long prev = startXrefOffset;
// ---- parse whole chain of xref tables/object streams using PREV reference
Set<Long> prevSet = new HashSet<Long>();
+ COSDictionary trailer = null;
while (prev > 0)
{
// seek to xref table
@@ -330,7 +331,7 @@ public class COSParser extends BaseParse
throw new IOException("Expected trailer object at offset "
+ source.getPosition());
}
- COSDictionary trailer = xrefTrailerResolver.getCurrentTrailer();
+ trailer = xrefTrailerResolver.getCurrentTrailer();
// check for a XRef stream, it may contain some object ids of compressed objects
if(trailer.containsKey(COSName.XREF_STM))
{
@@ -376,31 +377,21 @@ public class COSParser extends BaseParse
}
}
prev = trailer.getLong(COSName.PREV);
- if (prev > 0)
- {
- // check the xref table reference
- fixedOffset = checkXRefOffset(prev);
- if (fixedOffset > -1 && fixedOffset != prev)
- {
- prev = fixedOffset;
- trailer.setLong(COSName.PREV, prev);
- }
- }
}
else
{
// parse xref stream
prev = parseXrefObjStream(prev, true);
- if (prev > 0)
+ trailer = xrefTrailerResolver.getCurrentTrailer();
+ }
+ if (prev > 0)
+ {
+ // check the xref table reference
+ fixedOffset = checkXRefOffset(prev);
+ if (fixedOffset > -1 && fixedOffset != prev)
{
- // check the xref table reference
- fixedOffset = checkXRefOffset(prev);
- if (fixedOffset > -1 && fixedOffset != prev)
- {
- prev = fixedOffset;
- COSDictionary trailer = xrefTrailerResolver.getCurrentTrailer();
- trailer.setLong(COSName.PREV, prev);
- }
+ prev = fixedOffset;
+ trailer.setLong(COSName.PREV, prev);
}
}
if (prevSet.contains(prev))
@@ -411,7 +402,7 @@ public class COSParser extends BaseParse
}
// ---- build valid xrefs out of the xref chain
xrefTrailerResolver.setStartxref(startXrefOffset);
- COSDictionary trailer = xrefTrailerResolver.getTrailer();
+ trailer = xrefTrailerResolver.getTrailer();
document.setTrailer(trailer);
document.setIsXRefStream(XRefType.STREAM == xrefTrailerResolver.getXrefType());
// check the offsets of all referenced objects