package org.rr.jeborker.metadata.pdf;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import org.rr.commons.log.LoggerFactory;
import org.rr.commons.mufs.MimeUtils;
import org.rr.pm.image.ImageUtils;
import com.jmupdf.exceptions.DocException;
import com.jmupdf.exceptions.DocSecurityException;
import com.jmupdf.exceptions.PageException;
import com.jmupdf.interfaces.Page;
import com.jmupdf.interfaces.PagePixels;
import com.jmupdf.page.PageRect;
class JMuPDFRenderer extends PDFRenderer {
public byte[] renderPagetoJpeg(int pageNumber) {
BufferedImage image;
try {
image = renderPage(pageNumber);
byte[] imageBytes = ImageUtils.getImageBytes(image, MimeUtils.MIME_JPEG);
return imageBytes;
} catch (IOException e) {
LoggerFactory.getLogger().log(Level.INFO, "Failed to render image for " + getResourceHandler() , e);
}
return null;
}
@Override
public BufferedImage renderPage(int pageNumber) throws IOException {
com.jmupdf.pdf.PdfDocument doc = null;
PagePixels pp = null;
Page page = null;
PageRect bb = null;
try {
byte[] pdfdata = getResourceHandler().getContent();
doc = new com.jmupdf.pdf.PdfDocument(pdfdata);
page = doc.getPage(pageNumber);
pp = page.getPagePixels();
bb = page.getBoundBox();
pp.getOptions().setRotate(Page.PAGE_ROTATE_NONE);
pp.drawPage(null, bb.getX0(), bb.getY0(), bb.getX1(), bb.getY1());
BufferedImage image = pp.getImage();
return image;
} catch (IOException e) {
e.printStackTrace();
} catch (DocException e) {
LoggerFactory.getLogger().log(Level.INFO, "Failed to render image for " + getResourceHandler() , e);
} catch (DocSecurityException e) {
LoggerFactory.getLogger().log(Level.INFO, "Failed to render image for " + getResourceHandler() , e);
} catch (PageException e) {
LoggerFactory.getLogger().log(Level.INFO, "Failed to render image for " + getResourceHandler() , e);
} finally {
if (pp != null) {
pp.dispose();
}
if (doc != null) {
doc.dispose();
}
}
return null;
}
}