diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-05-22 08:59:04 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-05-22 08:59:04 +0200 |
commit | 07a9ceecac85c3c0f329285ae113bfdd5f2971bd (patch) | |
tree | 0570b707d98d1664ccf1829babb38a87e2ac750c /pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java | |
parent | f933114e2cfd9e34f6e41e6548bee633169c867d (diff) | |
download | pdf-as-4-07a9ceecac85c3c0f329285ae113bfdd5f2971bd.tar.gz pdf-as-4-07a9ceecac85c3c0f329285ae113bfdd5f2971bd.tar.bz2 pdf-as-4-07a9ceecac85c3c0f329285ae113bfdd5f2971bd.zip |
TTF font caching, Import cleanup, auto positioning in rotated pages
Diffstat (limited to 'pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java')
-rw-r--r-- | pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java b/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java index fdbf40e2..05c7eb2a 100644 --- a/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java +++ b/pdf-as-pdfbox/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox/PDFBoxFont.java @@ -40,7 +40,6 @@ import org.apache.pdfbox.cos.COSBase; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSObject; -import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; @@ -48,6 +47,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.gv.egiz.pdfas.common.settings.ISettings; +import at.gv.egiz.pdfas.lib.impl.pdfbox.PDFBOXObject; public class PDFBoxFont { @@ -94,7 +94,6 @@ public class PDFBoxFont { float fontSize; String fontDesc; String ttfFontDesc; - PDDocument doc; ISettings settings; private FontInfoCache getFontInfo(String pathName) { @@ -128,6 +127,7 @@ public class PDFBoxFont { fontInfo.filename = pathName; fontInfo.fontFamily = fontFamilyToLoad; fontInfo.fontName = fontNameToLoad; + fontInfo.fontPath = pathName; fontInfoCache.put(pathName, fontInfo); return fontInfo; } catch (Throwable e) { @@ -138,9 +138,13 @@ public class PDFBoxFont { } } - private PDFont findCachedFont(PDDocument doc, FontInfoCache fontInfo) { + private PDFont findCachedFont(PDFBOXObject pdfObject, FontInfoCache fontInfo) { try { - List<COSObject> cosObjects = doc.getDocument().getObjectsByType( + if(pdfObject.getFontCache().containsKey(fontInfo.fontPath)) { + return pdfObject.getFontCache().get(fontInfo.fontPath); + } + + List<COSObject> cosObjects = pdfObject.getDocument().getDocument().getObjectsByType( COSName.FONT); //COSName cosFontName = COSName.getPDFName(fontInfo.fontName); @@ -182,17 +186,17 @@ public class PDFBoxFont { return null; } - private PDFont generateTTF(String fonttype, PDDocument doc) + private PDFont generateTTF(String fonttype, PDFBOXObject pdfObject) throws IOException { - boolean cacheNow = false; - if (doc == null) { + /*boolean cacheNow = true; + if (pdfObject == null) { if (this.doc == null) { this.doc = new PDDocument(); } doc = this.doc; } else { cacheNow = true; - } + }*/ ttfFontDesc = fonttype; String fontName = fonttype.replaceFirst("TTF:", ""); String fontPath = this.settings.getWorkingDirectory() + File.separator @@ -208,7 +212,7 @@ public class PDFBoxFont { if(fontInfo != null) { - PDFont font = findCachedFont(doc, fontInfo); + PDFont font = findCachedFont(pdfObject, fontInfo); if (font != null) { return font; @@ -218,7 +222,7 @@ public class PDFBoxFont { logger.debug("Instantiating font."); //if (cacheNow) { - cachedfont = PDTrueTypeFont.loadTTF(doc, fontPath); + cachedfont = PDTrueTypeFont.loadTTF(pdfObject.getDocument(), fontPath); fontStyleMap.put(fontPath, cachedfont); return cachedfont; //} else { @@ -228,10 +232,10 @@ public class PDFBoxFont { } private PDFont generateFont(String fonttype, String fontder, - PDDocument originalDoc) throws IOException { + PDFBOXObject pdfObject) throws IOException { if (fonttype.startsWith("TTF:")) { // Load TTF Font - return generateTTF(fonttype, originalDoc); + return generateTTF(fonttype, pdfObject); } else { if (fontder == null) { fontder = NORMAL; @@ -247,15 +251,15 @@ public class PDFBoxFont { } } - private void setFont(String desc, PDDocument originalDoc) + private void setFont(String desc, PDFBOXObject pdfObject) throws IOException { String[] fontArr = desc.split(","); if (fontArr.length == 3) { - font = generateFont(fontArr[0], fontArr[2], originalDoc); + font = generateFont(fontArr[0], fontArr[2], pdfObject); fontSize = Float.parseFloat(fontArr[1]); } else if (fontArr.length == 2 && fontArr[0].startsWith("TTF:")) { - font = generateFont(fontArr[0], null, originalDoc); + font = generateFont(fontArr[0], null, pdfObject); fontSize = Float.parseFloat(fontArr[1]); } else { logger.warn( @@ -268,22 +272,24 @@ public class PDFBoxFont { } public PDFBoxFont(String fontDesc, ISettings settings, - PDDocument originalDoc) throws IOException { + PDFBOXObject pdfObject) throws IOException { this.settings = settings; this.fontDesc = fontDesc; logger.debug("Creating Font: " + fontDesc); - this.setFont(fontDesc, originalDoc); + this.setFont(fontDesc, pdfObject); } - public PDFont getFont(PDDocument doc) throws IOException { + public PDFont getFont(/*PDFBOXObject pdfObject*/) throws IOException { if (cachedfont != null) { return cachedfont; } - if (font instanceof PDTrueTypeFont && doc != null) { - return generateTTF(ttfFontDesc, doc); + return font; + /* + if (font instanceof PDTrueTypeFont && pdfObject != null) { + return generateTTF(ttfFontDesc, pdfObject); } else { return font; - } + }*/ } public float getFontSize() { |