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]