Author: tilman
Date: Sat Sep 20 16:44:38 2025
New Revision: 1928645
Log:
PDFBOX-6073: Add option to implement custom ICOSVisitor behaviour for COSObject
as suggested by jp-db; closes #255
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
Sat Sep 20 12:10:02 2025 (r1928644)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java
Sat Sep 20 16:44:38 2025 (r1928645)
@@ -160,15 +160,7 @@ public class COSObject extends COSBase i
@Override
public void accept( ICOSVisitor visitor ) throws IOException
{
- COSBase object = getObject();
- if (object != null)
- {
- object.accept(visitor);
- }
- else
- {
- COSNull.NULL.accept(visitor);
- }
+ visitor.visitFromObject(this);
}
/**
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
Sat Sep 20 12:10:02 2025 (r1928644)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/ICOSVisitor.java
Sat Sep 20 16:44:38 2025 (r1928645)
@@ -104,4 +104,12 @@ public interface ICOSVisitor
* @throws IOException If there is an error while visiting this object.
*/
void visitFromString(COSString obj) throws IOException;
+
+ /**
+ * Notification of visit to object.
+ *
+ * @param obj The Object that is being visited.
+ * @throws IOException If there is an error while visiting this object.
+ */
+ void visitFromObject(COSObject obj) throws IOException;
}
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Sat Sep 20 12:10:02 2025 (r1928644)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Sat Sep 20 16:44:38 2025 (r1928645)
@@ -1447,6 +1447,20 @@ public class COSWriter implements ICOSVi
}
}
+ @Override
+ public void visitFromObject(COSObject obj) throws IOException
+ {
+ COSBase base = obj.getObject();
+ if (base == null)
+ {
+ visitFromNull(COSNull.NULL);
+ }
+ else
+ {
+ base.accept(this);
+ }
+ }
+
/**
* This will write the pdf document.
*