From 79f8912b36d37a25867c52f86bcff13ff75e40a2 Mon Sep 17 00:00:00 2001 From: emusic Date: Fri, 8 Nov 2019 14:13:45 +0100 Subject: Encoding of special characters --- .../pdfas/common/settings/IProfileConstants.java | 1 + .../common/settings/SignatureProfileSettings.java | 10 +++++++++ .../at/gv/egiz/pdfas/common/utils/OgnlUtils.java | 3 +++ .../at/gv/egiz/pdfas/common/utils/StringUtils.java | 8 +++---- .../lib/impl/stamping/CertificateResolver.java | 18 ++++++--------- .../pdfas/lib/impl/stamping/ValueResolver.java | 26 ++++++++++++++-------- .../lib/impl/stamping/pdfbox2/PDFBoxFont.java | 2 -- 7 files changed, 42 insertions(+), 26 deletions(-) diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java index df1f4682..e1fcb9d0 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java @@ -94,5 +94,6 @@ public interface IProfileConstants { public final static String SIG_PDFA1B_VALID = "SIG_PDFA1B_VALID"; public final static String SIG_PDFA_VALID = "SIG_PDFA_VALID"; public final static String SIG_PDFUA_FORCE = "SIG_PDFUA_FORCE"; + public final static String LATIN1_ENCODING = "latin1_encoding"; } diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/SignatureProfileSettings.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/SignatureProfileSettings.java index bb6cca83..a151f12e 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/SignatureProfileSettings.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/SignatureProfileSettings.java @@ -238,6 +238,16 @@ public class SignatureProfileSettings implements IProfileConstants { return false; } + + public boolean isLatin1Encoding() { + SignatureProfileEntry entry = profileInformations.get(LATIN1_ENCODING); + if (entry != null) { + String value = entry.getCaption(); + return "true".equals(value); + } + return false; + } + public boolean isPDFA3() { if(this.pdfAVersion != null) { return "3".equals(this.pdfAVersion); diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/OgnlUtils.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/OgnlUtils.java index d5bae58e..50a34c57 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/OgnlUtils.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/OgnlUtils.java @@ -30,6 +30,8 @@ import ognl.OgnlException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.nio.charset.Charset; + /** * Created with IntelliJ IDEA. * User: afitzek @@ -52,6 +54,7 @@ public class OgnlUtils { valueString = valueString.substring(0, valueString.length() - 1); } return valueString; + } catch (OgnlException e) { logger.warn("OGNL resolver failed!", e); } diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java index dbea3c70..7156a97b 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java @@ -23,13 +23,13 @@ ******************************************************************************/ package at.gv.egiz.pdfas.common.utils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Formatter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * Created with IntelliJ IDEA. User: afitzek Date: 8/28/13 Time: 12:42 PM To * change this template use File | Settings | File Templates. @@ -62,7 +62,7 @@ public class StringUtils { public static String convertStringToPDFFormat(String value) throws UnsupportedEncodingException { - + if(value == null) { logger.warn("Trying to convert null string!"); return value; diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateResolver.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateResolver.java index bff573a4..edb87eb2 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateResolver.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateResolver.java @@ -23,22 +23,18 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.impl.stamping; +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; +import at.gv.egiz.pdfas.common.utils.DNUtils; +import at.gv.egiz.pdfas.common.utils.OgnlUtils; +import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; import iaik.x509.X509Certificate; - -import java.util.HashMap; -import java.util.Map; - -import javax.naming.InvalidNameException; - import ognl.OgnlContext; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; -import at.gv.egiz.pdfas.common.utils.DNUtils; -import at.gv.egiz.pdfas.common.utils.OgnlUtils; -import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; +import javax.naming.InvalidNameException; +import java.util.HashMap; +import java.util.Map; public class CertificateResolver implements IResolver { diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java index c38756db..f7210036 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java @@ -23,20 +23,20 @@ ******************************************************************************/ package at.gv.egiz.pdfas.lib.impl.stamping; +import at.gv.egiz.pdfas.common.settings.IProfileConstants; +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; +import at.gv.egiz.pdfas.lib.impl.status.ICertificateProvider; +import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.Charset; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import at.gv.egiz.pdfas.common.settings.IProfileConstants; -import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; -import at.gv.egiz.pdfas.lib.impl.status.ICertificateProvider; -import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; - /** * Created with IntelliJ IDEA. User: afitzek Date: 9/11/13 Time: 11:11 AM To * change this template use File | Settings | File Templates. @@ -52,6 +52,9 @@ public class ValueResolver implements IProfileConstants, IResolver { public static final String EXP_START = "${"; public static final String EXP_END = "}"; + private static final Charset ISO = Charset.forName("ISO-8859-1"); + private static final Charset UTF_8 = Charset.forName("UTF-8"); + private CertificateResolver certificateResolver; @@ -66,6 +69,11 @@ public class ValueResolver implements IProfileConstants, IResolver { logger.debug("Resolving value for key: " + key); logger.debug("Resolving value with value: " + value); + //this needs to be encoded because of special characters + if(settings.isLatin1Encoding()) { + value = new String(value.getBytes(ISO), UTF_8); + } + if (key.equals(SIG_DATE)) { if (value == null) { value = defaultDateFormat; @@ -82,7 +90,7 @@ public class ValueResolver implements IProfileConstants, IResolver { Calendar cal = Calendar.getInstance(); return fdf.format(cal.getTime()); } - + if (value != null) { Pattern pattern = Pattern.compile(PatternRegex); diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxFont.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxFont.java index 9c848ff9..415aa74a 100644 --- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxFont.java +++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxFont.java @@ -202,7 +202,6 @@ public class PDFBoxFont { return font; - } private PDFont generateFont(String fonttype, String fontder, @@ -242,7 +241,6 @@ public class PDFBoxFont { this.font = defaultFont; this.fontSize = defaultFontSize; } - } public PDFBoxFont(String fontDesc, ISettings settings, -- cgit v1.2.3