List of usage examples for com.lowagie.text.pdf PdfContentByte saveState
public void saveState()
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(); }