Java代码如何将PDF转换为图片呢?

戚薇 Java经验 发布时间:2023-04-15 21:21:27 阅读数:2794 1
下文笔者讲述将PDF文件转换为图片的方法分享,如下所示

PDF转图片的实现思路

方式1:
   借助icepdf.jar

方式2:
   借助pdfbox.jar包

方式3:
   借助jpedal.jar包

icepdf简介

//导入相应的jar包
icepdf-core.jar
icepdf-pro.jar
icepdf-pro-intl.jar
icepdf-viewer.jar
例:
    String filePath = "d:/test.pdf";
    Document document = new Document();
    document.setFile(filePath);
    float scale = 2.5f;//缩放比例
    float rotation = 0f;//旋转角度
          
    for (int i = 0; i < document.getNumberOfPages(); i++) {
      BufferedImage image = (BufferedImage)
      document.getPageImage(i, GraphicsRenderingHints.SCREEN, org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation, scale);
     RenderedImage rendImage = image;
     try {
         File file = new File("d:/testPDF_" + i + ".png");
         ImageIO.write(rendImage, "png", file); 
     } catch (IOException e) {
         e.printStackTrace();
     }
       image.flush();
   }
  document.dispose();

pdfbox

maven 导入相应jar包
<!--pdf转图片-->
<dependency>
   <groupId>org.apache.pdfbox</groupId>
   <artifactId>pdfbox</artifactId>
   <version>3.0.0-alpha2</version>
</dependency>
<dependency>
   <groupId>org.apache.pdfbox</groupId>
   <artifactId>fontbox</artifactId>
   <version>3.0.0-alpha2</version>
</dependency>
  File file = new File("d:\\test.pdf");
  try {
    PDDocument doc = PDDocument.load(file);
    PDFRenderer renderer = new PDFRenderer(doc);
     int pageCount = doc.getNumberOfPages();
    for(int i=0;i<pageCount;i++){
      BufferedImage image = renderer.renderImageWithDPI(i, 296);
//          BufferedImage image = renderer.renderImage(i, 2.5f);
      ImageIO.write(image, "PNG", new File("D:\\pdfbox_image.png"));
    }
  } catch (IOException e) {
    e.printStackTrace();
  }

jpedal

下载jar包
jpedal_lgpl.jar
 PdfDecoder decode_pdf = new PdfDecoder(true);
  try {
       decode_pdf.openPdfFile("D:\\test.pdf"); //file
   //   decode_pdf.openPdfFile("C:/jpedalPDF.pdf", "password"); //encrypted file
   //      decode_pdf.openPdfArray(bytes); //bytes is byte[] array with PDF
   //      decode_pdf.openPdfFileFromURL("http://www.mysite.com/jpedalPDF.pdf",false);
   //      decode_pdf.openPdfFileFromInputStream(in, false); 
   
       int start = 1, end = decode_pdf.getPageCount();
      for(int i = start; i < end+1; i++){
        BufferedImage img=decode_pdf.getPageAsImage(i);
        try {
         ImageIO.write(img, "png", new File("D:\\jpedal_image.png"));
        } catch (IOException e) {
          e.printStackTrace();
        } 
      }
      decode_pdf.closePdfFile();
    } catch (PdfException e) {
      e.printStackTrace();
    }
  
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202304/16815649276248.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者