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

[email protected]
Newsgroups gmane.text.xml.fop.cvs
Message-ID <[email protected]>
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);
             }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.