List of usage examples for com.lowagie.text.pdf PdfContentByte addImage
public void addImage(Image image) throws DocumentException
Image
to the page. From source file:org.jaffa.modules.printing.services.FormPrintEngineIText.java
License:Open Source License
/** Print an iText image */ private void printImage(Image image, PdfContentByte cb, float x1, float y1, float x2, float y2, int alignment, int fitMethod, float rotate) throws DocumentException { if (image != null) { float boxWidth = Math.abs(x2 - x1) + 1; float boxHeight = Math.abs(y2 - y1) + 1; log.debug("Print Image (Size w=" + image.getPlainWidth() + ",h=" + image.getPlainHeight() + ") wthin BOX (w=" + boxWidth + ",h=" + boxHeight + ") FitMethod = " + fitMethod); // Clip the image based on the bounding box if (fitMethod == FIT_METHOD_CLIP) { if ((boxWidth < image.getPlainWidth()) || (boxHeight < image.getPlainHeight())) { // @TODO - Clip image log.warn("IMAGE CLIPPING REQUIRED, but not implemented - default to 'SCALE'..."); fitMethod = FIT_METHOD_SCALE; }//from www.j av a2 s .c om } // Stretch/shrink both the X/Y to fit the bounding box if (fitMethod == FIT_METHOD_FILL) { log.debug("Scale image to fill box"); image.scaleToFit(x2 - x1, y2 - y1); } // Stretch/shrink preserving the aspect ratio to fit the bounding box if (fitMethod == FIT_METHOD_SCALE) { float multipler = Math.min(boxWidth / image.getPlainWidth(), boxHeight / image.getPlainHeight()); log.debug("Need to scale image by " + (Math.floor(multipler * 10000) / 100) + "%"); image.scalePercent(multipler * 100); } log.debug("Print image at (" + x1 + "," + y1 + ")"); image.setAbsolutePosition(x1, y1); image.setRotationDegrees(rotate); cb.addImage(image); //Phrase text = new Phrase(new Chunk(image, 0, 0)); //ColumnText ct = new ColumnText(cb); //ct.setSimpleColumn(text, x1, y1, x2, y2, 10, alignment); //ct.go(); } }
From source file:org.jpedal.examples.simpleviewer.utils.ItextFunctions.java
License:Open Source License
public void stampImage(int pageCount, PdfPageData currentPageData, final StampImageToPDFPages stampImage) { File tempFile = null;// w w w . j a v a2 s . c o m try { tempFile = File.createTempFile("temp", null); ObjectStore.copy(selectedFile, tempFile.getAbsolutePath()); } catch (Exception e) { return; } try { int[] pgsToEdit = stampImage.getPages(); if (pgsToEdit == null) return; File fileToTest = new File(stampImage.getImageLocation()); if (!fileToTest.exists()) { currentGUI.showMessageDialog(Messages.getMessage("PdfViewerError.ImageDoesNotExist")); return; } List pagesToEdit = new ArrayList(); for (int i = 0; i < pgsToEdit.length; i++) pagesToEdit.add(new Integer(pgsToEdit[i])); final PdfReader reader = new PdfReader(tempFile.getAbsolutePath()); int n = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(selectedFile)); Image img = Image.getInstance(fileToTest.getAbsolutePath()); int chosenWidthScale = stampImage.getWidthScale(); int chosenHeightScale = stampImage.getHeightScale(); img.scalePercent(chosenWidthScale, chosenHeightScale); String chosenPlacement = stampImage.getPlacement(); int chosenRotation = stampImage.getRotation(); img.setRotationDegrees(chosenRotation); String chosenHorizontalPosition = stampImage.getHorizontalPosition(); String chosenVerticalPosition = stampImage.getVerticalPosition(); float chosenHorizontalOffset = stampImage.getHorizontalOffset(); float chosenVerticalOffset = stampImage.getVerticalOffset(); for (int page = 0; page <= n; page++) { if (pagesToEdit.contains(new Integer(page))) { PdfContentByte cb; if (chosenPlacement.equals("Overlay")) cb = stamp.getOverContent(page); else cb = stamp.getUnderContent(page); int currentRotation = currentPageData.getRotation(page); Rectangle pageSize; if (currentRotation == 90 || currentRotation == 270) pageSize = reader.getPageSize(page).rotate(); else pageSize = reader.getPageSize(page); float startx, starty; if (chosenVerticalPosition.equals("From the top")) { starty = pageSize.height() - ((img.height() * (chosenHeightScale / 100)) / 2); } else if (chosenVerticalPosition.equals("Centered")) { starty = (pageSize.height() / 2) - ((img.height() * (chosenHeightScale / 100)) / 2); } else { starty = 0; } if (chosenHorizontalPosition.equals("From the left")) { startx = 0; } else if (chosenHorizontalPosition.equals("Centered")) { startx = (pageSize.width() / 2) - ((img.width() * (chosenWidthScale / 100)) / 2); } else { startx = pageSize.width() - ((img.width() * (chosenWidthScale / 100)) / 2); } img.setAbsolutePosition(startx + chosenHorizontalOffset, starty + chosenVerticalOffset); cb.addImage(img); } } stamp.close(); } catch (Exception e) { ObjectStore.copy(tempFile.getAbsolutePath(), selectedFile); e.printStackTrace(); } finally { tempFile.delete(); } }
From source file:org.kuali.coeus.common.impl.print.watermark.WatermarkServiceImpl.java
License:Open Source License
/** * This method is for setting the properties of watermark Image. * /*from ww w . j a va 2 s .c om*/ * @param pdfContentByte * @param pageWidth * @param pageHeight * @param watermarkBean */ private void decoratePdfWatermarkImage(PdfContentByte pdfContentByte, int pageWidth, int pageHeight, WatermarkBean watermarkBean) { PdfGState pdfGState = new PdfGState(); final float OPACITY = 0.3f; float absPosX; float absPosY; try { if (watermarkBean.getType().equalsIgnoreCase(WatermarkConstants.WATERMARK_TYPE_IMAGE)) { Image watermarkImage = Image.getInstance(watermarkBean.getFileImage()); if (watermarkImage != null) { pdfGState.setFillOpacity(OPACITY); pdfContentByte.setGState(pdfGState); float height = watermarkImage.getPlainHeight(); float width = watermarkImage.getPlainWidth(); int diagonal = (int) Math.sqrt((pageWidth * pageWidth) + (pageHeight * pageHeight)); int pivotPoint = (diagonal - (int) width) / 2; float angle = (float) Math.atan((float) pageHeight / pageWidth); absPosX = (float) (pivotPoint * pageWidth) / diagonal; absPosY = (float) (pivotPoint * pageHeight) / diagonal; watermarkImage.setAbsolutePosition(absPosX, absPosY); if ((pageWidth / 2) < width) { watermarkImage.scaleToFit(pageWidth / 2, pageHeight / 2); } else { watermarkImage.scaleToFit(width, height); } pdfContentByte.addImage(watermarkImage); } } } catch (BadElementException badElementException) { LOG.error("WatermarkDecoratorImpl Error found: " + badElementException.getMessage()); } catch (DocumentException documentException) { LOG.error("WatermarkDecoratorImpl Error found: " + documentException.getMessage()); } }
From source file:org.kuali.kra.printing.service.impl.WatermarkServiceImpl.java
License:Educational Community License
/** * This method is for setting the properties of watermark Image. * // ww w. j av a 2 s.c o m * @param pdfContentByte * @param pageWidth * @param pageHeight * @param watermarkBean */ private void decoratePdfWatermarkImage(PdfContentByte pdfContentByte, int pageWidth, int pageHeight, WatermarkBean watermarkBean) { try { if (watermarkBean.getType().equalsIgnoreCase(WatermarkConstants.WATERMARK_TYPE_IMAGE)) { Image watermarkImage = Image.getInstance(watermarkBean.getFileImage()); if (watermarkImage != null) { float height = watermarkImage.getPlainHeight(); float width = watermarkImage.getPlainWidth(); watermarkImage.setAbsolutePosition((pageWidth - width) / 2, (pageHeight - height) / 2); pdfContentByte.addImage(watermarkImage); } } } catch (BadElementException badElementException) { LOG.error("WatermarkDecoratorImpl Error found: " + badElementException.getMessage()); } catch (DocumentException documentException) { LOG.error("WatermarkDecoratorImpl Error found: " + documentException.getMessage()); } }
From source file:org.lucee.extension.pdf.tag.PDF.java
License:Open Source License
private void doActionAddWatermark() throws PageException, IOException, DocumentException { required("pdf", "addWatermark", "source", source); if (copyFrom == null && image == null) throw engine.getExceptionUtil().createApplicationException( "at least one of the following attributes must be defined " + "[copyFrom,image]"); if (destination != null && destination.exists() && !overwrite) throw engine.getExceptionUtil() .createApplicationException("destination file [" + destination + "] already exists"); // image// w w w . j a va 2 s . c o m Image img = null; if (image != null) { // TODO lucee.runtime.img.Image ri = lucee.runtime.img.Image.createImage(pageContext,image,false,false,true,null); // TODO img=Image.getInstance(ri.getBufferedImage(),null,false); } // copy From else { byte[] barr; try { Resource res = copyFrom instanceof String ? engine.getResourceUtil().toResourceExisting(pageContext, (String) copyFrom) : engine.getCastUtil().toResource(copyFrom); barr = PDFUtil.toBytes(res); } catch (PageException ee) { barr = engine.getCastUtil().toBinary(copyFrom); } img = Image.getInstance(PDFUtil.toImage(barr, 1), null, false); } // position float x = UNDEFINED, y = UNDEFINED; if (!Util.isEmpty(position)) { int index = position.indexOf(','); if (index == -1) throw engine.getExceptionUtil() .createApplicationException("attribute [position] has an invalid value [" + position + "]," + "value should follow one of the following pattern [40,50], [40,] or [,50]"); String strX = position.substring(0, index).trim(); String strY = position.substring(index + 1).trim(); if (!Util.isEmpty(strX)) x = engine.getCastUtil().toIntValue(strX); if (!Util.isEmpty(strY)) y = engine.getCastUtil().toIntValue(strY); } PDFStruct doc = toPDFDocument(source, password, null); doc.setPages(pages); PdfReader reader = doc.getPdfReader(); reader.consolidateNamedDestinations(); java.util.List bookmarks = SimpleBookmark.getBookmark(reader); ArrayList master = new ArrayList(); if (bookmarks != null) master.addAll(bookmarks); // output boolean destIsSource = destination != null && doc.getResource() != null && destination.equals(doc.getResource()); OutputStream os = null; if (!Util.isEmpty(name) || destIsSource) { os = new ByteArrayOutputStream(); } else if (destination != null) { os = destination.getOutputStream(); } try { int len = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, os); if (len > 0) { if (x == UNDEFINED || y == UNDEFINED) { PdfImportedPage first = stamp.getImportedPage(reader, 1); if (y == UNDEFINED) y = (first.getHeight() - img.getHeight()) / 2; if (x == UNDEFINED) x = (first.getWidth() - img.getWidth()) / 2; } img.setAbsolutePosition(x, y); // img.setAlignment(Image.ALIGN_JUSTIFIED); ration geht nicht anhand mitte } // rotation if (rotation != 0) { img.setRotationDegrees(rotation); } Set _pages = doc.getPages(); for (int i = 1; i <= len; i++) { if (_pages != null && !_pages.contains(Integer.valueOf(i))) continue; PdfContentByte cb = foreground ? stamp.getOverContent(i) : stamp.getUnderContent(i); PdfGState gs1 = new PdfGState(); // print.out("op:"+opacity); gs1.setFillOpacity(opacity); // gs1.setStrokeOpacity(opacity); cb.setGState(gs1); cb.addImage(img); } if (bookmarks != null) stamp.setOutlines(master); stamp.close(); } finally { Util.closeEL(os); if (os instanceof ByteArrayOutputStream) { if (destination != null) engine.getIOUtil().copy(new ByteArrayInputStream(((ByteArrayOutputStream) os).toByteArray()), destination, true);// MUST overwrite if (!Util.isEmpty(name)) { pageContext.setVariable(name, new PDFStruct(((ByteArrayOutputStream) os).toByteArray(), password)); } } } }
From source file:org.lucee.extension.pdf.tag.PDF.java
License:Open Source License
private void doActionRemoveWatermark() throws PageException, IOException, DocumentException { required("pdf", "removeWatermark", "source", source); if (destination != null && destination.exists() && !overwrite) throw engine.getExceptionUtil() .createApplicationException("destination file [" + destination + "] already exists"); BufferedImage bi = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.setBackground(Color.BLACK); g.clearRect(0, 0, 1, 1);// www . j a v a 2 s.com Image img = Image.getInstance(bi, null, false); img.setAbsolutePosition(1, 1); PDFStruct doc = toPDFDocument(source, password, null); doc.setPages(pages); PdfReader reader = doc.getPdfReader(); boolean destIsSource = destination != null && doc.getResource() != null && destination.equals(doc.getResource()); java.util.List bookmarks = SimpleBookmark.getBookmark(reader); ArrayList master = new ArrayList(); if (bookmarks != null) master.addAll(bookmarks); // output OutputStream os = null; if (!Util.isEmpty(name) || destIsSource) { os = new ByteArrayOutputStream(); } else if (destination != null) { os = destination.getOutputStream(); } try { int len = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, os); Set _pages = doc.getPages(); for (int i = 1; i <= len; i++) { if (_pages != null && !_pages.contains(Integer.valueOf(i))) continue; PdfContentByte cb = foreground ? stamp.getOverContent(i) : stamp.getUnderContent(i); PdfGState gs1 = new PdfGState(); gs1.setFillOpacity(0); cb.setGState(gs1); cb.addImage(img); } if (bookmarks != null) stamp.setOutlines(master); stamp.close(); } finally { Util.closeEL(os); if (os instanceof ByteArrayOutputStream) { if (destination != null) engine.getIOUtil().copy(new ByteArrayInputStream(((ByteArrayOutputStream) os).toByteArray()), destination, true);// MUST overwrite if (!Util.isEmpty(name)) { pageContext.setVariable(name, new PDFStruct(((ByteArrayOutputStream) os).toByteArray(), password)); } } } }
From source file:org.mapfish.print.map.readers.ImageMapReader.java
License:Open Source License
public void render(final Transformer transformer, ParallelMapTileLoader parallelMapTileLoader, String srs, boolean first) { LOGGER.debug(baseUrl);//from w w w .ja v a 2 s .c om parallelMapTileLoader.addTileToLoad(new MapTileTask() { public Image image; public void readTile() throws DocumentException { image = PDFUtils.createImage(context, extentMaxX - extentMinX, extentMaxY - extentMinY, baseUrl, 0); image.setAbsolutePosition(extentMinX, extentMinY); } public void renderOnPdf(PdfContentByte dc) throws DocumentException { //add the image using a geo->paper transformer final AffineTransform geoTransform = transformer.getGeoTransform(false); dc.transform(geoTransform); if (opacity < 1.0) { PdfGState gs = new PdfGState(); gs.setFillOpacity(opacity); gs.setStrokeOpacity(opacity); dc.setGState(gs); } dc.addImage(image); } }); }
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();//from w ww.ja va 2 s . co m try { 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.BitmapTileRenderer.java
License:Open Source License
public void render(Transformer transformer, List<URI> uris, ParallelMapTileLoader parallelMapTileLoader, final RenderingContext context, final float opacity, int nbTilesHorizontal, float offsetX, float offsetY, final long bitmapTileW, final long bitmapTileH) throws IOException { final AffineTransform bitmapTransformer = transformer.getBitmapTransform(); final double rotation = transformer.getRotation(); for (int i = 0; i < uris.size(); i++) { final URI uri = uris.get(i); if (uri == null) { continue; }//from w w w.java 2 s . c om 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; } parallelMapTileLoader.addTileToLoad(new MapTileTask() { public Image map; protected void readTile() throws IOException, DocumentException { map = PDFUtils.getImage(context, uri, bitmapTileW, bitmapTileH); map.setAbsolutePosition(posX, posY); } protected void renderOnPdf(PdfContentByte dc) throws DocumentException { dc.transform(bitmapTransformer); if (opacity < 1.0) { PdfGState gs = new PdfGState(); gs.setFillOpacity(opacity); gs.setStrokeOpacity(opacity); dc.setGState(gs); } dc.addImage(map); } }); } }
From source file:org.mapfish.print.map.renderers.vector.PointRenderer.java
License:Open Source License
protected void renderImpl(RenderingContext context, PdfContentByte dc, PJsonObject style, Point geometry) { PdfGState state = new PdfGState(); final Coordinate coordinate = geometry.getCoordinate(); float pointRadius = style.optFloat("pointRadius", 4.0f); final float f = context.getStyleFactor(); String graphicName = style.optString("graphicName"); float width = style.optFloat("graphicWidth", pointRadius * 2.0f); float height = style.optFloat("graphicHeight", pointRadius * 2.0f); float offsetX = style.optFloat("graphicXOffset", -width / 2.0f); float offsetY = style.optFloat("graphicYOffset", -height / 2.0f); // See Feature/Vector.js for more information about labels String label = style.optString("label"); String labelAlign = style.optString("labelAlign", "lb"); /*/*w w w. ja v a 2s.co m*/ * Valid values for horizontal alignment: "l"=left, "c"=center, "r"=right. * Valid values for vertical alignment: "t"=top, "m"=middle, "b"=bottom. */ float labelXOffset = style.optFloat("labelXOffset", (float) 0.0); float labelYOffset = style.optFloat("labelYOffset", (float) 0.0); String fontColor = style.optString("fontColor", "#000000"); /* Supported itext fonts: COURIER, HELVETICA, TIMES_ROMAN */ String fontFamily = style.optString("fontFamily", "HELVETICA"); String fontSize = style.optString("fontSize", "12"); String fontWeight = style.optString("fontWeight", "normal"); if (style.optString("externalGraphic") != null) { float opacity = style.optFloat("graphicOpacity", style.optFloat("fillOpacity", 1.0f)); state.setFillOpacity(opacity); state.setStrokeOpacity(opacity); dc.setGState(state); try { Image image = PDFUtils.createImage(context, width * f, height * f, new URI(style.getString("externalGraphic")), 0.0f); image.setAbsolutePosition((float) coordinate.x + offsetX * f, (float) coordinate.y + offsetY * f); dc.addImage(image); } catch (BadElementException e) { context.addError(e); } catch (URISyntaxException e) { context.addError(e); } catch (DocumentException e) { context.addError(e); } } else if (graphicName != null && !graphicName.equalsIgnoreCase("circle")) { PolygonRenderer.applyStyle(context, dc, style, state); float[] symbol = SYMBOLS.get(graphicName); if (symbol == null) { throw new InvalidValueException("graphicName", graphicName); } dc.setGState(state); dc.moveTo((float) coordinate.x + symbol[0] * width * f + offsetX * f, (float) coordinate.y + symbol[1] * height * f + offsetY * f); for (int i = 2; i < symbol.length - 2; i += 2) { dc.lineTo((float) coordinate.x + symbol[i] * width * f + offsetX * f, (float) coordinate.y + symbol[i + 1] * height * f + offsetY * f); } dc.closePath(); dc.fillStroke(); } else if (label != null && label.length() > 0) { BaseFont bf = PDFUtils.getBaseFont(fontFamily, fontSize, fontWeight); float fontHeight = (float) Double.parseDouble(fontSize.toLowerCase().replaceAll("px", "")) * f; dc.setFontAndSize(bf, fontHeight); dc.setColorFill(ColorWrapper.convertColor(fontColor)); state.setFillOpacity((float) 1.0); dc.setGState(state); dc.beginText(); dc.setTextMatrix((float) coordinate.x + labelXOffset * f, (float) coordinate.y + labelYOffset * f); dc.setGState(state); dc.showTextAligned(PDFUtils.getHorizontalAlignment(labelAlign), label, (float) coordinate.x + labelXOffset * f, (float) coordinate.y + labelYOffset * f - PDFUtils.getVerticalOffset(labelAlign, fontHeight), 0); dc.endText(); } else { PolygonRenderer.applyStyle(context, dc, style, state); dc.setGState(state); dc.circle((float) coordinate.x, (float) coordinate.y, pointRadius * f); dc.fillStroke(); } }