Author: ssteiner
Date: Fri Oct 13 13:23:42 2017
New Revision: 1812128

URL: http://svn.apache.org/viewvc?rev=1812128&view=rev
Log:
FOP-2753: PDF to PS allow fop fonts as fallback, add close

Modified:
    
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java

Modified: 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java?rev=1812128&r1=1812127&r2=1812128&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
 Fri Oct 13 13:23:42 2017
@@ -147,6 +147,7 @@ public class ImageConverterPDF2G2D exten
 
         /** {@inheritDoc} */
         public void paint(Graphics2D g2d, Rectangle2D area) {
+            fopFontProvider.start();
             try {
                 PDRectangle mediaBox = page.getCropBox();
                 AffineTransform at = new AffineTransform();
@@ -156,17 +157,19 @@ public class ImageConverterPDF2G2D exten
                 }
                 if (g2d instanceof PSGraphics2D && new 
PageUtil().pageHasTransparency(page.getResources())) {
                     drawPageAsImage(at, g2d);
-                    return;
+                } else {
+                    at.translate(area.getX(), area.getY());
+                    at.scale(area.getWidth() / mediaBox.getWidth(),
+                            area.getHeight() / mediaBox.getHeight());
+                    g2d.transform(at);
+                    new 
PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, g2d);
                 }
-                at.translate(area.getX(), area.getY());
-                at.scale(area.getWidth() / mediaBox.getWidth(),
-                        area.getHeight() / mediaBox.getHeight());
-                g2d.transform(at);
-                new PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, 
g2d);
             } catch (UnsupportedOperationException e) {
                 throw e;
             } catch (Throwable t) {
                 throw new RuntimeException("Error while painting PDF page: " + 
uri + " " + t.getMessage(), t);
+            } finally {
+                fopFontProvider.close();
             }
         }
 
@@ -243,10 +246,14 @@ public class ImageConverterPDF2G2D exten
         private Map<String, Object> fonts = new HashMap<String, Object>();
         private Map<String, TrueTypeFont> ttFonts = new HashMap<String, 
TrueTypeFont>();
 
-        FopFontProvider() {
+        void start() {
             fopFontMapper.fopFontProvider.set(this);
         }
 
+        void close() {
+            fopFontMapper.fopFontProvider.remove();
+        }
+
         private CustomFont getFont(String name) throws IOException {
             Object typeface = fonts.get(name);
             if (typeface instanceof LazyFont) {
@@ -285,8 +292,16 @@ public class ImageConverterPDF2G2D exten
             defaultFontMapper = FontMappers.instance();
         }
 
+        private TrueTypeFont getTrueTypeFont(String baseFont) {
+            FopFontProvider fontProvider = fopFontProvider.get();
+            if (fontProvider == null) {
+                return null;
+            }
+            return fontProvider.getTrueTypeFont(baseFont);
+        }
+
         public FontMapping<TrueTypeFont> getTrueTypeFont(String baseFont, 
PDFontDescriptor fontDescriptor) {
-            TrueTypeFont fopFont = 
fopFontProvider.get().getTrueTypeFont(baseFont);
+            TrueTypeFont fopFont = getTrueTypeFont(baseFont);
             if (fopFont != null) {
                 return new FontMapping<TrueTypeFont>(fopFont, true);
             }
@@ -295,7 +310,7 @@ public class ImageConverterPDF2G2D exten
 
 
         public FontMapping<FontBoxFont> getFontBoxFont(String baseFont, 
PDFontDescriptor fontDescriptor) {
-            TrueTypeFont fopFont = 
fopFontProvider.get().getTrueTypeFont(baseFont);
+            TrueTypeFont fopFont = getTrueTypeFont(baseFont);
             if (fopFont != null) {
                 return new FontMapping<FontBoxFont>(fopFont, true);
             }



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscr...@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-h...@xmlgraphics.apache.org

Reply via email to