public static PDAnnotation createAnnotation()

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);
        }
    }