package org.rr.jeborker.metadata.pdf;
import java.awt.image.BufferedImage;
import java.io.IOException;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.commons.mufs.MimeUtils;
import org.rr.pm.image.ImageUtils;
public abstract class PDFRenderer {
private IResourceHandler pdfFile;
public static PDFRenderer getPDFRendererInstance(IResourceHandler pdfFile) {
PDFRenderer result = new JMuPDFRenderer();
result.setResourceHandler(pdfFile);
return result;
}
/**
* Renders a page of the given pdf data.
* @param pdfdata The pdf data bytes.
* @param pageNumber The page number to be rendered starting with 1.
* @return The rendered pdf image or <code>null</code> if the pdf could not be rendered.
* @throws IOException
*/
public abstract BufferedImage renderPage(int pageNumber) throws IOException;
/**
* Renders a page of the given pdf data.
* @param pdfdata The pdf data bytes.
* @param pageNumber The page number to be rendered starting with 1.
* @return The rendered pdf data or <code>null</code> if the pdf could not be rendered.
* @throws IOException
*/
public byte[] renderPagetoJpeg(int pageNumber) throws IOException {
BufferedImage image = renderPage(pageNumber);
byte[] imageBytes = ImageUtils.getImageBytes(image, MimeUtils.MIME_JPEG);
return imageBytes;
}
/**
* Set the pdf file containing the pdf data used for the {@link PDFDocument} instance.
* @param pdfFile The pdf file to be used.
*/
protected void setResourceHandler(IResourceHandler pdfFile) {
this.pdfFile = pdfFile;
}
/**
* get the pdf file for this {@link PDFDocument} instance.
* @return The desired {@link PDFDocument}.
*/
public IResourceHandler getResourceHandler() {
return this.pdfFile;
}
}