Skip to content

Commit 67b38e7

Browse files
committed
Fix serialization issue. currentPos was not correctly serialized and consequently startxref was wrong for copied documents
1 parent 100a6ca commit 67b38e7

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

io/src/main/java/com/itextpdf/io/source/OutputStream.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ This file is part of the iText (R) project.
4646

4747
import com.itextpdf.io.IOException;
4848

49-
public class OutputStream<T extends java.io.OutputStream> extends java.io.OutputStream {
49+
import java.io.Serializable;
50+
51+
public class OutputStream<T extends java.io.OutputStream> extends java.io.OutputStream implements Serializable {
52+
53+
private static final long serialVersionUID = -5337390096148526418L;
5054

5155
//long=19 + max frac=6 => 26 => round to 32.
5256
private final ByteBuffer numBuffer = new ByteBuffer(32);
@@ -233,4 +237,22 @@ public void reset() {
233237
} else
234238
throw new IOException(IOException.BytesCanBeResetInByteArrayOutputStreamOnly);
235239
}
240+
241+
/**
242+
* This method is invoked while deserialization
243+
*/
244+
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
245+
in.defaultReadObject();
246+
}
247+
248+
/**
249+
* This method is invoked while serialization
250+
*/
251+
private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
252+
java.io.OutputStream tempOutputStream = outputStream;
253+
outputStream = null;
254+
out.defaultWriteObject();
255+
outputStream = tempOutputStream;
256+
}
257+
236258
}

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputStream.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ This file is part of the iText (R) project.
5252
import com.itextpdf.kernel.PdfException;
5353
import com.itextpdf.kernel.crypto.OutputStreamEncryption;
5454
import com.itextpdf.kernel.pdf.filters.FlateDecodeFilter;
55-
import org.slf4j.Logger;
56-
import org.slf4j.LoggerFactory;
5755

5856
import java.io.IOException;
59-
import java.io.Serializable;
6057
import java.text.MessageFormat;
6158
import java.util.Map;
6259

63-
public class PdfOutputStream extends OutputStream<PdfOutputStream> implements Serializable{
60+
import org.slf4j.Logger;
61+
import org.slf4j.LoggerFactory;
62+
63+
public class PdfOutputStream extends OutputStream<PdfOutputStream> {
6464

6565
private static final long serialVersionUID = -548180479472231600L;
6666

0 commit comments

Comments
 (0)