Author: ssteiner
Date: Fri Jul  6 10:05:55 2018
New Revision: 1835226

URL: http://svn.apache.org/viewvc?rev=1835226&view=rev
Log:
FOP-2802: Java 10 PDF/SVG to Image box not shown

Modified:
    
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
    
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/ImageConverterPDF2G2DTestCase.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=1835226&r1=1835225&r2=1835226&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 Jul  6 10:05:55 2018
@@ -25,6 +25,8 @@ import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -58,6 +60,7 @@ import org.apache.xmlgraphics.image.load
 import org.apache.xmlgraphics.image.loader.impl.AbstractImageConverter;
 import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D;
 import org.apache.xmlgraphics.image.loader.util.ImageUtil;
+import org.apache.xmlgraphics.java2d.AbstractGraphics2D;
 import org.apache.xmlgraphics.java2d.GeneralGraphics2DImagePainter;
 import org.apache.xmlgraphics.java2d.Graphics2DImagePainter;
 import org.apache.xmlgraphics.java2d.ps.PSGraphics2D;
@@ -162,6 +165,7 @@ public class ImageConverterPDF2G2D exten
                     at.scale(area.getWidth() / mediaBox.getWidth(),
                             area.getHeight() / mediaBox.getHeight());
                     g2d.transform(at);
+                normaliseScale(g2d);
                     new 
PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, g2d);
                 }
             } catch (UnsupportedOperationException e) {
@@ -173,6 +177,17 @@ public class ImageConverterPDF2G2D exten
             }
         }
 
+        private void normaliseScale(Graphics2D g2d) {
+            if (!(g2d instanceof AbstractGraphics2D)) {
+                AffineTransform old = g2d.getTransform();
+                double scaleX = 
BigDecimal.valueOf(old.getScaleX()).setScale(2, 
RoundingMode.HALF_UP).doubleValue();
+                double scaleY = 
BigDecimal.valueOf(old.getScaleY()).setScale(2, 
RoundingMode.HALF_UP).doubleValue();
+                AffineTransform newat = new AffineTransform(scaleX, 
old.getShearY(), old.getShearX(), scaleY,
+                        old.getTranslateX(), old.getTranslateY());
+                g2d.setTransform(newat);
+            }
+        }
+
         private void drawPageAsImage(AffineTransform at, Graphics2D g2d) 
throws IOException {
             PDFRenderer renderer = new PDFRenderer(pdDocument);
             BufferedImage bi = renderer.renderImageWithDPI(selectedPage, dpi);

Modified: 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/ImageConverterPDF2G2DTestCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/ImageConverterPDF2G2DTestCase.java?rev=1835226&r1=1835225&r2=1835226&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/ImageConverterPDF2G2DTestCase.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/ImageConverterPDF2G2DTestCase.java
 Fri Jul  6 10:05:55 2018
@@ -18,7 +18,10 @@
 /* $Id: ImageConverterPDF2G2D.java 1808727 2017-09-18 15:02:56Z ssteiner $ */
 package org.apache.fop.render.pdf;
 
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
 import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
@@ -97,4 +100,18 @@ public class ImageConverterPDF2G2DTestCa
             return true;
         }
     }
+
+    @Test
+    public void testPDFToImage() throws IOException, ImageException {
+        PDDocument doc = PDDocument.load(new File(FONTSNOTEMBEDDED));
+        ImageInfo imgi = new ImageInfo(FONTSNOTEMBEDDED, "b");
+        org.apache.xmlgraphics.image.loader.Image img = new ImagePDF(imgi, 
doc);
+        ImageConverterPDF2G2D imageConverterPDF2G2D = new 
ImageConverterPDF2G2D();
+        ImageGraphics2D fopGraphics2D = (ImageGraphics2D) 
imageConverterPDF2G2D.convert(img, null);
+        BufferedImage image = new BufferedImage(100, 100, 
BufferedImage.TYPE_INT_ARGB);
+        Graphics2D graphics2D = image.createGraphics();
+        fopGraphics2D.getGraphics2DImagePainter().paint(graphics2D, new 
Rectangle(0, 0, 1000, 1000));
+        doc.close();
+        Assert.assertEquals(graphics2D.getTransform().getScaleX(), 1.63, 0);
+    }
 }



---------------------------------------------------------------------
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