转载自: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之上绘图,并可以在网络查看器中进行标注。
提供PDF文件的打印预览。
将PDF合并到3D场景中。
在PDF之上绘图,并可以在网络查看器中进行标注。