将PDF文件按pdf页码转换成图片

 转载:http://baiyun11095.blog.163.com/blog/static/33798962201032415853412/

这几天学校里做作业的时候遇到一个问题,就是要将PDF文档中的内容全部转化为图片。

我在网上找了很多资料,发先有好多这的实现方式,我也对这些资料做了一些整理。

 

我这里就介绍一个自认为还不错的实现方式,使用java实现的。

1)下载一个 PDFRenderer.jar的包

    URL:https://pdf-renderer.dev.java.net/

2)在这个官网上还有几个sample ,大家可以看一下 :https://pdf-renderer.dev.java.net/examples.html

 

3)下面一段代码就是将一个pdf生成png格式的图片 

扫描二维码关注公众号,回复: 817409 查看本文章
package org.bruce.vertices.asist.experiments;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
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;
import com.sun.pdfview.PDFRenderer;

public class TestViewPdf {
	public static void main(String[] args) {
		new TestViewPdf().Pdf_Png(1);
	}
	
	public void Pdf_Png(int pageNumber) {
		int pagen = pageNumber;
		File file = new File("/Users/user/Desktop/np收益情况.pdf");

		PDFFile pdffile = null;
		// set up the PDF reading
		try {
			RandomAccessFile raf = new RandomAccessFile(file, "r");
			FileChannel channel = raf.getChannel();
			ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0,
					channel.size());
			pdffile = new PDFFile(buf);
		} catch (Exception e) {
			e.printStackTrace();
		}

		if (pagen < pdffile.getNumPages()) {
			return;
		}
		
		// print 出该 pdf 文档的页数
		System.out.println(pdffile.getNumPages());

		// 设置将第 pagen 页生成 png 图片
		PDFPage page = pdffile.getPage(pagen);
		
		// create and configure a graphics object
		int width = (int) page.getBBox().getWidth();
		int height = (int) page.getBBox().getHeight();
		BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2 = img.createGraphics();
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		// do the actual drawing
		PDFRenderer renderer = new PDFRenderer(page, g2, new Rectangle(0, 0, width, height), null, Color.WHITE);
		try {
			page.waitForFinish();
		} catch (Exception e) {
			e.printStackTrace();
		}
		renderer.run();
		g2.dispose();

		try {
			ImageIO.write(img, "png", new File("/Users/user/Desktop/123.png"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

除了生成PNG图片外,

PDF Renderer还有一下功能

在用户自己的应用中查看PDF。 

提供PDF文件的打印预览。 

将PDF合并到3D场景中。 

在PDF之上绘图,并可以在网络查看器中进行标注。 

猜你喜欢

转载自weigang-gao.iteye.com/blog/2218084