All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sejda.sambox.pdmodel.interactive.annotation.PDAnnotationWidget Maven / Gradle / Ivy

Go to download

An Apache PDFBox fork intended to be used as PDF processor for Sejda and PDFsam related projects

There is a newer version: 3.0.21
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.sejda.sambox.pdmodel.interactive.annotation;

import static java.util.Objects.nonNull;

import org.sejda.sambox.cos.COSDictionary;
import org.sejda.sambox.cos.COSName;
import org.sejda.sambox.pdmodel.interactive.action.PDAction;
import org.sejda.sambox.pdmodel.interactive.action.PDActionFactory;
import org.sejda.sambox.pdmodel.interactive.action.PDAnnotationAdditionalActions;

/**
 * This is the class that represents a widget.
 *
 * @author Ben Litchfield
 */
public class PDAnnotationWidget extends PDAnnotation
{
    public PDAnnotationWidget()
    {
        getCOSObject().setName(COSName.SUBTYPE, COSName.WIDGET.getName());
    }

    public PDAnnotationWidget(COSDictionary field)
    {
        super(field);
        getCOSObject().setName(COSName.SUBTYPE, COSName.WIDGET.getName());
    }

    /**
     * Returns the highlighting mode. Default value: I
     * 
*
N
*
(None) No highlighting.
*
I
*
(Invert) Invert the contents of the annotation rectangle.
*
O
*
(Outline) Invert the annotation's border.
*
P
*
(Push) Display the annotation's down appearance, if any. If no down appearance is defined, the contents of * the annotation rectangle shall be offset to appear as if it were pushed below the surface of the page
*
T
*
(Toggle) Same as P (which is preferred).
*
* * @return the highlighting mode */ public String getHighlightingMode() { return this.getCOSObject().getNameAsString(COSName.H, "I"); } /** * Sets the highlighting mode. *
*
N
*
(None) No highlighting.
*
I
*
(Invert) Invert the contents of the annotation rectangle.
*
O
*
(Outline) Invert the annotation's border.
*
P
*
(Push) Display the annotation's down appearance, if any. If no down appearance is defined, the contents of * the annotation rectangle shall be offset to appear as if it were pushed below the surface of the page
*
T
*
(Toggle) Same as P (which is preferred).
*
* * @param highlightingMode the highlighting mode the defined values */ public void setHighlightingMode(String highlightingMode) { if ((highlightingMode == null) || "N".equals(highlightingMode) || "I".equals(highlightingMode) || "O".equals(highlightingMode) || "P".equals(highlightingMode) || "T".equals(highlightingMode)) { this.getCOSObject().setName(COSName.H, highlightingMode); } else { throw new IllegalArgumentException( "Valid values for highlighting mode are " + "'N', 'N', 'O', 'P' or 'T'"); } } /** * Returns the appearance characteristics dictionary. * * @return the appearance characteristics dictionary */ public PDAppearanceCharacteristicsDictionary getAppearanceCharacteristics() { COSDictionary mk = this.getCOSObject().getDictionaryObject(COSName.MK, COSDictionary.class); if (nonNull(mk)) { return new PDAppearanceCharacteristicsDictionary(mk); } return null; } /** * Sets the appearance characteristics dictionary. * * @param appearanceCharacteristics the appearance characteristics dictionary */ public void setAppearanceCharacteristics( PDAppearanceCharacteristicsDictionary appearanceCharacteristics) { this.getCOSObject().setItem(COSName.MK, appearanceCharacteristics); } /** * Get the action to be performed when this annotation is to be activated. * * @return The action to be performed when this annotation is activated. */ public PDAction getAction() { return PDActionFactory .createAction((COSDictionary) this.getCOSObject().getDictionaryObject(COSName.A)); } /** * Set the annotation action. As of PDF 1.6 this is only used for Widget Annotations * * @param action The annotation action. */ public void setAction(PDAction action) { this.getCOSObject().setItem(COSName.A, action); } /** * Get the additional actions for this field. This will return null if there are no additional actions for this * field. As of PDF 1.6 this is only used for Widget Annotations. * * @return The actions of the field. */ public PDAnnotationAdditionalActions getActions() { COSDictionary aa = (COSDictionary) this.getCOSObject().getDictionaryObject("AA"); if (aa != null) { return new PDAnnotationAdditionalActions(aa); } return null; } /** * Set the actions of the field. * * @param actions The field actions. */ public void setActions(PDAnnotationAdditionalActions actions) { this.getCOSObject().setItem("AA", actions); } /** * This will set the border style dictionary, specifying the width and dash pattern used in drawing the line. * * @param bs the border style dictionary to set. * */ public void setBorderStyle(PDBorderStyleDictionary bs) { this.getCOSObject().setItem("BS", bs); } /** * This will retrieve the border style dictionary, specifying the width and dash pattern used in drawing the line. * * @return the border style dictionary. */ public PDBorderStyleDictionary getBorderStyle() { COSDictionary bs = this.getCOSObject().getDictionaryObject(COSName.BS, COSDictionary.class); if (bs != null) { return new PDBorderStyleDictionary(bs); } return null; } // TODO where to get acroForm from? // public PDField getParent() throws IOException // { // COSBase parent = this.getCOSObject().getDictionaryObject(COSName.PARENT); // if (parent instanceof COSDictionary) // { // PDAcroForm acroForm = null; // return PDFieldFactory.createField(acroForm, (COSDictionary) parent); // } // return null; // } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy