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