public void handleImage()

in src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxImageHandler.java [54:97]


    public void handleImage(RenderingContext context, Image image, Rectangle destRect) throws IOException {
        assert context instanceof PDFRenderingContext;
        PDFRenderingContext pdfContext = (PDFRenderingContext)context;
        PDFContentGenerator generator = pdfContext.getGenerator();
        PDFPage targetPage = pdfContext.getPage();

        assert image instanceof ImagePDF;
        ImagePDF pdfImage = (ImagePDF)image;
        try {
            // destRect in points. Because destRect size is in millipoints.
            float x = (float)destRect.getX() / 1000f;       // Offset from left of page (IPD origin).
            float y = (float)destRect.getY() / 1000f;       // Offset from top of page (BPD origin).
            float w = (float)destRect.getWidth() / 1000f;   // Width of image.
            float h = (float)destRect.getHeight() / 1000f;  // Height of image.

            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");
            Object stream = createStreamForPDF(pdfImage, targetPage, pdfContext.getUserAgent(),
                    pageAdjust, fontinfo, destRect, pdfContext.getUsedFieldNames(), pdfContext.getPageNumbers(),
                    pdfContext.getPdfLogicalStructureHandler(), pdfContext.getCurrentSessionStructElem());

            if (stream == null) {
                return;
            }
            if (stream instanceof String) {
                if (pageAdjust.getScaleX() != 0) {
                    pageAdjust.translate(x * (1 / pageAdjust.getScaleX()), -y * (1 / -pageAdjust.getScaleY()));
                }
                generator.placeImage(pageAdjust, (String) stream);
            } else {
                generator.placeImage(x, y, w, h, (PDFXObject) stream);
            }
            pdfImage.close();
        } catch (Throwable t) {
            throw new RuntimeException(
                    "Error on PDF page: " + pdfImage.getInfo().getOriginalURI() + " " + t.getMessage(), t);
        }
    }