svn commit: r1784706 - in /xmlgraphics/fop-pdf-images/trunk: src/java/org/apache/fop/render/pdf/pdfbox/ test/java/org/apache/fop/render/pdf/ test/resources/

[email protected]
Newsgroups gmane.text.xml.fop.cvs
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.