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 2022/02/28 15:58:00 UTC
svn commit: r1898481 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java
Author: lehmi
Date: Mon Feb 28 15:57:59 2022
New Revision: 1898481
URL: http://svn.apache.org/viewvc?rev=1898481&view=rev
Log:
PDFBOX-5286: add all indirect objects, simplify
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java?rev=1898481&r1=1898480&r2=1898481&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java Mon Feb 28 15:57:59 2022
@@ -109,10 +109,10 @@ public class COSWriterCompressionPool
// It shall never contain the document's root dictionary. (relevant for document encryption)
// It shall never contain other streams.
if ((key != null && key.getGeneration() != 0)
+ || base instanceof COSStream
|| (document.getEncryption() != null
&& base == document.getEncryption().getCOSObject())
- || base == this.document.getDocument().getTrailer().getCOSDictionary(COSName.ROOT)
- || base instanceof COSStream)
+ || base == this.document.getDocument().getTrailer().getCOSDictionary(COSName.ROOT))
{
COSObjectKey actualKey = objectPool.put(key, base);
if (actualKey == null)
@@ -141,29 +141,22 @@ public class COSWriterCompressionPool
* @param traversedObject A Collection of all objects, that have already been traversed, to avoid cycles.
* @throws IOException Shall be thrown, if compressing the object failed.
*/
- private COSBase addStructure(TraversedCOSElement traversedObject) throws IOException
+ private void addStructure(TraversedCOSElement traversedObject) throws IOException
{
COSBase current = traversedObject.getCurrentObject();
COSBase base = current;
- COSBase retVal = current;
-
if (current instanceof COSStream
|| (current instanceof COSDictionary && !current.isDirect()))
{
base = addObjectToPool(base.getKey(), traversedObject);
- retVal = base;
}
else if (current instanceof COSObject)
{
base = ((COSObject) current).getObject();
- if (base instanceof COSDictionary || base instanceof COSArray)
+ if (base != null)
{
base = addObjectToPool(current.getKey(), traversedObject);
}
- else
- {
- retVal = base;
- }
}
if (base instanceof COSArray)
@@ -174,7 +167,6 @@ public class COSWriterCompressionPool
{
addCOSDictionary(traversedObject, (COSDictionary) base);
}
- return retVal;
}
private void addCOSArray(TraversedCOSElement traversedObject, COSArray array) throws IOException