Example usage for com.lowagie.text.pdf PdfContentByte saveState

List of usage examples for com.lowagie.text.pdf PdfContentByte saveState

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfContentByte saveState.

Prototype

public void saveState() 

Source Link

Document

Saves the graphic state.

Usage

From source file:org.mapfish.print.map.MapChunkDrawer.java

License:Open Source License

/**
 * Used by overview maps to draw the extent of the real map.
 *///  w  w  w . j  av  a  2 s. c  om
private void drawMapExtent(PdfContentByte dc, Transformer mainTransformer) {
    dc.saveState();
    try {
        //in "degrees" unit, there seems to have rounding errors if I use the
        //PDF transform facility. Therefore, I do the transform by hand :-(
        transformer.setRotation(mainTransformer.getRotation());
        dc.transform(transformer.getGeoTransform(true));
        transformer.setRotation(0);

        dc.setLineWidth(1 * transformer.getGeoW() / transformer.getPaperW());
        dc.setColorStroke(new Color(255, 0, 0));
        dc.rectangle(mainTransformer.getMinGeoX(), mainTransformer.getMinGeoY(), mainTransformer.getGeoW(),
                mainTransformer.getGeoH());
        dc.stroke();

        if (mainTransformer.getRotation() != 0.0) {
            //draw a little arrow
            dc.setLineWidth(0.5F * transformer.getGeoW() / transformer.getPaperW());
            dc.moveTo((3 * mainTransformer.getMinGeoX() + mainTransformer.getMaxGeoX()) / 4,
                    mainTransformer.getMinGeoY());
            dc.lineTo((mainTransformer.getMinGeoX() + mainTransformer.getMaxGeoX()) / 2,
                    (mainTransformer.getMinGeoY() * 2 + mainTransformer.getMaxGeoY()) / 3);
            dc.lineTo((mainTransformer.getMinGeoX() + 3 * mainTransformer.getMaxGeoX()) / 4,
                    mainTransformer.getMinGeoY());
            dc.stroke();
        }
    } finally {
        dc.restoreState();
    }
}

From source file:org.mapfish.print.map.renderers.BitmapMapRenderer.java

License:Open Source License

public void render(Transformer transformer, List<URI> uris, PdfContentByte dc, RenderingContext context,
        float opacity, int nbTilesHorizontal, float offsetX, float offsetY, long bitmapTileW, long bitmapTileH)
        throws IOException {
    dc.saveState();
    try {//from   www.  j av a2  s.  c o m
        final AffineTransform bitmapTransformer = transformer.getBitmapTransform();
        dc.transform(bitmapTransformer);
        final double rotation = transformer.getRotation();

        for (int i = 0; i < uris.size(); i++) {
            URI uri = uris.get(i);
            if (uri == null) {
                continue;
            }

            final int line = i / nbTilesHorizontal;
            final int col = i % nbTilesHorizontal;
            final float posX = 0 - offsetX + col * bitmapTileW;
            final float posY = 0 - offsetY + line * bitmapTileH;

            if (rotation != 0.0
                    && !isTileVisible(posX, posY, bitmapTileW, bitmapTileH, bitmapTransformer, transformer)) {
                if (LOGGER.isDebugEnabled()) {
                    LOGGER.debug("Not needed: " + uri);
                }
                continue;
            }

            LOGGER.debug(uri);
            final Image map = PDFUtils.getImage(context, uri, bitmapTileW, bitmapTileH);
            map.setAbsolutePosition(posX, posY);

            if (opacity < 1.0) {
                PdfGState gs = new PdfGState();
                gs.setFillOpacity(opacity);
                gs.setStrokeOpacity(opacity);
                dc.setGState(gs);
            }
            dc.addImage(map);
        }
    } catch (DocumentException e) {
        context.addError(e);
    } finally {
        dc.restoreState();
    }
}

From source file:org.mapfish.print.map.renderers.PDFMapRenderer.java

License:Open Source License

public void render(Transformer transformer, List<URI> uris, PdfContentByte dc, RenderingContext context,
        float opacity, int nbTilesHorizontal, float offsetX, float offsetY, long bitmapTileW, long bitmapTileH)
        throws IOException {
    if (uris.size() != 1) {
        //tiling not supported in PDF
        throw new InvalidValueException("format", "application/x-pdf");
    }//from   w w w  .j  a  v  a2  s .  c  o  m
    final URI uri = uris.get(0);
    LOGGER.debug(uri);
    PdfReader reader = new PdfReader(uri.toURL());
    PdfImportedPage pdfMap = context.getWriter().getImportedPage(reader, 1);

    if (opacity < 1.0) {
        PdfGState gs = new PdfGState();
        gs.setFillOpacity(opacity);
        gs.setStrokeOpacity(opacity);
        //gs.setBlendMode(PdfGState.BM_SOFTLIGHT);
        pdfMap.setGState(gs);
    }

    dc.saveState();
    try {
        dc.transform(transformer.getPdfTransform());
        dc.addTemplate(pdfMap, 0, 0);
    } finally {
        dc.restoreState();
    }
}

