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 2017/09/30 14:14:30 UTC
svn commit: r1810207 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Author: lehmi
Date: Sat Sep 30 14:14:30 2017
New Revision: 1810207
URL: http://svn.apache.org/viewvc?rev=1810207&view=rev
Log:
PDFBOX-3935: remove all object keys instead of just replacing the existing ones
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1810207&r1=1810206&r2=1810207&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Sat Sep 30 14:14:30 2017
@@ -1371,54 +1371,8 @@ public class COSParser extends BaseParse
Map<COSObjectKey, Long> bfCOSObjectKeyOffsets = getBFCOSObjectOffsets();
if (!bfCOSObjectKeyOffsets.isEmpty())
{
- List<COSObjectKey> objStreams = new ArrayList<>();
- // find all object streams
- for (Entry<COSObjectKey, Long> entry : xrefOffset.entrySet())
- {
- Long offset = entry.getValue();
- if (offset != null && offset < 0)
- {
- COSObjectKey objStream = new COSObjectKey(-offset, 0);
- if (!objStreams.contains(objStream))
- {
- objStreams.add(new COSObjectKey(-offset, 0));
- }
- }
- }
- // remove all found object streams
- if (!objStreams.isEmpty())
- {
- for (COSObjectKey key : objStreams)
- {
- if (bfCOSObjectKeyOffsets.containsKey(key))
- {
- // remove all parsed objects which are part of an object stream
- Set<Long> objects = xrefTrailerResolver
- .getContainedObjectNumbers((int) (key.getNumber()));
- for (Long objNr : objects)
- {
- COSObjectKey streamObjectKey = new COSObjectKey(objNr, 0);
- Long streamObjectOffset = bfCOSObjectKeyOffsets
- .get(streamObjectKey);
- if (streamObjectOffset != null && streamObjectOffset > 0)
- {
- bfCOSObjectKeyOffsets.remove(streamObjectKey);
- }
- }
- }
- else
- {
- // remove all objects which are part of an object stream which wasn't found
- Set<Long> objects = xrefTrailerResolver
- .getContainedObjectNumbers((int) (key.getNumber()));
- for (Long objNr : objects)
- {
- xrefOffset.remove(new COSObjectKey(objNr, 0));
- }
- }
- }
- }
LOG.debug("Replaced read xref table with the results of a brute force search");
+ xrefOffset.clear();
xrefOffset.putAll(bfCOSObjectKeyOffsets);
}
}