diff options
author | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-09-07 13:05:29 +0200 |
---|---|---|
committer | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-09-07 13:05:29 +0200 |
commit | 3e46f2b7ba2bf497a8f73d5f2498850f27904ff1 (patch) | |
tree | b0c6eb6bd4a99401fec95f971c65700eca93df79 | |
parent | e6dbbf61ae54b34ee5dfde129d35edbaac5f37f5 (diff) | |
download | pdf-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.
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"); } |