From source file:org.mapfish.print.map.renderers.SVGMapRenderer.java

License:Open Source License

public void render(Transformer transformer, java.util.List<URI> uris, PdfContentByte dc,
        RenderingContext context, float opacity, int nbTilesHorizontal, float offsetX, float offsetY,
        long bitmapTileW, long bitmapTileH) throws IOException {
    if (uris.size() != 1) {
        //tiling not supported in SVG
        throw new InvalidValueException("format", "application/x-pdf");
    }//from w w  w.j a  va2s.co m

    dc.saveState();
    try {
        dc.transform(transformer.getSvgTransform());

        if (opacity < 1.0) {
            PdfGState gs = new PdfGState();
            gs.setFillOpacity(opacity);
            gs.setStrokeOpacity(opacity);
            //gs.setBlendMode(PdfGState.BM_SOFTLIGHT);
            dc.setGState(gs);
        }

        Graphics2D g2 = dc.createGraphics(transformer.getRotatedSvgW(), transformer.getRotatedSvgH());

        //avoid a warning from Batik
        System.setProperty("org.apache.batik.warn_destination", "false");
        g2.setRenderingHint(RenderingHintsKeyExt.KEY_TRANSCODING,
                RenderingHintsKeyExt.VALUE_TRANSCODING_PRINTING);
        g2.setRenderingHint(RenderingHintsKeyExt.KEY_AVOID_TILE_PAINTING,
                RenderingHintsKeyExt.VALUE_AVOID_TILE_PAINTING_ON);

        final URI uri = uris.get(0);
        LOGGER.debug(uri);
        final TranscoderInput ti = getTranscoderInput(uri.toURL(), transformer, context);
        if (ti != null) {
            PrintTranscoder pt = new PrintTranscoder();
            pt.transcode(ti, null);
            Paper paper = new Paper();
            paper.setSize(transformer.getRotatedSvgW(), transformer.getRotatedSvgH());
            paper.setImageableArea(0, 0, transformer.getRotatedSvgW(), transformer.getRotatedSvgH());
            PageFormat pf = new PageFormat();
            pf.setPaper(paper);
            pt.print(g2, pf, 0);
        }

        g2.dispose();
    } finally {
        dc.restoreState();
    }

}

From source file:org.mapfish.print.map.renderers.vector.GeometriesRenderer.java

License:Open Source License

@SuppressWarnings({ "RawUseOfParameterizedType", "unchecked" })
protected static void render(RenderingContext context, PdfContentByte dc, PJsonObject style,
        Geometry geometry) {// www.ja  v  a  2 s . c  o m
    GeometriesRenderer renderer = RENDERERS.get(geometry.getClass());
    if (renderer == null) {
        throw new RuntimeException("Rendering of " + geometry.getClass().getName() + " not supported");
    }
    dc.saveState();
    try {
        renderer.renderImpl(context, dc, style, geometry);
    } finally {
        dc.restoreState();
    }
}

From source file:org.mapfish.print.scalebar.ScalebarDrawer.java

License:Open Source License

public void renderImpl(Rectangle rectangle, PdfContentByte dc) {
    dc.saveState();
    try {/*from   w w w . j  a  v a 2s. c om*/
        //sets the transformation for drawing the labels and do it
        final AffineTransform rotate = getRotationTransform(block.getBarDirection());
        final AffineTransform labelTransform = AffineTransform.getTranslateInstance(rectangle.getLeft(),
                rectangle.getBottom());
        labelTransform.concatenate(rotate);
        labelTransform.translate(leftLabelMargin, maxLabelHeight);
        dc.transform(labelTransform);
        dc.setColorStroke(block.getColorVal());
        dc.setFontAndSize(pdfFont.getCalculatedBaseFont(false), pdfFont.getSize());
        drawLabels(dc);

        dc.restoreState();
        dc.saveState();

        //sets the transformation for drawing the bar and do it
        final AffineTransform lineTransform = AffineTransform.getTranslateInstance(rectangle.getLeft(),
                rectangle.getBottom());
        lineTransform.concatenate(rotate);
        lineTransform.translate(leftLabelMargin, labelDistance + maxLabelHeight);
        dc.transform(lineTransform);
        dc.setLineWidth((float) block.getLineWidth());
        dc.setColorStroke(block.getColorVal());
        drawBar(dc);
    } finally {
        dc.restoreState();
    }
}

