/** * */ 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.