aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Maierhofer <cmaierhofer@iaik.tugraz.at>2016-09-07 13:05:29 +0200
committerChristian Maierhofer <cmaierhofer@iaik.tugraz.at>2016-09-07 13:05:29 +0200
commit3e46f2b7ba2bf497a8f73d5f2498850f27904ff1 (patch)
treeb0c6eb6bd4a99401fec95f971c65700eca93df79
parente6dbbf61ae54b34ee5dfde129d35edbaac5f37f5 (diff)
downloadpdf-as-4-3e46f2b7ba2bf497a8f73d5f2498850f27904ff1.tar.gz
pdf-as-4-3e46f2b7ba2bf497a8f73d5f2498850f27904ff1.tar.bz2
pdf-as-4-3e46f2b7ba2bf497a8f73d5f2498850f27904ff1.zip
Encoding of unicode characters in signature block is handled by pdfbox now
The string to be written to the value field is checked. If one character is not available in the font, the string gets encoded.
-rw-r--r--pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxTable.java29
-rw-r--r--pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/TableDrawUtils.java3
2 files changed, 24 insertions, 8 deletions
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxTable.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxTable.java
index e35e3994..17ee60be 100644
--- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxTable.java
+++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFBoxTable.java
@@ -85,8 +85,22 @@ public class PDFBoxTable {
case Entry.TYPE_CAPTION:
case Entry.TYPE_VALUE:
String value = (String) cell.getValue();
- cell.setValue(StringUtils
- .convertStringToPDFFormat(value));
+
+ //Check if the used value font supports all characters in string
+ PDFont f = null;
+ try{
+ if(valueFont != null){
+ f = valueFont.getFont();
+ f.getStringWidth(value);
+ }
+ }catch(IllegalArgumentException | IOException e){
+ if(f!=null){
+ logger.warn("Font "+f.getName()+" doesnt support a character in the value "+value);
+ }
+ value = StringUtils.convertStringToPDFFormat(value);
+ cell.setValue(value);
+ }
+
break;
}
}
@@ -99,11 +113,6 @@ public class PDFBoxTable {
private void initializeStyle(Table abstractTable, PDFBoxTable parent,
PDFBOXObject pdfBoxObject) throws IOException {
this.table = abstractTable;
- try {
- normalizeContent(abstractTable);
- } catch (PdfAsException e) {
- throw new PdfAsWrappedIOException(e);
- }
if (parent != null) {
style = Style.doInherit(abstractTable.getStyle(), parent.style);
@@ -148,6 +157,12 @@ public class PDFBoxTable {
padding = style.getPadding();
bgColor = style.getBgColor();
+
+ try {
+ normalizeContent(abstractTable);
+ } catch (PdfAsException e) {
+ throw new PdfAsWrappedIOException(e);
+ }
}
public PDFBoxTable(Table abstractTable, PDFBoxTable parent, float fixSize,
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/TableDrawUtils.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/TableDrawUtils.java
index aa2a397d..5162b287 100644
--- a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/TableDrawUtils.java
+++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/TableDrawUtils.java
@@ -246,8 +246,9 @@ public class TableDrawUtils {
contentStream.moveTextPositionByAmount(tx, (ty - fontSize + (descent * (-1))));
contentStream.appendRawCommands(fontSize + " TL\n");
+
for (int k = 0; k < tlines.length; k++) {
- contentStream.drawString(tlines[k]);
+ contentStream.showText(tlines[k]);
if (k < tlines.length - 1) {
contentStream.appendRawCommands("T*\n");
}