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: [email protected]
For additional commands, e-mail: [email protected]