summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Kellner <tobias.kellner@iaik.tugraz.at>2014-12-12 13:48:28 +0100
committerTobias Kellner <tobias.kellner@iaik.tugraz.at>2014-12-12 13:48:28 +0100
commit683f42f194a30e70d4d09f4bac779d15526e1436 (patch)
tree44e74d6f290a623af9a21c06fad02a9847774ec4
parentb1d832da0a2b9da58d94c529ab8d0e4aabcb4c0b (diff)
downloadpdf-over-683f42f194a30e70d4d09f4bac779d15526e1436.tar.gz
pdf-over-683f42f194a30e70d4d09f4bac779d15526e1436.tar.bz2
pdf-over-683f42f194a30e70d4d09f4bac779d15526e1436.zip
Make PDF/A compatibility configurable
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java8
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java47
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java17
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java45
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SignaturePlaceholderCache.java18
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java8
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java8
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java72
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java16
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java35
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java8
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java24
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java5
-rw-r--r--pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties2
-rw-r--r--pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties2
-rw-r--r--pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java25
-rw-r--r--pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SignatureParameter.java33
17 files changed, 267 insertions, 106 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java
index dffcec0f..16c5f7cf 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java
@@ -101,6 +101,9 @@ public class Constants {
/** Update URL */
public static final String UPDATE_URL = "http://webstart.buergerkarte.at/PDF-Over/"; //$NON-NLS-1$
+ /** True */
+ public static final String TRUE = "true"; //$NON-NLS-1$
+
/** False */
public static final String FALSE = "false"; //$NON-NLS-1$
@@ -121,7 +124,7 @@ public class Constants {
*/
public static final String CFG_SIGNATURE_POSITION = "SIGNATURE_POSITION"; //$NON-NLS-1$
- /** This signature placeholder transparency config parameter (0-255) */
+ /** The signature placeholder transparency config parameter (0-255) */
public static final String CFG_SIGNATURE_PLACEHOLDER_TRANSPARENCY = "SIGNATURE_PLACEHOLDER_TRANSPARENCY"; //$NON-NLS-1$
/** The mobile number config parameter */
@@ -133,6 +136,9 @@ public class Constants {
/** The signature locale config parameter */
public static final String CFG_SIGNATURE_LOCALE = "SIGNLOCALE"; //$NON-NLS-1$
+ /** The PDF/A-compatibility config parameter */
+ public static final String CFG_SIGNATURE_PDFA_COMPAT = "SIGNATURE_PDFA_COMPAT"; //$NON-NLS-1$
+
/** Mobile bku url config parameter */
public static final String CFG_MOBILE_BKU_URL = "MOBILE_BKU_URL"; //$NON-NLS-1$
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java
index 548d5767..8ca12de1 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java
@@ -73,6 +73,7 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
private Group grpSignatur;
Button btnAutomatischePositionierung;
+ Button btnPdfACompat;
private Label lblTransparenz;
private Label lblTransparenzLinks;
private Label lblTransparenzRechts;
@@ -162,10 +163,36 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
}
});
+ this.btnPdfACompat = new Button(this.grpSignatur, SWT.CHECK);
+ FormData fd_btnPdfACompat = new FormData();
+ fd_btnPdfACompat.right = new FormAttachment(100, -5);
+ fd_btnPdfACompat.top = new FormAttachment(
+ this.btnAutomatischePositionierung, 5);
+ fd_btnPdfACompat.left = new FormAttachment(0, 5);
+ this.btnPdfACompat
+ .setLayoutData(fd_btnPdfACompat);
+
+ FontData[] fD_btnPdfACompat = this.btnPdfACompat
+ .getFont().getFontData();
+ fD_btnPdfACompat[0]
+ .setHeight(Constants.TEXT_SIZE_BUTTON);
+ this.btnPdfACompat.setFont(new Font(Display
+ .getCurrent(), fD_btnPdfACompat[0]));
+
+ this.btnPdfACompat
+ .addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ AdvancedConfigurationComposite.this
+ .performPdfACompatSelection(AdvancedConfigurationComposite.this.btnPdfACompat
+ .getSelection());
+ }
+ });
+
this.lblTransparenz = new Label(this.grpSignatur, SWT.HORIZONTAL);
FormData fd_lblTransparenz = new FormData();
fd_lblTransparenz.top = new FormAttachment(
- this.btnAutomatischePositionierung, 5);
+ this.btnPdfACompat, 5);
fd_lblTransparenz.left = new FormAttachment(0, 5);
this.lblTransparenz.setLayoutData(fd_lblTransparenz);
@@ -775,6 +802,11 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
this.btnAutomatischePositionierung.setSelection(automatic);
}
+ void performPdfACompatSelection(boolean compat) {
+ this.configurationContainer.setSignaturePdfACompat(compat);
+ this.btnPdfACompat.setSelection(compat);
+ }
+
void performPlaceholderTransparency(int transparency) {
this.configurationContainer.setPlaceholderTransparency(transparency);
}
@@ -890,19 +922,20 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
@Override
public void loadConfiguration() {
// load advanced settings
- this.performBKUSelectionChanged(this.configurationContainer
+ performBKUSelectionChanged(this.configurationContainer
.getDefaultBKU());
String outputFolder = this.configurationContainer.getOutputFolder();
if (outputFolder != null) {
- this.performOutputFolderChanged(outputFolder);
+ performOutputFolderChanged(outputFolder);
}
SignaturePosition pos = this.configurationContainer
.getDefaultSignaturePosition();
- this.performPositionSelection(pos != null && pos.useAutoPositioning());
+ performPositionSelection(pos != null && pos.useAutoPositioning());
this.sclTransparenz.setSelection(this.configurationContainer
.getPlaceholderTransparency());
- this.performLocaleSelectionChanged(this.configurationContainer.getLocale());
- this.performUpdateCheckSelection(this.configurationContainer.getUpdateCheck());
+ performLocaleSelectionChanged(this.configurationContainer.getLocale());
+ performPdfACompatSelection(this.configurationContainer.getSignaturePdfACompat());
+ performUpdateCheckSelection(this.configurationContainer.getUpdateCheck());
int port = this.configurationContainer.getProxyPort();
if (port > 0) {
@@ -972,6 +1005,8 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
.getString("advanced_config.Signature_Title")); //$NON-NLS-1$
this.btnAutomatischePositionierung.setText(Messages
.getString("advanced_config.AutoPosition")); //$NON-NLS-1$
+ this.btnPdfACompat.setText(Messages
+ .getString("advanced_config.PdfACompat")); //$NON-NLS-1$
this.btnAutomatischePositionierung.setToolTipText(Messages
.getString("advanced_config.AutoPosition_ToolTip")); //$NON-NLS-1$
this.lblTransparenz.setText(Messages
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java
index 2f8abadb..407b493b 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java
@@ -288,11 +288,13 @@ public class ConfigurationComposite extends StateComposite {
this.configurationContainer.setSignatureNote(
this.configProvider.getSignatureNote());
-
+
this.configurationContainer.setLocale(this.configProvider.getLocale());
-
- this.configurationContainer.setSignLocale(this.configProvider.getSignLocale());
-
+
+ this.configurationContainer.setSignatureLocale(this.configProvider.getSignatureLocale());
+
+ this.configurationContainer.setSignaturePdfACompat(this.configProvider.getSignaturePdfACompat());
+
this.configurationContainer.setDefaultBKU(this.configProvider
.getDefaultBKUPersistent());
try {
@@ -410,8 +412,11 @@ public class ConfigurationComposite extends StateComposite {
.setDefaultSignaturePosition(this.configurationContainer.getDefaultSignaturePosition());
this.configManipulator.setLocale(this.configurationContainer.getLocale());
- this.configManipulator.setSignLocale(this.configurationContainer.getSignLocale());
-
+
+ this.configManipulator.setSignatureLocale(this.configurationContainer.getSignatureLocale());
+
+ this.configManipulator.setSignaturePdfACompat(this.configurationContainer.getSignaturePdfACompat());
+
this.configManipulator
.setPlaceholderTransparency(this.configurationContainer
.getPlaceholderTransparency());
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java
index a5e0461e..9f1f53a5 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java
@@ -420,7 +420,7 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite {
@Override
public void widgetSelected(SelectionEvent e) {
Locale currentLocale = SimpleConfigurationComposite.this.configurationContainer
- .getSignLocale();
+ .getSignatureLocale();
Locale selectedLocale = Constants.
SUPPORTED_LOCALES[SimpleConfigurationComposite.this.cmbSignatureLang
.getSelectionIndex()];
@@ -512,7 +512,7 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite {
public void widgetSelected(SelectionEvent e) {
SimpleConfigurationComposite.this.txtSignatureNote.setText(
Messages.getString("simple_config.Note_Default", //$NON-NLS-1$
- SimpleConfigurationComposite.this.configurationContainer.getSignLocale()));
+ SimpleConfigurationComposite.this.configurationContainer.getSignatureLocale()));
}
});
@@ -663,34 +663,21 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite {
ImageData logo = null;
try {
-
- if (image == null || image.trim().isEmpty()) {
- if (this.signer != null) {
- SignatureParameter param = this.signer.getPDFSigner()
- .newParameter();
- if(this.configurationContainer.getSignatureNote() != null && !this.configurationContainer.getSignatureNote().isEmpty()) {
- param.setProperty("SIG_NOTE", this.configurationContainer.getSignatureNote()); //$NON-NLS-1$
- }
-
- param.setSignatureLanguage(this.configurationContainer.getSignLocale().getLanguage());
-
- img = SignaturePlaceholderCache.getSWTPlaceholder(param);
+ if (this.signer != null) {
+ SignatureParameter param = this.signer.getPDFSigner()
+ .newParameter();
+ if(this.configurationContainer.getSignatureNote() != null && !this.configurationContainer.getSignatureNote().isEmpty()) {
+ param.setProperty("SIG_NOTE", this.configurationContainer.getSignatureNote()); //$NON-NLS-1$
}
- } else {
- if (this.signer != null) {
- SignatureParameter param = this.signer.getPDFSigner()
- .newParameter();
- if(this.configurationContainer.getSignatureNote() != null && !this.configurationContainer.getSignatureNote().isEmpty()) {
- param.setProperty("SIG_NOTE", this.configurationContainer.getSignatureNote()); //$NON-NLS-1$
- }
-
- param.setSignatureLanguage(this.configurationContainer.getSignLocale().getLanguage());
+
+ param.setSignatureLanguage(this.configurationContainer.getSignatureLocale().getLanguage());
+ param.setSignaturePdfACompat(this.configurationContainer.getSignaturePdfACompat());
+ if (image != null && !image.trim().isEmpty()) {
+ logo = new ImageData(image);
param.setEmblem(new FileNameEmblem(image));
- img = SignaturePlaceholderCache.getSWTPlaceholder(param);
- } else {
- img = new ImageData(image);
}
- logo = new ImageData(image);
+
+ img = SignaturePlaceholderCache.getSWTPlaceholder(param);
}
} catch (Exception e) {
log.error("Failed to load image for display...", e); //$NON-NLS-1$
@@ -751,7 +738,7 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite {
void performSignatureLangSelectionChanged(Locale selected) {
log.debug("Selected Sign Locale: " + selected); //$NON-NLS-1$
- this.configurationContainer.setSignLocale(selected);
+ this.configurationContainer.setSignatureLocale(selected);
this.cmbSignatureLang.select(this.getLocaleElementIndex(selected));
}
@@ -850,7 +837,7 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite {
this.setVisibleImage();
- this.performSignatureLangSelectionChanged(this.configurationContainer.getSignLocale());
+ this.performSignatureLangSelectionChanged(this.configurationContainer.getSignatureLocale());
}
/*
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SignaturePlaceholderCache.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SignaturePlaceholderCache.java
index 769c477b..a468f0e2 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SignaturePlaceholderCache.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SignaturePlaceholderCache.java
@@ -68,19 +68,30 @@ public class SignaturePlaceholderCache {
final String sigLangProp = "LANG"; //$NON-NLS-1$
final String sigEmblProp = "EMBL"; //$NON-NLS-1$
final String sigNoteProp = "NOTE"; //$NON-NLS-1$
+ final String sigPdfAProp = "PDFA"; //$NON-NLS-1$
+
String sigLang = param.getSignatureLanguage();
String sigEmbl = (param.getEmblem() == null ? "" : param.getEmblem().getFileName()); //$NON-NLS-1$
String sigNote = param.getProperty("SIG_NOTE"); //$NON-NLS-1$
+ String sigPdfA = param.getSignaturePdfACompat() ? Constants.TRUE : Constants.FALSE;
Properties sigProps = new Properties();
// compare cache, try to load if match
try {
InputStream in = new FileInputStream(new File(fileDir, propFileName));
sigProps.load(in);
- if (sigProps.getProperty(sigLangProp).equals(sigLang) &&
- sigProps.getProperty(sigEmblProp).equals(sigEmbl) &&
- sigProps.getProperty(sigNoteProp).equals(sigNote))
+ if (sigLang.equals(sigProps.getProperty(sigLangProp)) &&
+ sigEmbl.equals(sigProps.getProperty(sigEmblProp)) &&
+ sigNote.equals(sigProps.getProperty(sigNoteProp)) &&
+ sigPdfA.equals(sigProps.getProperty(sigPdfAProp))) {
+ log.debug("Placeholder cache hit"); //$NON-NLS-1$
return loadImage(fileDir, imgFileName, imgFileExt);
+ }
+ log.debug("Placeholder cache miss (" + //$NON-NLS-1$
+ sigLang + "|" + sigProps.getProperty(sigLangProp) + " - " +//$NON-NLS-1$ //$NON-NLS-2$
+ sigEmbl + "|" + sigProps.getProperty(sigEmblProp) + " - " + //$NON-NLS-1$ //$NON-NLS-2$
+ sigNote + "|" + sigProps.getProperty(sigNoteProp) + " - " + //$NON-NLS-1$ //$NON-NLS-2$
+ sigPdfA + "|" + sigProps.getProperty(sigPdfAProp) + ")"); //$NON-NLS-1$ //$NON-NLS-2$
} catch (Exception e) {
log.debug("Can't load signature Placeholder", e); //$NON-NLS-1$
}
@@ -90,6 +101,7 @@ public class SignaturePlaceholderCache {
sigProps.setProperty(sigLangProp, sigLang);
sigProps.setProperty(sigEmblProp, sigEmbl);
sigProps.setProperty(sigNoteProp, sigNote);
+ sigProps.setProperty(sigPdfAProp, sigPdfA);
OutputStream out = new FileOutputStream(new File(fileDir, propFileName));
sigProps.store(out, null);
Image img = param.getPlaceholder();
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java
index d04d59c1..346c59ae 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java
@@ -109,7 +109,13 @@ public interface ConfigManipulator {
* Sets the signature locale to be used
* @param locale the signature locale
*/
- public void setSignLocale(Locale locale);
+ public void setSignatureLocale(Locale locale);
+
+ /**
+ * Set the signature PDF/A compatibility setting
+ * @param compat whether to use PDF/A compatibility
+ */
+ public void setSignaturePdfACompat(boolean compat);
/**
* Sets whether to automatically check for application updates
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java
index c9a8d616..d4489e27 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java
@@ -148,7 +148,13 @@ public interface ConfigProvider {
* Gets the configured locale
* @return the configured locale
*/
- public Locale getSignLocale();
+ public Locale getSignatureLocale();
+
+ /**
+ * Get the signature PDF/A compatibility setting
+ * @return the signature PDF/A compatibility setting
+ */
+ public boolean getSignaturePdfACompat();
/**
* Gets whether to automatically check for application updates
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java
index b5175141..5ec55555 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java
@@ -119,14 +119,18 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
if (targetLocale != null) {
setLocale(targetLocale);
}
+
+ String signatureLocaleString = config.getProperty(Constants.CFG_SIGNATURE_LOCALE);
- String signlocalString = config.getProperty(Constants.CFG_SIGNATURE_LOCALE);
-
- Locale signtargetLocale = LocaleSerializer.parseFromString(signlocalString);
- if (signtargetLocale != null) {
- setSignLocale(signtargetLocale);
+ Locale signatureTargetLocale = LocaleSerializer.parseFromString(signatureLocaleString);
+ if (signatureTargetLocale != null) {
+ setSignatureLocale(signatureTargetLocale);
}
-
+
+ String compat = config.getProperty(Constants.CFG_SIGNATURE_PDFA_COMPAT);
+ if (compat != null)
+ setSignaturePdfACompat(!compat.equalsIgnoreCase(Constants.FALSE));
+
String bkuUrl = config
.getProperty(Constants.CFG_MOBILE_BKU_URL);
@@ -288,16 +292,16 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
Properties props = new Properties();
props.clear();
- props.setProperty(Constants.CFG_BKU, this.getDefaultBKUPersistent().toString());
- props.setProperty(Constants.CFG_PROXY_HOST, this.getProxyHostPersistent());
+ props.setProperty(Constants.CFG_BKU, getDefaultBKUPersistent().toString());
+ props.setProperty(Constants.CFG_PROXY_HOST, getProxyHostPersistent());
props.setProperty(Constants.CFG_PROXY_PORT,
Integer.toString(getProxyPortPersistent()));
- props.setProperty(Constants.CFG_PROXY_USER, this.getProxyUserPersistent());
- props.setProperty(Constants.CFG_PROXY_PASS, this.getProxyPassPersistent());
- props.setProperty(Constants.CFG_EMBLEM, this.getDefaultEmblemPersistent());
- props.setProperty(Constants.CFG_SIGNATURE_NOTE, this.getSignatureNote());
- props.setProperty(Constants.CFG_MOBILE_NUMBER, this.getDefaultMobileNumberPersistent());
- props.setProperty(Constants.CFG_OUTPUT_FOLDER, this.getDefaultOutputFolderPersistent());
+ props.setProperty(Constants.CFG_PROXY_USER, getProxyUserPersistent());
+ props.setProperty(Constants.CFG_PROXY_PASS, getProxyPassPersistent());
+ props.setProperty(Constants.CFG_EMBLEM, getDefaultEmblemPersistent());
+ props.setProperty(Constants.CFG_SIGNATURE_NOTE, getSignatureNote());
+ props.setProperty(Constants.CFG_MOBILE_NUMBER, getDefaultMobileNumberPersistent());
+ props.setProperty(Constants.CFG_OUTPUT_FOLDER, getDefaultOutputFolderPersistent());
props.setProperty(Constants.CFG_SIGNATURE_PLACEHOLDER_TRANSPARENCY,
Integer.toString(getPlaceholderTransparency()));
@@ -309,13 +313,15 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
props.setProperty(Constants.CFG_LOCALE, LocaleSerializer.getParsableString(configLocale));
}
- Locale signLocale = this.getSignLocale();
- if(signLocale != null) {
- props.setProperty(Constants.CFG_SIGNATURE_LOCALE, LocaleSerializer.getParsableString(signLocale));
+ Locale signatureLocale = this.getSignatureLocale();
+ if(signatureLocale != null) {
+ props.setProperty(Constants.CFG_SIGNATURE_LOCALE, LocaleSerializer.getParsableString(signatureLocale));
}
- SignaturePosition pos = getDefaultSignaturePositionPersistent();
+ if (!getSignaturePdfACompat())
+ props.setProperty(Constants.CFG_SIGNATURE_PDFA_COMPAT, Constants.FALSE);
+ SignaturePosition pos = getDefaultSignaturePositionPersistent();
if (pos == null) {
props.setProperty(Constants.CFG_SIGNATURE_POSITION, ""); //$NON-NLS-1$
} else if (pos.useAutoPositioning()) {
@@ -999,29 +1005,45 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
}
/* (non-Javadoc)
- * @see at.asit.pdfover.gui.workflow.ConfigManipulator#setSignLocale(java.util.Locale)
+ * @see at.asit.pdfover.gui.workflow.ConfigManipulator#setSignatureLocale(java.util.Locale)
*/
@Override
- public void setSignLocale(Locale locale) {
+ public void setSignatureLocale(Locale locale) {
if(locale == null) {
- this.configuration.setSignLocale(Messages.getDefaultLocale());
+ this.configuration.setSignatureLocale(Messages.getDefaultLocale());
} else {
- this.configuration.setSignLocale(locale);
+ this.configuration.setSignatureLocale(locale);
}
}
/* (non-Javadoc)
- * @see at.asit.pdfover.gui.workflow.ConfigProvider#getSignLocale()
+ * @see at.asit.pdfover.gui.workflow.ConfigProvider#getSignatureLocale()
*/
@Override
- public Locale getSignLocale() {
- Locale locale = this.configuration.getSignLocale();
+ public Locale getSignatureLocale() {
+ Locale locale = this.configuration.getSignatureLocale();
if (locale == null)
locale = Messages.getDefaultLocale();
return locale;
}
/* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.config.ConfigManipulator#setSignaturePdfACompat(boolean)
+ */
+ @Override
+ public void setSignaturePdfACompat(boolean compat) {
+ this.configuration.setSignaturePdfACompat(compat);
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.config.ConfigProvider#getSignaturePdfACompat()
+ */
+ @Override
+ public boolean getSignaturePdfACompat() {
+ return this.configuration.getSignaturePdfACompat();
+ }
+
+ /* (non-Javadoc)
* @see at.asit.pdfover.gui.workflow.config.ConfigManipulator#setUpdateCheck(boolean)
*/
@Override
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java
index 24cd46bb..6d5e888e 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java
@@ -187,13 +187,25 @@ public interface ConfigurationContainer {
* Gets the signature locale
* @return the signature locale
*/
- public Locale getSignLocale();
+ public Locale getSignatureLocale();
/**
* Sets the signature locale
* @param locale the signature locale
*/
- public void setSignLocale(Locale locale);
+ public void setSignatureLocale(Locale locale);
+
+ /**
+ * Gets the signature PDF/A compatibility setting
+ * @return the signature PDF/A compatibility setting
+ */
+ public boolean getSignaturePdfACompat();
+
+ /**
+ * Sets the signature PDF/A compatibility setting
+ * @param compat the signature PDF/A compatibility setting
+ */
+ public void setSignaturePdfACompat(boolean compat);
/**
* Gets the mobile BKU URL
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java
index 83f35b65..726e5b4b 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java
@@ -77,7 +77,10 @@ public class ConfigurationContainerImpl implements ConfigurationContainer {
protected Locale locale = null;
/** Holds the signature locale */
- protected Locale signLocale = null;
+ protected Locale signatureLocale = null;
+
+ /** Holds the PDF/A compatibility setting */
+ protected boolean pdfACompat = true;
/** Holds the output folder */
protected String folder = null;
@@ -360,20 +363,38 @@ public class ConfigurationContainerImpl implements ConfigurationContainer {
/* (non-Javadoc)
- * @see at.asit.pdfover.gui.workflow.ConfigurationContainer#getSignLocale()
+ * @see at.asit.pdfover.gui.workflow.ConfigurationContainer#getSignatureLocale()
+ */
+ @Override
+ public Locale getSignatureLocale() {
+ return this.signatureLocale;
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.ConfigurationContainer#setSignatureLocale(java.util.Locale)
+ */
+ @Override
+ public void setSignatureLocale(Locale locale) {
+ this.signatureLocale = locale;
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#getSignaturePdfACompat()
*/
@Override
- public Locale getSignLocale() {
- return this.signLocale;
+ public boolean getSignaturePdfACompat() {
+ return this.pdfACompat;
}
/* (non-Javadoc)
- * @see at.asit.pdfover.gui.workflow.ConfigurationContainer#setSignLocale(java.util.Locale)
+ * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#setSignaturePdfACompat(boolean)
*/
@Override
- public void setSignLocale(Locale locale) {
- this.signLocale = locale;
+ public void setSignaturePdfACompat(boolean compat) {
+ this.pdfACompat = compat;
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java
index 9b857fa7..26a98def 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java
@@ -125,7 +125,13 @@ public interface PersistentConfigProvider {
* Gets the configured locale
* @return the configured locale
*/
- public Locale getSignLocale();
+ public Locale getSignatureLocale();
+
+ /**
+ * Get the signature PDF/A compatibility setting
+ * @return the signature PDF/A compatibility setting
+ */
+ public boolean getSignaturePdfACompat();
/**
* Gets whether to automatically check for application updates
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java
index 6c3d11a8..ae1303c8 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java
@@ -35,6 +35,7 @@ import at.asit.pdfover.gui.utils.Messages;
import at.asit.pdfover.gui.utils.SignaturePlaceholderCache;
import at.asit.pdfover.gui.workflow.StateMachine;
import at.asit.pdfover.gui.workflow.Status;
+import at.asit.pdfover.gui.workflow.config.ConfigProvider;
import at.asit.pdfover.signator.Emblem;
import at.asit.pdfover.signator.FileNameEmblem;
import at.asit.pdfover.signator.SignatureParameter;
@@ -93,27 +94,30 @@ public class PositioningState extends State {
}
private PositioningComposite getPositioningComposite(PDFFile document) {
+ StateMachine stateMachine = getStateMachine();
if (this.positionComposite == null) {
this.positionComposite =
- getStateMachine().getGUIProvider().createComposite(PositioningComposite.class, SWT.RESIZE, this);
- log.debug("Displaying " + getStateMachine().getStatus().getDocument()); //$NON-NLS-1$
+ stateMachine.getGUIProvider().createComposite(PositioningComposite.class, SWT.RESIZE, this);
+ log.debug("Displaying " + stateMachine.getStatus().getDocument()); //$NON-NLS-1$
this.positionComposite.displayDocument(document);
}
// Update possibly changed values
- SignatureParameter param = getStateMachine().getPDFSigner().getPDFSigner().newParameter();
- Emblem emblem = new FileNameEmblem(getStateMachine().getConfigProvider().getDefaultEmblem());
+ ConfigProvider config = stateMachine.getConfigProvider();
+ SignatureParameter param = stateMachine.getPDFSigner().getPDFSigner().newParameter();
+ Emblem emblem = new FileNameEmblem(config.getDefaultEmblem());
param.setEmblem(emblem);
- if(getStateMachine().getConfigProvider().getSignatureNote() != null && !getStateMachine().getConfigProvider().getSignatureNote().isEmpty()) {
- param.setProperty("SIG_NOTE", getStateMachine().getConfigProvider().getSignatureNote()); //$NON-NLS-1$
+ if(config.getSignatureNote() != null && !config.getSignatureNote().isEmpty()) {
+ param.setProperty("SIG_NOTE", config.getSignatureNote()); //$NON-NLS-1$
}
-
- param.setSignatureLanguage(getStateMachine().getConfigProvider().getSignLocale().getLanguage());
-
+
+ param.setSignatureLanguage(config.getSignatureLocale().getLanguage());
+ param.setSignaturePdfACompat(config.getSignaturePdfACompat());
+
this.positionComposite.setPlaceholder(
SignaturePlaceholderCache.getPlaceholder(param),
param.getPlaceholderDimension().getWidth(),
param.getPlaceholderDimension().getHeight(),
- getStateMachine().getConfigProvider().getPlaceholderTransparency());
+ config.getPlaceholderTransparency());
if (this.previousPosition != null && !this.previousPosition.useAutoPositioning())
this.positionComposite.setPosition(
this.previousPosition.getX(),
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java
index d64c1843..21664d85 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java
@@ -155,9 +155,12 @@ public class PrepareSigningState extends State {
}
this.state.signatureParameter
- .setSignatureLanguage(configuration.getSignLocale()
+ .setSignatureLanguage(configuration.getSignatureLocale()
.getLanguage());
+ this.state.signatureParameter
+ .setSignaturePdfACompat(configuration.getSignaturePdfACompat());
+
this.state.signingState = this.state.signer
.prepare(this.state.signatureParameter);
diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties
index 4db02e9a..42744584 100644
--- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties
+++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties
@@ -16,6 +16,8 @@ advanced_config.OutputFolder.Dialog=Select a folder
advanced_config.OutputFolder.Dialog_Title=Select Output folder
advanced_config.OutputFolder_Title=&Output location
advanced_config.OutputFolder_ToolTip=Select the folder where the signed document will be saved automatically (clear this field to disable automatic saving, enter a single dot (".") to denote the input document directory)
+advanced_config.PdfACompat=PDF/A compatibility
+advanced_config.PdfACompat_Tooltip=Whether to make signature PDF/A compatible (increases pdf size)
advanced_config.Proxy_Title=&Proxy
advanced_config.ProxyHost=Host:
advanced_config.ProxyHost_ToolTip=To use a proxy server enter the hostname or the IP here
diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties
index 86696107..d99aaa7e 100644
--- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties
+++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties
@@ -16,6 +16,8 @@ advanced_config.OutputFolder.Dialog=Wählen Sie einen Ordner
advanced_config.OutputFolder.Dialog_Title=Ausgabeordner Wählen
advanced_config.OutputFolder_Title=Ausgabe&ort
advanced_config.OutputFolder_ToolTip=Wählen Sie einen Ordner, in dem signierte Dokumente automatisch abgelegt werden (deaktivert, wenn das Feld leer ist; ein einzelner Punkt (".") wählt das Verzeichnis des Ursprungsdokuments)
+advanced_config.PdfACompat=PDF/A-Kompatibilität
+advanced_config.PdfACompat_Tooltip=Ob die Signatur PDF/A-kompatibel sein soll (erhöht PDF-Größe)
advanced_config.Proxy_Title=&Proxy
advanced_config.ProxyHost=Host:
advanced_config.ProxyHost_Template=Hostname oder IP des Proxy-Servers
diff --git a/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java b/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java
index 7db164c6..8b08e3dd 100644
--- a/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java
+++ b/pdf-over-signator/src/main/java/at/asit/pdfover/signator/SignatureParameter.java
@@ -36,12 +36,14 @@ public abstract class SignatureParameter {
/** The input document */
protected DocumentSource documentSource = null;
- /** holds the emblem */
+ /** Holds the emblem */
protected Emblem emblem;
+ /** Whether to use PDF/A compatibility */
+ protected boolean pdfACompat;
+
/** The signature device */
protected BKUs signatureDevice;
-
/**
* @return the signatureDevice
*/
@@ -96,6 +98,25 @@ public abstract class SignatureParameter {
}
/**
+ * Getter of the property <tt>signaturePdfACompat</tt>
+ *
+ * @return Returns the PDF/A compatibility setting.
+ */
+ public boolean getSignaturePdfACompat() {
+ return this.pdfACompat;
+ }
+
+ /**
+ * Setter of the property <tt>signaturePdfACompat</tt>
+ *
+ * @param compat
+ * The the PDF/A compatibility setting to set.
+ */
+ public void setSignaturePdfACompat(boolean compat) {
+ this.pdfACompat = compat;
+ }
+
+ /**
* Getter of the property <tt>keyIdentifier</tt>
*
* @return Returns the keyIdentifier.
diff --git a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SignatureParameter.java b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SignatureParameter.java
index 38aabadd..0403de2f 100644
--- a/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SignatureParameter.java
+++ b/pdf-over-signer/pdf-over-sigpdfas4/src/main/java/at/asit/pdfover/signer/pdfas/PdfAs4SignatureParameter.java
@@ -38,14 +38,16 @@ import at.gv.egiz.pdfas.lib.api.sign.SignParameter;
* Implementation of SignatureParameter for PDF-AS 4 Library
*/
public class PdfAs4SignatureParameter extends SignatureParameter {
- /** The profile ID for the German signature block */
- private static final String PROFILE_ID_DE = "SIGNATURBLOCK_SMALL_DE_PDFA";
- /** The profile ID for the German signature block if a signature note is set */
- private static final String PROFILE_ID_DE_NOTE = "SIGNATURBLOCK_SMALL_DE_NOTE_PDFA";
- /** The profile ID for the English signature block */
- private static final String PROFILE_ID_EN = "SIGNATURBLOCK_SMALL_EN_PDFA";
- /** The profile ID for the English signature block if a signature note is set */
- private static final String PROFILE_ID_EN_NOTE = "SIGNATURBLOCK_SMALL_EN_NOTE_PDFA";
+ /** The base profile ID */
+ private static final String PROFILE_ID_BASE = "SIGNATURBLOCK_SMALL";
+ /** The profile ID extension for the German signature block */
+ private static final String PROFILE_ID_LANG_DE = "_DE";
+ /** The profile ID extension for the English signature block */
+ private static final String PROFILE_ID_LANG_EN = "_EN";
+ /** The profile ID extension for the signature note */
+ private static final String PROFILE_ID_NOTE = "_NOTE";
+ /** The profile ID extension for PDF/A compatibility */
+ private static final String PROFILE_ID_PDFA = "_PDFA";
private HashMap<String, String> genericProperties = new HashMap<String, String>();
@@ -152,10 +154,19 @@ public class PdfAs4SignatureParameter extends SignatureParameter {
public String getPdfAsSignatureProfileId() {
String lang = getSignatureLanguage();
boolean useNote = (getProperty("SIG_NOTE") != null);
+ boolean usePdfACompat = (getSignaturePdfACompat());
- if (lang != null && lang.equals("en"))
- return useNote ? PROFILE_ID_EN_NOTE : PROFILE_ID_EN;
+ String profileId = PROFILE_ID_BASE;
+ profileId += (lang != null && lang.equals("en")) ?
+ PROFILE_ID_LANG_EN : PROFILE_ID_LANG_DE;
- return useNote ? PROFILE_ID_DE_NOTE : PROFILE_ID_DE;
+ if (useNote)
+ profileId += PROFILE_ID_NOTE;
+
+ if (usePdfACompat)
+ profileId += PROFILE_ID_PDFA;
+
+ log.debug("Profile ID: " + profileId);
+ return profileId;
}
}