PdftoImage-Convert PDF to Image by using PdfRenderer library

Bases on PDF Renderer library, we can easily develop many useful tools. Here is a example I wrote today, the aim is converting every pages of a pdf to images (png, if you need other format, you can use JAI).

import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
 
import javax.imageio.ImageIO;
 
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
 
 
public class Pdf2Image {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		if(args.length!=2)
		{
			System.err.println("Usage:Pdf2Image pdf imageFolder");
			return;
		}
		File file = new File(args[0]);
		RandomAccessFile raf;
		try {
			raf = new RandomAccessFile(file, "r");
 
			FileChannel channel = raf.getChannel();
			ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
			PDFFile pdffile = new PDFFile(buf);
			// draw the first page to an image
			int num=pdffile.getNumPages();
			for(int i=0;i<num;i++)
			{
				PDFPage page = pdffile.getPage(i);
 
				//get the width and height for the doc at the default zoom				
				int width=(int)page.getBBox().getWidth();
				int height=(int)page.getBBox().getHeight();				
 
				Rectangle rect = new Rectangle(0,0,width,height);
				int rotation=page.getRotation();
				Rectangle rect1=rect;
				if(rotation==90 || rotation==270)
					rect1=new Rectangle(0,0,rect.height,rect.width);
 
				//generate the image
				BufferedImage img = (BufferedImage)page.getImage(
							rect.width, rect.height, //width & height
							rect1, // clip rect
							null, // null for the ImageObserver
							true, // fill background with white
							true  // block until drawing is done
					);
 
				ImageIO.write(img, "png", new File(args[1]+i+".png"));
			}
		} 
		catch (FileNotFoundException e1) {
			System.err.println(e1.getLocalizedMessage());
		} catch (IOException e) {
			System.err.println(e.getLocalizedMessage());
		}
	}
}

Source Code of PDF2Image

Leave a Reply

You must be logged in to post a comment.