Example usage for com.lowagie.text.pdf PdfName RESOURCES

List of usage examples for com.lowagie.text.pdf PdfName RESOURCES

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfName RESOURCES.

Prototype

PdfName RESOURCES

To view the source code for com.lowagie.text.pdf PdfName RESOURCES.

Click Source Link

Document

A name

Usage

From source file:de.offis.health.icardea.cied.pdf.extractor.PDFiText2Extractor.java

License:LGPL

public ArrayList<byte[]> getImages(int pageNumber) throws Exception {
    ArrayList<byte[]> arrayListPageImages = new ArrayList<byte[]>();

    if (pdfReader != null) {
        int numberOfPages = pdfReader.getNumberOfPages();

        if (pageNumber > 0 && pageNumber <= numberOfPages) {

            PdfDictionary pdfDictionary = pdfReader.getPageN(pageNumber);
            if (pdfDictionary != null) {
                //PdfDictionary pdfDictionaryResources = (PdfDictionary)pdfDictionary.get(PdfName.RESOURCES);
                PdfDictionary pdfDictionaryResources = (PdfDictionary) PdfReader
                        .getPdfObject(pdfDictionary.get(PdfName.RESOURCES));

                PdfDictionary pdfDictionaryXObjects = (PdfDictionary) pdfDictionaryResources
                        .get(PdfName.XOBJECT);
                if (pdfDictionaryXObjects != null) {
                    //Set myKeySet = ;
                    //pdfDictionaryXObjects.getKeys().
                    PdfName pdfObjectSubType = null;

                    for (Object pdfKeyObject : pdfDictionaryXObjects.getKeys()) {
                        PdfObject pdfObject = pdfDictionaryXObjects.get((PdfName) pdfKeyObject);

                        if (pdfObject.isIndirect()) {
                            // Eventually check if pdfObject.isDictionary()...we skipped that here
                            PdfDictionary innerPdfDictionary = (PdfDictionary) PdfReader
                                    .getPdfObject(pdfObject);
                            if (innerPdfDictionary.isStream()) {
                                extractImageFromPdfObjectExperimental(null, pageNumber, innerPdfDictionary);

                            } else {
                                //PdfName pdfObjectSubType = (PdfName)PdfReader.getPdfObject(innerPdfDictionary.get(PdfName.SUBTYPE));
                                pdfObjectSubType = (PdfName) PdfReader
                                        .getPdfObject(innerPdfDictionary.get(PdfName.SUBTYPE));

                                /* 
                                * Check if the sub-type is an "IMAGE" and
                                * then get the actual innerPdfObject for
                                * the image extraction code
                                */
                                if (PdfName.IMAGE.equals(pdfObjectSubType)) {
                                    PdfObject innerPdfObject = pdfReader
                                            .getPdfObject(pdfObject.getIndRef().getNumber());
                                    extractImageFromPdfObjectExperimental(null, pageNumber, innerPdfObject);
                                }// ww  w  .j a va 2  s  . c o  m
                            }
                        } // end if checking 'pdfObject' is indirect
                    } // end for
                } // end if checking 'XObject'
            } // end if checking 'PdfDictionary'
        } // end if checking page number 
    } else {
        // TODO: Add own exception.
        throw new Exception("There is no open PDF to work with.");
    } // end if..else

    return arrayListPageImages;
}

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   ww w.  j a  va 2s  . c  om
        }
    }
}