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.