/** * */ package at.gv.egiz.pdfas.api.sign; import java.util.Properties; import at.gv.egiz.pdfas.api.commons.Constants; import at.gv.egiz.pdfas.api.io.DataSink; import at.gv.egiz.pdfas.api.io.DataSource; import at.gv.egiz.pdfas.api.sign.pos.SignaturePositioning; import at.gv.egiz.pdfas.api.timestamp.TimeStamper; import at.knowcenter.wag.egov.egiz.sig.SignatureTypes; /** * Parameter object that holds the sign parameters. * * @author wprinz */ public class SignParameters { // 23.11.2010 changed by exthex - added parameters for placeholder handling /** * The document to be signed. * *
* The DataSource implementation encapsulates the actual representaion of the * data. E.g. the DataSource may be File based or byte array based. See * package at.gv.egiz.pdfas.framework.input and at.gv.pdfas.impl.input *
*/ protected DataSource document = null; /** * The type of the signature. * ** May be {@link Constants#SIGNATURE_TYPE_BINARY} or * {@link Constants#SIGNATURE_TYPE_TEXTUAL}. *
*/ protected String signatureType = Constants.SIGNATURE_TYPE_BINARY; /** * The signature device to perform the actual signature. * ** May be {@link Constants#SIGNATURE_DEVICE_MOA} or * {@link Constants#SIGNATURE_DEVICE_BKU}. *
*/ protected String signatureDevice = Constants.SIGNATURE_DEVICE_MOA; /** * The signature profile identifier identifying the profile to be used in the * config file. * ** Note: In near future it will be possible to provide a full specified * profile here instead of the profile id. *
*/ protected String signatureProfileId = null; /** * The signature key identifier specifying which signature key should be used * by the signature device to perform the signature. * ** Providing a null value (default) means that no explicit signature key * identifier is provided. The selected signature device will then use its * default mechanism for retrieving this information (which is usually to read * the key from the provided signature profile). *
** Note that not all signature devices may support this parameter. * If a signature device doesn't support this parameter the value should be null. *
** This key is usually passed straight through to the signature device and * thereby has to contain an appropriate value for the signature device * chosen. *
** Currently, only the {@link Constants#SIGNATURE_DEVICE_MOA} signature device * evaluates this parameter and passes the provided String to MOA as the MOA * key group identifier. If null is provided, the MOA signature device will * determine the signature key identifier to be used from the provided profile * and, if not specified there either, from the MOA default configuration. *
*/ protected String signatureKeyIdentifier = null; /** * The signature position. Consult the PDF-AS documentation section * Commandline. */ protected SignaturePositioning signaturePositioning = null; /** * The output DataSink that will receive the signed document. */ protected DataSink output = null; protected TimeStamper timeStamperImpl; /** * The flag to de-/activate placeholder search */ protected Boolean checkForPlaceholder = null; /** * The id of the placeholder which should be replaced. */ protected String placeholderId; /** * The matching mode for placeholder extraction.* Sample usage: *
SignParameters sp = new SignParameters(); . . . sp.setSignatureProfileId("SIGNATURBLOCK_DE"); // expressions do not work on binary signature fields without phlength setting!! sp.setProfileOverrideValue("SIG_META", "It's nice to be important, but it is more important to be nice ${subject.L}");; sp.setProfileOverrideValue("SIG_LABEL", "./images/signatur-logo_en.png"); // execute sign using the overrides pdfAs.sign(sp);* * @param key the name of the setting to override e.g. "SIG_META" * @param value The new value */ public void setProfileOverrideValue(String key, String value) { if (SignatureTypes.isRequredSigTypeKey(key)) { throw new RuntimeException("cannot set value for pre defined signature field names"); } this.overrideProps.put(key, value); } /** * Get override values created via {@link #setProfileOverrideValue(String, String)} * @return */ public Properties getProfileOverrideProperties() { return this.overrideProps; } /** * Get the value of the checkForPlaceholder flag. * * @return */ public Boolean isCheckForPlaceholder() { return this.checkForPlaceholder; } /** * Set this to true, if you want a search for placeholder images to be performed and * appropriate images to be replaced. * If this is not set, a search will only be performed if the configuration property "enable_placeholder_search" is set to true. * * @param check */ public void setCheckForPlaceholder(boolean check) { this.checkForPlaceholder = Boolean.valueOf(check); } /** * Set an explicit placeholder id. * Only placeholder images that have a matching ID property embedded will be considered for replacement. * * @param placeholderId */ public void setPlaceholderId(String placeholderId) { this.placeholderId = placeholderId; } /** * The id of the placeholder to replace. * * @return the placeholderId */ public String getPlaceholderId() { return placeholderId; } /** * Set the behavior if no exactly matching placeholder could be found.