@Override public void createSignatureImage(PDDocument template, BufferedImage image) throws IOException { pdfStructure.setImage(LosslessFactory.createFromImage(template, image)); LOG.info("Visible Signature Image has been created"); }
private static PDImageXObject createFromGrayImage(BufferedImage image, PDDocument document) throws IOException { int height = image.getHeight(); int width = image.getWidth(); int[] rgbLineBuffer = new int[width]; int bpc = image.getColorModel().getPixelSize(); ByteArrayOutputStream baos = new ByteArrayOutputStream(((width*bpc/8)+(width*bpc%8 != 0 ? 1:0))*height); try (MemoryCacheImageOutputStream mcios = new MemoryCacheImageOutputStream(baos)) { for (int y = 0; y < height; ++y) { for (int pixel : image.getRGB(0, y, width, 1, rgbLineBuffer, 0, width)) { mcios.writeBits(pixel & 0xFF, bpc); } int bitOffset = mcios.getBitOffset(); if (bitOffset != 0) { mcios.writeBits(0, 8 - bitOffset); } } mcios.flush(); } return prepareImageXObject(document, baos.toByteArray(), image.getWidth(), image.getHeight(), bpc, PDDeviceGray.INSTANCE); }
|| (image.getType() == BufferedImage.TYPE_BYTE_BINARY && image.getColorModel().getPixelSize() == 1)) return createFromGrayImage(image, document); PDImageXObject pdImageXObjectClassic = createFromRGBImage(image, document); if (pdImageXObjectClassic.getCOSObject().getLength() < pdImageXObject.getCOSObject().getLength()) return createFromRGBImage(image, document);
PDImageXObject pdImage = prepareImageXObject(document, imageData, image.getWidth(), image.getHeight(), bpc, deviceColorSpace); PDImage xAlpha = createAlphaFromARGBImage(document, image); if (xAlpha != null)
return createAlphaFromARGBImage2(document, image); PDImageXObject pdImage = prepareImageXObject(document, bos.toByteArray(), image.getWidth(), image.getHeight(), bpc, PDDeviceGray.INSTANCE);
return LosslessFactory.createFromImage(doc, bim);
PDImageXObject pdImage = prepareImageXObject(document, imageData, image.getWidth(), image.getHeight(), bpc, deviceColorSpace); if (transparency != Transparency.OPAQUE) PDImageXObject pdMask = prepareImageXObject(document, alphaImageData, image.getWidth(), image.getHeight(), apbc, PDDeviceGray.INSTANCE); pdImage.getCOSObject().setItem(COSName.SMASK, pdMask);
|| (image.getType() == BufferedImage.TYPE_BYTE_BINARY && image.getColorModel().getPixelSize() == 1)) return createFromGrayImage(image, document); PDImageXObject pdImageXObjectClassic = createFromRGBImage(image, document); if (pdImageXObjectClassic.getCOSObject().getLength() < pdImageXObject.getCOSObject().getLength()) return createFromRGBImage(image, document);
return LosslessFactory.createFromImage(doc, bim);
PDImageXObject pdImage = prepareImageXObject(document, imageData, image.getWidth(), image.getHeight(), bpc, deviceColorSpace); if (transparency != Transparency.OPAQUE) PDImageXObject pdMask = prepareImageXObject(document, alphaImageData, image.getWidth(), image.getHeight(), apbc, PDDeviceGray.INSTANCE); pdImage.getCOSObject().setItem(COSName.SMASK, pdMask);
return LosslessFactory.createFromImage(document, bim);
PDImageXObject pdImage = prepareImageXObject(document, bos.toByteArray(), bi.getWidth(), bi.getHeight(), bpc, PDDeviceGray.INSTANCE);
@Override public void createSignatureImage(PDDocument template, BufferedImage image) throws IOException { pdfStructure.setImage(LosslessFactory.createFromImage(template, image)); LOG.info("Visible Signature Image has been created"); }
private static PDImageXObject createFromGrayImage(BufferedImage image, PDDocument document) throws IOException { int height = image.getHeight(); int width = image.getWidth(); int[] rgbLineBuffer = new int[width]; int bpc = image.getColorModel().getPixelSize(); ByteArrayOutputStream baos = new ByteArrayOutputStream(((width*bpc/8)+(width*bpc%8 != 0 ? 1:0))*height); MemoryCacheImageOutputStream mcios = new MemoryCacheImageOutputStream(baos); for (int y = 0; y < height; ++y) { for (int pixel : image.getRGB(0, y, width, 1, rgbLineBuffer, 0, width)) { mcios.writeBits(pixel & 0xFF, bpc); } int bitOffset = mcios.getBitOffset(); if (bitOffset != 0) { mcios.writeBits(0, 8 - bitOffset); } } mcios.flush(); mcios.close(); return prepareImageXObject(document, baos.toByteArray(), image.getWidth(), image.getHeight(), bpc, PDDeviceGray.INSTANCE); }
@Override public void createSignatureImage(PDDocument template, BufferedImage image) throws IOException { pdfStructure.setImage(LosslessFactory.createFromImage(template, image)); LOG.info("Visible Signature Image has been created"); }
private PDImageXObject ensureCached(final ScaledPng sj) { BufferedImage bufferedImage = sj.bufferedImage(); PDImageXObject temp = pngMap.get(bufferedImage); if (temp == null) { try { temp = LosslessFactory.createFromImage(doc, bufferedImage); } catch (IOException ioe) { // can there ever be an exception here? Doesn't it get written later? throw new IllegalStateException("Caught exception creating a PDImageXObject from a bufferedImage", ioe); } pngMap.put(bufferedImage, temp); } return temp; }
/** * <p> * Drawing simple {@link Image} in {@link PDPageContentStream}. * </p> * * @param doc * {@link PDDocument} where drawing will be applied * @param stream * {@link PDPageContentStream} where drawing will be applied * @param x * X coordinate for image drawing * @param y * Y coordinate for image drawing * @throws IOException if loading image fails */ public void draw(final PDDocument doc, final PDPageContentStream stream, float x, float y) throws IOException { PDImageXObject imageXObject = LosslessFactory.createFromImage(doc, image); stream.drawImage(imageXObject, x, y - height, width, height); }
public PDRectangle drawImage(final float x, final float y, final float width, final float height, final String resourceImageName) throws IOException, URISyntaxException { final float startingY = checkYAndSwitchPage(y, height); final BufferedImage bufferedImage = ImageIO.read(getClass().getResourceAsStream(resourceImageName)); final PDImageXObject pdImage = LosslessFactory.createFromImage(document, bufferedImage); contentStream.drawImage(pdImage, x, startingY, width, height); return new PDRectangle(x, startingY, width, height); }
return LosslessFactory.createFromImage(doc, bim);
return LosslessFactory.createFromImage(doc, bim);