Author: lehmi
Date: Sat Mar  9 13:41:35 2024
New Revision: 1916199

URL: http://svn.apache.org/viewvc?rev=1916199&view=rev
Log:
PDFBOX-5783: remove duplicate filter list entries instead of throwing an 
exception

Modified:
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java?rev=1916199&r1=1916198&r2=1916199&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java
 Sat Mar  9 13:41:35 2024
@@ -28,6 +28,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.filter.DecodeOptions;
 import org.apache.pdfbox.filter.DecodeResult;
 import org.apache.pdfbox.filter.Filter;
@@ -43,6 +45,8 @@ import org.apache.pdfbox.io.ScratchFile;
  */
 public final class COSInputStream extends FilterInputStream
 {
+    private static final Log LOG = LogFactory.getLog(COSInputStream.class);
+    
     /**
      * Creates a new COSInputStream from an encoded input stream.
      *
@@ -74,7 +78,17 @@ public final class COSInputStream extend
             Set<Filter> filterSet = new HashSet<Filter>(filters);
             if (filterSet.size() != filters.size())
             {
-                throw new IOException("Duplicate");
+                List<Filter> reducedFilterList = new ArrayList<Filter>();
+                for (Filter filter : filters)
+                {
+                    if (!reducedFilterList.contains(filter))
+                    {
+                        reducedFilterList.add(filter);
+                    }
+                }
+                // replace origin list with the reduced one
+                filters = reducedFilterList;
+                LOG.warn("Removed duplicated filter entries");
             }
         }
         // apply filters


Reply via email to