From source file:org.oscarehr.casemgmt.service.PageNumberStamper.java

License:Open Source License

public void onEndPage(PdfWriter writer, Document document) {
    PdfContentByte cb = writer.getDirectContent();
    cb.saveState();

    String text = "Page " + writer.getPageNumber() + " of ";

    // height where text starts 
    float textBase = document.bottom() - getBaseOffset();
    float textSize = getFont().getWidthPoint(text, getFontSize());
    float width = document.getPageSize().getWidth();
    float center = width / 2.0f;

    cb.beginText();/*  ww w . j  a  va 2  s.  c o m*/
    cb.setFontAndSize(getFont(), getFontSize());

    cb.setTextMatrix(document.left(), textBase);
    cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text, center, textBase, 0);
    cb.endText();
    cb.addTemplate(total, center + (textSize / 2.0f), textBase);

    cb.restoreState();
}

From source file:org.oscarehr.casemgmt.service.PromoTextStamper.java

License:Open Source License

/**
 * Adds promo text, date and current page number to each page
 * //from   w  w w. j a va2 s  . c om
 * @param writer
 * @param document
 */
public void onEndPage(PdfWriter writer, Document document) {
    PdfContentByte cb = writer.getDirectContent();
    cb.saveState();

    float textBase = document.bottom() - getBaseOffset();
    float width = document.getPageSize().getWidth();
    float center = width / 2.0f;

    cb.beginText();
    cb.setFontAndSize(getFont(), getFontSize());

    cb.setTextMatrix(document.left(), textBase);
    cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text, center, textBase, 0);
    cb.endText();
    cb.restoreState();
}

From source file:org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.internal.PdfGraphics2D.java

License:Open Source License

/**
 * Constructor for PDFGraphics2D.//  w w  w.  j  a va 2 s . c  o  m
 */
public PdfGraphics2D(final PdfContentByte cb, final float width, final float height,
        final PdfOutputProcessorMetaData metaData) {
    this.metaData = metaData;
    dg2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);

    this.transform = new AffineTransform();

    paint = Color.black;
    background = Color.white;
    setFont(new Font("sanserif", Font.PLAIN, 12));
    this.cb = cb;
    cb.saveState();
    this.width = width;
    this.height = height;
    clip = new Area(new Rectangle2D.Float(0, 0, width, height));
    clip(clip);
    oldStroke = strokeOne;
    stroke = strokeOne;
    originalStroke = strokeOne;
    setStrokeDiff(stroke, null);
    cb.saveState();
}

From source file:org.posterita.core.PDFReportPageEventHelper.java

License:Open Source License

public void onEndPage(PdfWriter writer, Document document) {
    PdfContentByte cb = writer.getDirectContent();
    cb.saveState();
    // write the headertable
    table.setTotalWidth(document.right() - document.left());
    table.writeSelectedRows(0, -1, document.left(), document.getPageSize().getHeight() - 50, cb);
    // compose the footer
    String text = "Page " + writer.getPageNumber() + " of ";
    float textSize = PAGE_FOOTER_FONT.getBaseFont().getWidthPoint(text, 10);
    float textBase = document.bottom() - 20;
    cb.beginText();/*w  w  w. j av  a  2 s  . co m*/
    cb.setFontAndSize(PAGE_FOOTER_FONT.getBaseFont(), 10);

    float adjust = PAGE_FOOTER_FONT.getBaseFont().getWidthPoint("0", 10);
    cb.setTextMatrix(document.right() - textSize - adjust, textBase);
    cb.showText(text);
    cb.endText();
    cb.addTemplate(tpl, document.right() - adjust, textBase);

    cb.saveState();

    text = "Report Generated on : " + dateAndTime;

    textSize = PAGE_FOOTER_FONT.getBaseFont().getWidthPoint(text, 10);
    textBase = document.bottom() - 20;
    cb.beginText();
    cb.setFontAndSize(PAGE_FOOTER_FONT.getBaseFont(), 10);

    adjust = PAGE_FOOTER_FONT.getBaseFont().getWidthPoint("0", 10);
    cb.setTextMatrix(MARGIN, textBase);
    cb.showText(text);
    cb.endText();

    cb.saveState();

}