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 2022/09/28 07:03:18 UTC
svn commit: r1904318 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: tilman
Date: Wed Sep 28 07:03:18 2022
New Revision: 1904318
URL: http://svn.apache.org/viewvc?rev=1904318&view=rev
Log:
PDFBOX-5521: refactor
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=1904318&r1=1904317&r2=1904318&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 Wed Sep 28 07:03:18 2022
@@ -1156,33 +1156,7 @@ public class COSWriter implements ICOSVi
@Override
public void visitFromDictionary(COSDictionary obj) throws IOException
{
- if (!reachedSignature && incrementalUpdate)
- {
- COSBase itemType = obj.getItem(COSName.TYPE);
- if (COSName.SIG.equals(itemType) || COSName.DOC_TIME_STAMP.equals(itemType))
- {
- COSArray byteRange = obj.getCOSArray(COSName.BYTERANGE);
- if (byteRange != null && byteRange.size() == 4)
- {
- COSBase base2 = byteRange.get(2);
- COSBase base3 = byteRange.get(3);
- if (base2 instanceof COSInteger && base3 instanceof COSInteger)
- {
- long br2 = ((COSInteger) base2).longValue();
- long br3 = ((COSInteger) base3).longValue();
- if (br2 + br3 > incrementalInput.length())
- {
- reachedSignature = true;
- }
- else
- {
- LOG.warn("An existing signature is part of incremental saving near offset " +
- getStandardOutput().getPos());
- }
- }
- }
- }
- }
+ detectPossibleSignature(obj);
getStandardOutput().write(DICT_OPEN);
getStandardOutput().writeEOL();
for (Map.Entry<COSName, COSBase> entry : obj.entrySet())
@@ -1267,6 +1241,37 @@ public class COSWriter implements ICOSVi
getStandardOutput().writeEOL();
}
+ private void detectPossibleSignature(COSDictionary obj) throws IOException
+ {
+ if (!reachedSignature && incrementalUpdate)
+ {
+ COSBase itemType = obj.getItem(COSName.TYPE);
+ if (COSName.SIG.equals(itemType) || COSName.DOC_TIME_STAMP.equals(itemType))
+ {
+ COSArray byteRange = obj.getCOSArray(COSName.BYTERANGE);
+ if (byteRange != null && byteRange.size() == 4)
+ {
+ COSBase base2 = byteRange.get(2);
+ COSBase base3 = byteRange.get(3);
+ if (base2 instanceof COSInteger && base3 instanceof COSInteger)
+ {
+ long br2 = ((COSInteger) base2).longValue();
+ long br3 = ((COSInteger) base3).longValue();
+ if (br2 + br3 > incrementalInput.length())
+ {
+ reachedSignature = true;
+ }
+ else
+ {
+ LOG.warn("An existing signature is part of incremental saving near offset " +
+ getStandardOutput().getPos());
+ }
+ }
+ }
+ }
+ }
+ }
+
@Override
public void visitFromDocument(COSDocument doc) throws IOException
{