org.jrimum.bopepo.excludes.PDFs.java Source code

Java tutorial

Introduction

Here is the source code for org.jrimum.bopepo.excludes.PDFs.java

Source

/* 
 * Copyright 2014 JRimum Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 * 
 * Created at: 12/01/2014 - 17:09:13
 *
 * ================================================================================
 *
 * Direitos autorais 2014 JRimum Project
 *
 * Licenciado sob a Licena Apache, Verso 2.0 ("LICENA"); voc no pode 
 * usar esse arquivo exceto em conformidade com a esta LICENA. Voc pode obter uma 
 * cpia desta LICENA em http://www.apache.org/licenses/LICENSE-2.0 A menos que 
 * haja exigncia legal ou acordo por escrito, a distribuio de software sob esta 
 * LICENA se dar COMO EST??, SEM GARANTIAS OU CONDIES DE QUALQUER TIPO, sejam 
 * expressas ou tcitas. Veja a LICENA para a redao especfica a reger permisses 
 * e limitaes sob esta LICENA.
 * 
 * Criado em: 12/01/2014 - 17:09:13 
 * 
 */

package org.jrimum.bopepo.excludes;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Collection;
import java.util.Map;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.ImageRenderInfo;
import com.itextpdf.text.pdf.parser.PdfImageObject;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo;

/**
 * Utilitrio para operaes com PDFs.
 * 
 * @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
 */
public class PDFs {

    public static Map<String, Collection<BufferedImage>> getImages(byte[] pdf) throws IOException {
        PdfReader reader = new PdfReader(pdf);
        PdfReaderContentParser parser = new PdfReaderContentParser(reader);
        ImageRenderListener listener = new ImageRenderListener();
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            parser.processContent(i, listener);
        }
        reader.close();
        return listener.getImages();
    }

    public static class ImageRenderListener implements RenderListener {
        private Multimap<String, BufferedImage> images = ArrayListMultimap.create();

        public void renderImage(ImageRenderInfo renderInfo) {
            try {
                PdfImageObject image = renderInfo.getImage();
                if (image == null) {
                    return;
                }
                final String ref = String.format("Ref-%s-%s", renderInfo.getRef().getNumber(), image.getFileType());
                images.put(ref, image.getBufferedImage());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

        public Map<String, Collection<BufferedImage>> getImages() {
            return images.asMap();
        }

        public void beginTextBlock() {
        }

        public void endTextBlock() {
        }

        public void renderText(TextRenderInfo renderInfo) {
        }
    }
}