in pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotation.java [106:168]
public static PDAnnotation createAnnotation(COSBase base) throws IOException
{
if (base instanceof COSDictionary)
{
COSDictionary annotDic = (COSDictionary) base;
String subtype = annotDic.getNameAsString(COSName.SUBTYPE);
if (null == subtype)
{
LOG.debug("Unknown annotation subtype");
return new PDAnnotationUnknown(annotDic);
}
switch (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);
}
}