FOP-2720: PDF to PCL exception on clipping
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/trunk@1801164 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java b/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
index 34b6757..e63a6eb 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
@@ -147,6 +147,8 @@
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);
}
diff --git a/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java b/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
index f87572c..7dcffec 100644
--- a/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
@@ -72,6 +72,8 @@
import org.apache.fop.pdf.PDFPage;
import org.apache.fop.pdf.PDFResources;
import org.apache.fop.pdf.PDFStream;
+import org.apache.fop.render.pcl.PCLGenerator;
+import org.apache.fop.render.pcl.PCLGraphics2D;
import org.apache.fop.render.pdf.pdfbox.ImageConverterPDF2G2D;
import org.apache.fop.render.pdf.pdfbox.ImagePDF;
import org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter;
@@ -359,6 +361,32 @@
return stream;
}
+ @Test
+ public void testPCL() throws IOException, ImageException {
+ String ex = "";
+ try {
+ pdfToPCL(SHADING);
+ } catch (UnsupportedOperationException e) {
+ ex = e.getMessage();
+ }
+ Assert.assertTrue(ex.contains("Clipping is not supported."));
+ }
+
+ private void pdfToPCL(String pdf) throws IOException, ImageException {
+ ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
+ ImageInfo imgi = new ImageInfo(pdf, "b");
+ PDDocument doc = PDDocument.load(new File(pdf));
+ org.apache.xmlgraphics.image.loader.Image img = new ImagePDF(imgi, doc);
+ ImageGraphics2D ig = (ImageGraphics2D)i.convert(img, null);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ PCLGraphics2D g2d = new PCLGraphics2D(new PCLGenerator(stream));
+ Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
+ GraphicContext gc = new GraphicContext();
+ g2d.setGraphicContext(gc);
+ ig.getGraphics2DImagePainter().paint(g2d, rect);
+ doc.close();
+ }
+
static class FOPPSGeneratorImpl extends PSGenerator implements PSDocumentHandler.FOPPSGenerator {
public FOPPSGeneratorImpl(OutputStream out) {
super(out);