List of usage examples for com.lowagie.text.pdf PdfName XOBJECT
PdfName XOBJECT
To view the source code for com.lowagie.text.pdf PdfName XOBJECT.
Click Source Link
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); }//from w w w . j a va 2s .co 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 w w w. ja v a 2s . c o m*/ } } }