Example usage for com.lowagie.text.pdf PdfDictionary getKeys

List of usage examples for com.lowagie.text.pdf PdfDictionary getKeys

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfDictionary getKeys.

Prototype

public Set getKeys() 

Source Link

Document

Get all keys that are set.

Usage

From source file:questions.images.ResizeImage.java

public static void resizeImagesInPage(PdfReader reader, int page, float factor) throws IOException {
    PdfDictionary pageDictionary = reader.getPageN(page);
    PdfDictionary resources = (PdfDictionary) PdfReader.getPdfObject(pageDictionary.get(PdfName.RESOURCES));
    PdfDictionary xobjects = (PdfDictionary) PdfReader.getPdfObject(resources.get(PdfName.XOBJECT));
    if (xobjects != null) {
        for (Object xObjectKey : xobjects.getKeys()) {
            PdfName xobjectName = (PdfName) xObjectKey;
            PdfObject xobj = xobjects.get(xobjectName);
            PRStream imageStream = (PRStream) PdfReader.getPdfObject(xobj);
            PdfName subtype = (PdfName) PdfReader.getPdfObject(imageStream.get(PdfName.SUBTYPE));
            PdfName filter = (PdfName) PdfReader.getPdfObject(imageStream.get(PdfName.FILTER));
            if (PdfName.IMAGE.equals(subtype) && PdfName.DCTDECODE.equals(filter)) {
                BufferedImage src = ImageIO
                        .read(new ByteArrayInputStream(PdfReader.getStreamBytesRaw(imageStream)));
                int width = (int) (src.getWidth() * factor);
                int height = (int) (src.getHeight() * factor);
                BufferedImage dest = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                AffineTransform at = AffineTransform.getScaleInstance(factor, factor);
                Graphics2D g = dest.createGraphics();
                g.drawRenderedImage(src, at);
                ByteArrayOutputStream newImage = new ByteArrayOutputStream();
                ImageIO.write(dest, "JPG", newImage);
                imageStream.setData(newImage.toByteArray(), false, PRStream.NO_COMPRESSION);
                imageStream.put(PdfName.WIDTH, new PdfNumber(width));
                imageStream.put(PdfName.HEIGHT, new PdfNumber(height));
                imageStream.put(PdfName.FILTER, PdfName.DCTDECODE);
            }/*from  www .jav a  2s .co  m*/
        }
    }
}