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 17:55:40 UTC
svn commit: r1767747 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: tilman
Date: Wed Nov 2 17:55:40 2016
New Revision: 1767747
URL: http://svn.apache.org/viewvc?rev=1767747&view=rev
Log:
PDFBOX-3552: update ByteRange COSArray so that users can access the actual values before closing
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1767747&r1=1767746&r2=1767747&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Wed Nov 2 17:55:40 2016
@@ -218,6 +218,7 @@ public class COSWriter implements ICOSVi
private OutputStream incrementalOutput;
private SignatureInterface signatureInterface;
private byte[] incrementPart;
+ private COSArray byteRangeArray;
/**
* COSWriter constructor comment.
@@ -693,6 +694,13 @@ public class COSWriter implements ICOSVi
long afterLength = getStandardOutput().getPos() - (inLength + signatureLength) - (signatureOffset - inLength);
String byteRange = "0 " + beforeLength + " " + afterOffset + " " + afterLength + "]";
+
+ // Assign the values to the actual COSArray, so that the user can access it before closing
+ byteRangeArray.set(0, COSInteger.ZERO);
+ byteRangeArray.set(1, COSInteger.get(beforeLength));
+ byteRangeArray.set(2, COSInteger.get(afterOffset));
+ byteRangeArray.set(3, COSInteger.get(afterLength));
+
if (byteRangeLength - byteRange.length() < 0)
{
throw new IOException("Can't write new ByteRange, not enough space");
@@ -1042,6 +1050,7 @@ public class COSWriter implements ICOSVi
}
else if(reachedSignature && COSName.BYTERANGE.equals(entry.getKey()))
{
+ byteRangeArray = (COSArray) entry.getValue();
byteRangeOffset = getStandardOutput().getPos() + 1;
value.accept(this);
byteRangeLength = getStandardOutput().getPos() - 1 - byteRangeOffset;