Author: cbowditch
Date: Wed Dec 19 15:50:58 2012
New Revision: 1423905
URL: http://svn.apache.org/viewvc?rev=1423905&view=rev
Log:
FOP-2172; PDF Image not rotated in PS/AFP
Submitted by Simon Steiner (ssteiner.at.thunderhead.com)
Added:
xmlgraphics/fop-pdf-images/trunk/test/
xmlgraphics/fop-pdf-images/trunk/test/java/
xmlgraphics/fop-pdf-images/trunk/test/java/org/
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
Modified:
xmlgraphics/fop-pdf-images/trunk/build.xml
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
Modified: xmlgraphics/fop-pdf-images/trunk/build.xml
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/build.xml?rev=1423905&r1=1423904&r2=1423905&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/build.xml (original)
+++ xmlgraphics/fop-pdf-images/trunk/build.xml Wed Dec 19 15:50:58 2012
@@ -26,6 +26,15 @@
<property name="Name" value="PDF image support for Apache FOP"/>
<property name="name" value="fop-pdf-images"/>
+ <property name="javac.debug" value="on"/>
+ <property name="javac.optimize" value="off"/>
+ <property name="javac.deprecation" value="on"/>
+ <property name="javac.source" value="1.5"/>
+ <property name="javac.target" value="1.5"/>
+ <property name="javac.fork" value="no"/>
+
+ <property name="junit.fork" value="on"/>
+
<property name="javadoc.packages" value="org.apache.fop.*"/>
<property name="src.dir" value="${basedir}/src"/>
@@ -79,6 +88,49 @@
<include name="KEYS"/>
<include name="build.*"/>
</fileset>
+
+ <property name="build.unit.tests.dir" value="${build.dir}/test-classes"/>
+ <path id="standard-junit-classpath">
+ <pathelement location="${build.unit.tests.dir}"/>
+ <path refid="libs-build-tools-classpath"/>
+ <fileset dir="${build.dir}">
+ <include name="fop*.jar"/>
+ </fileset>
+ </path>
+
+ <target name="junit-compile-java" depends="package">
+ <property name="test.dir" value="${basedir}/test"/>
+ <mkdir dir="${build.unit.tests.dir}"/>
+ <javac destdir="${build.unit.tests.dir}" fork="${javac.fork}"
debug="${javac.debug}" deprecation="${javac.deprecation}"
optimize="${javac.optimize}" source="${javac.source}" target="${javac.target}">
+ <src path="${test.dir}/java"/>
+ <classpath>
+ <path refid="libs-build-tools-classpath"/>
+ <fileset dir="${build.dir}">
+ <include name="fop*.jar"/>
+ </fileset>
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="junit" depends="junit-compile-java" description="Runs PDF
Plugin's JUnit basic tests">
+ <property name="junit.reports.dir" value="${build.dir}/test-reports"/>
+ <mkdir dir="${junit.reports.dir}"/>
+ <junit dir="${basedir}" haltonfailure="yes">
+ <sysproperty key="jawa.awt.headless" value="true"/>
+ <formatter type="brief" usefile="false"/>
+ <formatter type="plain" usefile="true"/>
+ <formatter type="xml" usefile="true"/>
+ <classpath>
+ <path refid="standard-junit-classpath"/>
+ </classpath>
+ <assertions>
+ <enable/>
+ </assertions>
+ <batchtest todir="${junit.reports.dir}">
+ <fileset dir="${build.unit.tests.dir}" includes="**/*TestCase.class"/>
+ </batchtest>
+ </junit>
+ </target>
<!-- =================================================================== -->
<!-- Initialization target -->
@@ -338,6 +390,6 @@
<!-- Default Target -->
<!-- =================================================================== -->
- <target name="all" depends="package"/>
+ <target name="all" depends="package,junit"/>
</project>
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=1423905&r1=1423904&r2=1423905&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
Wed Dec 19 15:50:58 2012
@@ -102,6 +102,28 @@ public class ImageConverterPDF2G2D exten
Dimension pageDimension = mediaBox.createDimension();
AffineTransform at = new AffineTransform();
+
+ Integer rotation = page.getRotation();
+ if (rotation != null) {
+ switch (rotation) {
+ case 270:
+ at.scale(area.getWidth() / area.getHeight(),
area.getHeight() / area.getWidth());
+ at.translate(0, area.getWidth());
+ at.rotate(-Math.PI / 2.0);
+ break;
+ case 180:
+ at.translate(area.getWidth(), area.getHeight());
+ at.rotate(-Math.PI);
+ break;
+ case 90:
+ at.scale(area.getWidth() / area.getHeight(),
area.getHeight() / area.getWidth());
+ at.translate(area.getHeight(), 0);
+ at.rotate(-Math.PI * 1.5);
+ default:
+ //no additional transformations necessary
+ }
+ }
+
at.translate(area.getX(), area.getY());
at.scale(area.getWidth() / pageDimension.width,
area.getHeight() / pageDimension.height);
Added:
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java?rev=1423905&view=auto
==============================================================================
---
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
(added)
+++
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
Wed Dec 19 15:50:58 2012
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.render.pdf;
+
+import java.awt.geom.Rectangle2D;
+
+import junit.framework.Assert;
+
+import org.apache.fop.render.pdf.pdfbox.ImageConverterPDF2G2D;
+import org.apache.fop.render.pdf.pdfbox.ImagePDF;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.xmlgraphics.image.loader.Image;
+import org.apache.xmlgraphics.image.loader.ImageInfo;
+import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D;
+import org.apache.xmlgraphics.java2d.GraphicContext;
+import org.apache.xmlgraphics.java2d.ps.PSGraphics2D;
+import org.junit.Test;
+
+public class PDFRotateTestCase {
+
+ @Test
+ public void test() throws Exception {
+ ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
+ ImageInfo imgi = new ImageInfo("a", "b");
+ PDDocument doc = new PDDocument();
+ PDPage page = new PDPage();
+ page.setRotation(90);
+ doc.addPage(page);
+ Image img = new ImagePDF(imgi, doc);
+ ImageGraphics2D ig = (ImageGraphics2D)i.convert(img, null);
+ Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
+
+ PSGraphics2D g2d = new PSGraphics2D(true);
+ GraphicContext gc = new GraphicContext();
+ g2d.setGraphicContext(gc);
+ ig.getGraphics2DImagePainter().paint(g2d, rect);
+ Assert.assertTrue(g2d.getTransform().getShearX() ==
-0.12626262626262627);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]