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 2021/05/31 06:23:37 UTC
svn commit: r1890334 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi
Date: Mon May 31 06:23:36 2021
New Revision: 1890334
URL: http://svn.apache.org/viewvc?rev=1890334&view=rev
Log:
PDFBOX-5170: avoid mixing up cross reference tables with cross reference streams
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1890334&r1=1890333&r2=1890334&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon May 31 06:23:36 2021
@@ -703,9 +703,9 @@ public class COSWriter implements ICOSVi
trailer.accept(this);
}
- private void doWriteXRefInc(COSDocument doc, long hybridPrev) throws IOException
+ private void doWriteXRefInc(COSDocument doc, boolean hasHybridXRef) throws IOException
{
- if (doc.isXRefStream() || hybridPrev != -1)
+ if (doc.isXRefStream() || hasHybridXRef)
{
// the file uses XrefStreams, so we need to update
// it with an xref stream. We create a new one and fill it
@@ -736,12 +736,11 @@ public class COSWriter implements ICOSVi
COSStream stream2 = pdfxRefStream.getStream();
doWriteObject(stream2);
}
-
- if (!doc.isXRefStream() || hybridPrev != -1)
+ else
{
COSDictionary trailer = doc.getTrailer();
trailer.setLong(COSName.PREV, doc.getStartXref());
- if (hybridPrev != -1)
+ if (hasHybridXRef)
{
trailer.removeItem(COSName.XREF_STM);
trailer.setLong(COSName.XREF_STM, getStartxref());
@@ -1296,16 +1295,16 @@ public class COSWriter implements ICOSVi
// get the previous trailer
COSDictionary trailer = doc.getTrailer();
- long hybridPrev = -1;
+ boolean hasHybridXRef = false;
if (trailer != null)
{
- hybridPrev = trailer.getLong(COSName.XREF_STM);
+ hasHybridXRef = trailer.getLong(COSName.XREF_STM) != -1;
}
if(incrementalUpdate || doc.isXRefStream())
{
- doWriteXRefInc(doc, hybridPrev);
+ doWriteXRefInc(doc, hasHybridXRef);
}
else
{