将PDF转化为图片

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

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

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

我这里就介绍一个自认为还不错的实现方式,使用java实现的。
1)下载一个 PDFRenderer.jar的包
2)在这个官网上还有几个sample ,大家可以看一下 :https://pdf-renderer.dev.java.net/examples.html

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

TestViewPdf.java
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之上绘图,并可以在网络查看器中进行标注。 

转载于:https://www.cnblogs.com/yang3wei/archive/2012/06/20/2739696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值