PDFRenderer插件pdf文件转图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012345283/article/details/41516043

PDF-Renderer是Sun公布的一个开源项目, 它主要目的是方便用户展示PDF文档。 通过解析PDF文档, 使用户能够在自己的应用中查看, 预览,绘制PNG和合并到3D的场景中。 关于该项目的介绍可以看这里。不过貌似很久没更新了。也是,Sun都已被Oracle收购很久了~

不过前段时间搞PDF打印的时候也实践了一下PDF-Renderer,下面是一段实例代码:


 
 
  1. public class TestPDFRenderer {
  2. public void Pdf_Png(int pageNumber) {
  3. int pagen = pageNumber;
  4. File file = new File( "E:/maven.pdf");
  5. PDFFile pdffile = null;
  6. // set up the PDF reading
  7. try {
  8. RandomAccessFile raf = new RandomAccessFile(file, "r");
  9. FileChannel channel = raf.getChannel();
  10. ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0,
  11. channel.size());
  12. pdffile = new PDFFile(buf);
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. //if (pagen < pdffile.getNumPages())
  17. //return;
  18. // print出该pdf文档的页数
  19. System.out.println(pdffile.getNumPages());
  20. // 设置将第pagen也生成png图片
  21. PDFPage page = pdffile.getPage(pagen);
  22. // create and configure a graphics object
  23. int width = ( int) page.getBBox().getWidth();
  24. int height = ( int) page.getBBox().getHeight();
  25. BufferedImage img = new BufferedImage(width, height,
  26. BufferedImage.TYPE_INT_ARGB);
  27. Graphics2D g2 = img.createGraphics();
  28. g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  29. RenderingHints.VALUE_ANTIALIAS_ON);
  30. // do the actual drawing
  31. PDFRenderer renderer = new PDFRenderer(page, g2, new Rectangle( 0, 0,
  32. width, height), null, Color.WHITE);
  33. try {
  34. page.waitForFinish();
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. }
  38. renderer.run();
  39. g2.dispose();
  40. try {
  41. ImageIO.write(img, "gif", new File( "D:/Image.gif"));
  42. } catch (Exception ex) {
  43. ex.printStackTrace();
  44. }
  45. }
  46. public static void main(String args[]) {
  47. new TestPDFRenderer().Pdf_Png( 1);
  48. }
  49. }

生成了gif之后,可以利用打印机将该图片打印出来。

不过,也许是使用了针式打印机的缘故吧,打印出来的效果很差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值