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