Author: ssteiner
Date: Tue Feb 28 09:36:08 2017
New Revision: 1784706

URL: http://svn.apache.org/viewvc?rev=1784706&view=rev
Log:
FOP-2694: PDF plugin doesnt show which pdf failed

Added:
    xmlgraphics/fop-pdf-images/trunk/test/resources/error.pdf   (with props)
Modified:
    
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
    
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java
    
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.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=1784706&r1=1784705&r2=1784706&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
 Tue Feb 28 09:36:08 2017
@@ -58,7 +58,8 @@ public class ImageConverterPDF2G2D exten
 
         PDDocument pddoc = imgPDF.getPDDocument();
 
-        Graphics2DImagePainter painter = new Graphics2DImagePainterPDF(pddoc, 
selectedPage);
+        Graphics2DImagePainter painter =
+                new Graphics2DImagePainterPDF(pddoc, selectedPage, 
imgPDF.getInfo().getOriginalURI());
 
         ImageGraphics2D g2dImage = new ImageGraphics2D(src.getInfo(), painter);
         return g2dImage;
@@ -85,11 +86,13 @@ public class ImageConverterPDF2G2D exten
         private final PDPage page;
         private final PDDocument pdDocument;
         private int selectedPage;
+        private String uri;
 
-        public Graphics2DImagePainterPDF(PDDocument pddoc, int selectedPage) {
+        public Graphics2DImagePainterPDF(PDDocument pddoc, int selectedPage, 
String uri) {
             pdDocument = pddoc;
             this.selectedPage = selectedPage;
             page = pdDocument.getPage(selectedPage);
+            this.uri = uri;
         }
 
         /** {@inheritDoc} */
@@ -114,9 +117,8 @@ public class ImageConverterPDF2G2D exten
                         area.getHeight() / mediaBox.getHeight());
                 g2d.transform(at);
                 new PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, 
g2d);
-            } catch (IOException ioe) {
-                //TODO Better exception handling
-                throw new RuntimeException("I/O error while painting PDF 
page", ioe);
+            } catch (Throwable t) {
+                throw new RuntimeException("Error while painting PDF page: " + 
uri, t);
             }
         }
 

Modified: 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java?rev=1784706&r1=1784705&r2=1784706&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java
 Tue Feb 28 09:36:08 2017
@@ -55,31 +55,33 @@ public class PDFBoxImageHandler extends
         PDFContentGenerator generator = pdfContext.getGenerator();
         assert image instanceof ImagePDF;
         ImagePDF pdfImage = (ImagePDF)image;
+        try {
+            float x = (float)pos.getX() / 1000f;
+            float y = (float)pos.getY() / 1000f;
+            float h = (float)pos.getHeight() / 1000f;
 
-        float x = (float)pos.getX() / 1000f;
-        float y = (float)pos.getY() / 1000f;
-//        float w = (float)pos.getWidth() / 1000f;
-        float h = (float)pos.getHeight() / 1000f;
+            AffineTransform pageAdjust = new AffineTransform();
+            AffineTransform at = generator.getAffineTransform();
+            if (at != null) {
+                pageAdjust.setToTranslation(
+                    
(float)(generator.getState().getTransform().getTranslateX()),
+                    
(float)(generator.getState().getTransform().getTranslateY() - h - y));
+            }
+            FontInfo fontinfo = (FontInfo)context.getHint("fontinfo");
+            String stream = createStreamForPDF(pdfImage, pdfContext.getPage(), 
pdfContext.getUserAgent(),
+                    pageAdjust, fontinfo, pos, pdfContext.getPageNumbers(),
+                    pdfContext.getPdfLogicalStructureHandler(), 
pdfContext.getCurrentSessionStructElem());
 
-        AffineTransform pageAdjust = new AffineTransform();
-        AffineTransform at = generator.getAffineTransform();
-        if (at != null) {
-            pageAdjust.setToTranslation(
-                (float)(generator.getState().getTransform().getTranslateX()),
-                (float)(generator.getState().getTransform().getTranslateY() - 
h - y));
+            if (stream == null) {
+                return;
+            }
+            if (pageAdjust.getScaleX() != 0) {
+                pageAdjust.translate(x * (1 / pageAdjust.getScaleX()), -y * (1 
/ -pageAdjust.getScaleY()));
+            }
+            generator.placeImage(pageAdjust, stream);
+        } catch (Throwable t) {
+            throw new RuntimeException("Error on PDF page: " + 
pdfImage.getInfo().getOriginalURI(), t);
         }
-        FontInfo fontinfo = (FontInfo)context.getHint("fontinfo");
-        String stream = createStreamForPDF(pdfImage, pdfContext.getPage(), 
pdfContext.getUserAgent(),
-                pageAdjust, fontinfo, pos, pdfContext.getPageNumbers(),
-                pdfContext.getPdfLogicalStructureHandler(), 
pdfContext.getCurrentSessionStructElem());
-
-        if (stream == null) {
-            return;
-        }
-        if (pageAdjust.getScaleX() != 0) {
-            pageAdjust.translate(x * (1 / pageAdjust.getScaleX()), -y * (1 / 
-pageAdjust.getScaleY()));
-        }
-        generator.placeImage(pageAdjust, stream);
     }
 
     /** {@inheritDoc} */

Modified: 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1784706&r1=1784705&r2=1784706&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
 Tue Feb 28 09:36:08 2017
@@ -107,6 +107,7 @@ public class PDFBoxAdapterTestCase {
     private static final String HELLOTagged = "test/resources/taggedWorld.pdf";
     private static final String XFORM = "test/resources/xform.pdf";
     private static final String LOOP = "test/resources/loop.pdf";
+    private static final String ERROR = "test/resources/error.pdf";
 
     private static PDFPage getPDFPage(PDFDocument doc) {
         final Rectangle2D r = new Rectangle2D.Double();
@@ -335,7 +336,7 @@ public class PDFBoxAdapterTestCase {
 
     private ByteArrayOutputStream pdfToPS(String pdf) throws IOException, 
ImageException {
         ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
-        ImageInfo imgi = new ImageInfo("a", "b");
+        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);
@@ -435,4 +436,28 @@ public class PDFBoxAdapterTestCase {
         Assert.assertEquals(strings, 34);
         Assert.assertEquals(objectCachePerFile.size(), 45);
     }
+
+    @Test
+    public void testErrorMsgToPS() throws IOException, ImageException {
+        String msg = "";
+        try {
+            pdfToPS(ERROR);
+        } catch (RuntimeException e) {
+            msg = e.getMessage();
+        }
+        Assert.assertEquals(msg, "Error while painting PDF page: " + ERROR);
+    }
+
+    @Test
+    public void testErrorMsgToPDF() throws IOException {
+        String msg = "";
+        PDFRenderingContext context = new PDFRenderingContext(null, null, 
null, null);
+        ImagePDF imagePDF = new ImagePDF(new ImageInfo(ERROR, null), null);
+        try {
+            new PDFBoxImageHandler().handleImage(context, imagePDF, null);
+        } catch (RuntimeException e) {
+            msg = e.getMessage();
+        }
+        Assert.assertEquals(msg, "Error on PDF page: " + ERROR);
+    }
 }

Added: xmlgraphics/fop-pdf-images/trunk/test/resources/error.pdf
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/resources/error.pdf?rev=1784706&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xmlgraphics/fop-pdf-images/trunk/test/resources/error.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to