简单粗暴,Java pdf转图片

Java pdf转图片分为几步?
第一步: 下载jar包,引入,下载地址:https://www.lanzous.com/i7zwcqh
第二步:贴上下面这段代码

import java.awt.Image;  
import java.awt.Rectangle;  
import java.awt.image.BufferedImage;  

import java.io.File;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.RandomAccessFile;  
import java.nio.ByteBuffer;  
import java.nio.channels.FileChannel;  
import javax.swing.SwingUtilities;  
import com.sun.image.codec.jpeg.JPEGCodec;  
import com.sun.image.codec.jpeg.JPEGImageEncoder;  
import com.sun.pdfview.PDFFile;  
import com.sun.pdfview.PDFPage;  

public class PdfToJpgUtil {  
	public static void setup() throws IOException {  

		// load a pdf from a byte buffer  
		File file = new File("C:\\Users\\Administrator\\Desktop\\bbb.pdf");  
		RandomAccessFile 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);  

		System.out.println("页数: " + pdffile.getNumPages());  

		for (int i = 1; i <= pdffile.getNumPages(); i++) {  
			// draw the first page to an image  
			PDFPage page = pdffile.getPage(i);  

			// get the width and height for the doc at the default zoom  
			Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()  
					.getWidth(), (int) page.getBBox().getHeight());  

			// generate the image  
			Image img = page.getImage(rect.width, rect.height, // width &  
					// height  
					rect, // clip rect  
					null, // null for the ImageObserver  
					true, // fill background with white  
					true // block until drawing is done  
					);  

			BufferedImage tag = new BufferedImage(rect.width, rect.height,  
					BufferedImage.TYPE_INT_RGB);  
			tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,  
					null);  
			FileOutputStream out = new FileOutputStream(  
					"C:\\Users\\Administrator\\Desktop\\img\\" + i + ".jpg"); // 输出到文件流  
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
			encoder.encode(tag); // JPEG编码  

			out.close();  
		}  

	}  

	public static void main(final String[] args) {  
		SwingUtilities.invokeLater(new Runnable() {  
			public void run() {  
				try {  
					PdfToJpgTest.setup();  
				} catch (IOException ex) {  
					ex.printStackTrace();  
				}  
			}  
		});  
	}  

}  

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值