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 2023/12/20 11:59:33 UTC
svn commit: r1914796 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java
Author: tilman
Date: Wed Dec 20 11:59:33 2023
New Revision: 1914796
URL: http://svn.apache.org/viewvc?rev=1914796&view=rev
Log:
PDFBOX-5660: use switch
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java?rev=1914796&r1=1914795&r2=1914796&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java Wed Dec 20 11:59:33 2023
@@ -99,107 +99,72 @@ public abstract class PDAnnotation imple
* Create the correct annotation from the base COS object.
*
* @param base The COS object that is the annotation.
- * @return The correctly typed annotation object.
+ * @return The correctly typed annotation object, never null.
*
* @throws IOException If the annotation type is unknown.
*/
public static PDAnnotation createAnnotation(COSBase base) throws IOException
{
- PDAnnotation annot = null;
if (base instanceof COSDictionary)
{
COSDictionary annotDic = (COSDictionary) base;
String subtype = annotDic.getNameAsString(COSName.SUBTYPE);
- if (PDAnnotationFileAttachment.SUB_TYPE.equals(subtype))
+ if (null == subtype)
{
- annot = new PDAnnotationFileAttachment(annotDic);
+ LOG.debug("Unknown annotation subtype");
+ return new PDAnnotationUnknown(annotDic);
}
- else if (PDAnnotationLine.SUB_TYPE.equals(subtype))
+ switch (subtype)
{
- annot = new PDAnnotationLine(annotDic);
- }
- else if (PDAnnotationLink.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationLink(annotDic);
- }
- else if (PDAnnotationPopup.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationPopup(annotDic);
- }
- else if (PDAnnotationRubberStamp.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationRubberStamp(annotDic);
- }
- else if (PDAnnotationSquare.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationSquare(annotDic);
- }
- else if (PDAnnotationCircle.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationCircle(annotDic);
- }
- else if (PDAnnotationPolygon.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationPolygon(annotDic);
- }
- else if (PDAnnotationPolyline.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationPolyline(annotDic);
- }
- else if (PDAnnotationInk.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationInk(annotDic);
- }
- else if (PDAnnotationText.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationText(annotDic);
- }
- else if (PDAnnotationHighlight.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationHighlight(annotDic);
- }
- else if (PDAnnotationUnderline.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationUnderline(annotDic);
- }
- else if (PDAnnotationStrikeout.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationStrikeout(annotDic);
- }
- else if (PDAnnotationSquiggly.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationSquiggly(annotDic);
- }
- else if (PDAnnotationWidget.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationWidget(annotDic);
- }
- else if (PDAnnotationFreeText.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationFreeText(annotDic);
- }
- else if (PDAnnotationCaret.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationCaret(annotDic);
- }
- else if (PDAnnotationSound.SUB_TYPE.equals(subtype))
- {
- annot = new PDAnnotationSound(annotDic);
- }
- else
- {
- // TODO not yet implemented:
- // Movie, Screen, PrinterMark, TrapNet, Watermark, 3D, Redact
- annot = new PDAnnotationUnknown(annotDic);
- LOG.debug("Unknown or unsupported annotation subtype {}", subtype);
+ case PDAnnotationFileAttachment.SUB_TYPE:
+ return new PDAnnotationFileAttachment(annotDic);
+ case PDAnnotationLine.SUB_TYPE:
+ return new PDAnnotationLine(annotDic);
+ case PDAnnotationLink.SUB_TYPE:
+ return new PDAnnotationLink(annotDic);
+ case PDAnnotationPopup.SUB_TYPE:
+ return new PDAnnotationPopup(annotDic);
+ case PDAnnotationRubberStamp.SUB_TYPE:
+ return new PDAnnotationRubberStamp(annotDic);
+ case PDAnnotationSquare.SUB_TYPE:
+ return new PDAnnotationSquare(annotDic);
+ case PDAnnotationCircle.SUB_TYPE:
+ return new PDAnnotationCircle(annotDic);
+ case PDAnnotationPolygon.SUB_TYPE:
+ return new PDAnnotationPolygon(annotDic);
+ case PDAnnotationPolyline.SUB_TYPE:
+ return new PDAnnotationPolyline(annotDic);
+ case PDAnnotationInk.SUB_TYPE:
+ return new PDAnnotationInk(annotDic);
+ case PDAnnotationText.SUB_TYPE:
+ return new PDAnnotationText(annotDic);
+ case PDAnnotationHighlight.SUB_TYPE:
+ return new PDAnnotationHighlight(annotDic);
+ case PDAnnotationUnderline.SUB_TYPE:
+ return new PDAnnotationUnderline(annotDic);
+ case PDAnnotationStrikeout.SUB_TYPE:
+ return new PDAnnotationStrikeout(annotDic);
+ case PDAnnotationSquiggly.SUB_TYPE:
+ return new PDAnnotationSquiggly(annotDic);
+ case PDAnnotationWidget.SUB_TYPE:
+ return new PDAnnotationWidget(annotDic);
+ case PDAnnotationFreeText.SUB_TYPE:
+ return new PDAnnotationFreeText(annotDic);
+ case PDAnnotationCaret.SUB_TYPE:
+ return new PDAnnotationCaret(annotDic);
+ case PDAnnotationSound.SUB_TYPE:
+ return new PDAnnotationSound(annotDic);
+ default:
+ // TODO not yet implemented:
+ // Movie, Screen, PrinterMark, TrapNet, Watermark, 3D, Redact
+ LOG.debug("Unknown or unsupported annotation subtype {}", subtype);
+ return new PDAnnotationUnknown(annotDic);
}
}
else
{
throw new IOException("Error: Unknown annotation type " + base);
}
-
- return annot;
}
/**
@@ -418,6 +383,7 @@ public abstract class PDAnnotation imple
}
else
{
+// PDAppearanceStream extends PDFormXObject, but does not reference the resource cache
return normalAppearance.getAppearanceStream();
}
}