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

com.lowagie.text.pdf.collection.PdfCollectionField Maven / Gradle / Ivy

There is a newer version: 1.2.2.1-jre17
Show newest version
package com.lowagie.text.pdf.collection;

import com.lowagie.text.pdf.PdfBoolean;
import com.lowagie.text.pdf.PdfDate;
import com.lowagie.text.pdf.PdfDictionary;
import com.lowagie.text.pdf.PdfName;
import com.lowagie.text.pdf.PdfNumber;
import com.lowagie.text.pdf.PdfObject;
import com.lowagie.text.pdf.PdfString;
import com.lowagie.text.error_messages.MessageLocalization;

/**
 * @author blowagie
 *
 */
public class PdfCollectionField extends PdfDictionary {
    /** A possible type of collection field. */
    public static final int TEXT = 0;
    /** A possible type of collection field. */
    public static final int DATE = 1;
    /** A possible type of collection field. */
    public static final int NUMBER = 2;
    /** A possible type of collection field. */
    public static final int FILENAME = 3;
    /** A possible type of collection field. */
    public static final int DESC = 4;
    /** A possible type of collection field. */
    public static final int MODDATE = 5;
    /** A possible type of collection field. */
    public static final int CREATIONDATE = 6;
    /** A possible type of collection field. */
    public static final int SIZE = 7;
    
    /**
     * The type of the PDF collection field.
     * @since 2.1.2 (was called type previously)
     */
    protected int fieldType;

    /**
     * Creates a PdfCollectionField.
     * @param name        the field name
     * @param type        the field type
     */
    public PdfCollectionField(String name, int type) {
        super(PdfName.COLLECTIONFIELD);
        put(PdfName.N, new PdfString(name, PdfObject.TEXT_UNICODE));
        this.fieldType = type;
        switch(type) {
        default:
            put(PdfName.SUBTYPE, PdfName.S);
            break;
        case DATE:
            put(PdfName.SUBTYPE, PdfName.D);
            break;
        case NUMBER:
            put(PdfName.SUBTYPE, PdfName.N);
            break;
        case FILENAME:
            put(PdfName.SUBTYPE, PdfName.F);
            break;
        case DESC:
            put(PdfName.SUBTYPE, PdfName.DESC);
            break;
        case MODDATE:
            put(PdfName.SUBTYPE, PdfName.MODDATE);
            break;
        case CREATIONDATE:
            put(PdfName.SUBTYPE, PdfName.CREATIONDATE);
            break;
        case SIZE:
            put(PdfName.SUBTYPE, PdfName.SIZE);
            break;
        }
    }
    
    /**
     * The relative order of the field name. Fields are sorted in ascending order.
     * @param i    a number indicating the order of the field
     */
    public void setOrder(int i) {
        put(PdfName.O, new PdfNumber(i));
    }
    
    /**
     * Sets the initial visibility of the field.
     * @param visible    the default is true (visible)
     */
    public void setVisible(boolean visible) {
        put(PdfName.V, new PdfBoolean(visible));
    }
    
    /**
     * Indication if the field value should be editable in the viewer.
     * @param editable    the default is false (not editable)
     */
    public void setEditable(boolean editable) {
        put(PdfName.E, new PdfBoolean(editable));
    }

    /**
     * Checks if the type of the field is suitable for a Collection Item.
     */
    public boolean isCollectionItem() {
        switch(fieldType) {
        case TEXT:
        case DATE:
        case NUMBER:
            return true;
        default:
            return false;
        }
    }
    
    /**
     * Returns a PdfObject that can be used as the value of a Collection Item.
     * @param v    value    the value that has to be changed into a PdfObject (PdfString, PdfDate or PdfNumber)    
     */
    public PdfObject getValue(String v) {
        switch(fieldType) {
        case TEXT:
            return new PdfString(v, PdfObject.TEXT_UNICODE);
        case DATE:
            return new PdfDate(PdfDate.decode(v));
        case NUMBER:
            return new PdfNumber(v);
        }
        throw new IllegalArgumentException(MessageLocalization.getComposedMessage("1.is.not.an.acceptable.value.for.the.field.2", v, get(PdfName.N).toString()));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy