java实现截取PDF指定页并进行图片格式转换功能

1、引入依赖

<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>pdfbox</artifactId>
  <version>2.0.16</version>
</dependency>
<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>fontbox</artifactId>
  <version>2.0.16</version>
</dependency>

jar包下载地址:

https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox

2、实现DEMO

package com.dddpeter.app;
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.List;
import java.util.ListIterator;
public class PDFUtils {
  public static String splitPdf(int pageNum, String source, String dest) {
    File indexFile = new File(source);
    File outFile = new File(dest);
    PDDocument document = null;
    try {
      document = PDDocument.load(indexFile);
      // document.getNumberOfPages();
      Splitter splitter = new Splitter();
      splitter.setStartPage(pageNum);
      splitter.setEndPage(pageNum);
      List<PDDocument> pages = splitter.split(document);
      ListIterator<PDDocument> iterator = pages.listIterator();
      while (iterator.hasNext()) {
        PDDocument pd = iterator.next();
        if (outFile.exists()) {
          outFile.delete();
        }
        pd.save(outFile);
        pd.close();
        if (outFile.exists()) {
          return outFile.getPath();
        }
      }
      document.close();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
  public static void pdfFileToImage(File pdffile,String targetPath){
    try {
      FileInputStream instream = new FileInputStream(pdffile);
      InputStream byteInputStream=null;
      try {
        PDDocument doc = PDDocument.load(instream);
        PDFRenderer renderer = new PDFRenderer(doc);
        int pageCount = doc.getNumberOfPages();
        if (pageCount > 0) {
          BufferedImage image = renderer.renderImage(0, 4.0f);
          image.flush();
          ByteArrayOutputStream bs = new ByteArrayOutputStream();
          ImageOutputStream imOut;
          imOut = ImageIO.createImageOutputStream(bs);
          ImageIO.write(image, "png", imOut);
          byteInputStream = new ByteArrayInputStream(bs.toByteArray());
          byteInputStream.close();
        }
        doc.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      File uploadFile = new File(targetPath);
      FileOutputStream fops;
      fops = new FileOutputStream(uploadFile);
      fops.write(readInputStream(byteInputStream));
      fops.flush();
      fops.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
  public static byte[] readInputStream(InputStream inStream) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = inStream.read(buffer)) != -1) {
      outStream.write(buffer, 0, len);
    }
    inStream.close();
    return outStream.toByteArray();
  }
  public static void main(String[] args) {
    String path = splitPdf(4,"D:\\data\\11.pdf","D:\\data\\out11.pdf");
    File file =new File(path);
    //上传的是png格式的图片结尾
    String targetfile="D:\\data\\out11.png";
    pdfFileToImage(file,targetfile);
  }
}

总结

以上所述是小编给大家介绍的java实现截取PDF指定页并进行图片格式转换功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Java gif图片转换为jpg格式

    下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像上传支持JPG.JPEG.BMP.GIF.PNG格式图片.而商汤人脸设备仅支持JPG.JPEG.BMP.PNG,故如图片为GIF格式需要转换 fileParams.put("avatarFile", api.GifToJpg(avatar_file)); }else{ fileParams

  • Java处理Webp图片格式转换的示例代码

    前言 Webp是Google推出的一种新型图片格式,相比于 传统的PNG/JPG图片有着更小体积的优势,在Web中有着广泛的应用.由于Webp格式推出比较晚, Jdk 内置的图片编解码库对此并不支持. 网上给出的Java环境解决方案往往需要手动在java.library.path中安装对应的动态链接库,windows是dll文件,linux是so文件.这对于开发部署非常不方便. 本文提供一种无需手动安装动态链接库,同时可以方便处理Webp的解决方案 WebP是谷歌的图片格式,java 类库ima

  • JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. 例如: "unhappy".substring(2) returns "happy" "Harbison".substring(3) returns "bison" "emptiness".substring

  • java图片格式转换的三段代码

    网上关于java图片格式内容的文章不是很多,也不是很完整,小编搜集了三段java图片格式转换代码,分享给大家: 第一段:java图片格式转换代码 import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Scanner; import javax.imageio.*; public class FormatConversion { public st

  • java获取文件扩展名的方法小结【正则与字符串截取】

    本文实例讲述了java获取文件扩展名的方法.分享给大家供大家参考,具体如下: 问题描述:  有一个String类型:String imageName = "zy.jpg"; 请问我如何截取"."后面的后辍名. 解决方法一:使用正则表达式 package csdnTest; import java.util.regex.*; public class CSDNTest { public static void main(String[] ss) { String s=

  • Java实现将png格式图片转换成jpg格式图片的方法【测试可用】

    本文实例讲述了Java实现将png格式图片转换成jpg格式图片的方法.分享给大家供大家参考,具体如下: import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ConvertImageFile { public static void main(Str

  • Java截取特定两个标记之间的字符串实例

    如有一串字符串: <abcd efg>higklmnopq<rstu vwxyz> java代码如下: public class StringTest { public static void main(String[] args) { String str = "<abcd efg>higklmnopq<rstu vwxyz"; System.out.println(str.substring(str.indexOf(">&q

  • java实现截取PDF指定页并进行图片格式转换功能

    1.引入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.16</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifa

  • Java实现的Excel列号数字与字母互相转换功能

    本文实例讲述了Java实现的Excel列号数字与字母互相转换功能.分享给大家供大家参考,具体如下: 我们在实现对Excel的导入导出的时候,往往需要准确的给用户提示信息,提示到具体的Excel的单元格,这里就需要对Excel的列号进行数字和字母的转换,今天正好用到这个需求,所以就写了一个demo,总结一下: Java实现: package test; /** * Deal with Excel column indexToStr and strToIndex * @author Stephen.

  • Java实现的可选择及拖拽图片的面板功能【基于swing组件】

    本文实例讲述了Java实现的可选择及拖拽图片的面板功能.分享给大家供大家参考,具体如下: 今天在论坛上看到帖子希望能在 Swing 中实现像拖地图一样拖拽图片.这里是一个最简单的实现,提供了一个基本思路. import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.

  • Java使用icepdf将pdf文件按页转成图片

    本文实例为大家分享了Java使用icepdf将pdf文件按页转成图片的具体代码,供大家参考,具体内容如下 Maven icepdf包,这里过滤掉jai-core <dependency> <groupId>org.icepdf.os</groupId> <artifactId>icepdf-core</artifactId> <version>6.1.2</version> <exclusions> <e

  • java 查找替换pdf中的指定文本

    本文介绍通过Java程序批量替换PDF中的指定文本内容. 程序环境准备如下: 程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具:另外JDK版本建议使用高版本更佳. jar文件导入后,可调用Spire.PDF提供的接口.方法等操作PDF,参考如下导入结果: 注:可手动下载jar包.下载后,解压文件,将lib文件夹下的Spire.Pdf.jar文件导入Java程序. Java 代码示例 import com.spire.pdf.*; import com.spire.pdf.ge

  • Java设置PDF跨页表格重复显示表头行的步骤详解

    目录 前言 1.导入Jar包 2.Java代码 总结 前言 在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好.下面分享一个方法如何在表格跨页是显示表格的表头内容,这里只需要简单使用方法 grid.setRepeatHeader(true);即可. 具体参考如下方法步骤. 1.导入Jar包 这里导入的是Free Spire.PDF for Java的jar包,Spire.PDF for Java 支持的功能非常丰富,例如 PDF 文档安全性

  • C#获取指定PDF文件页数的方法

    本文实例讲述了C#获取指定PDF文件页数的方法.分享给大家供大家参考.具体如下: using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Forms; namespace RobvanderWoude { class PDFPageCount { static int Main( string[] args ) { #region Get help if ( args.Le

  • Python实现截取PDF文件中的几页代码实例

    截取PDF文件中的几页有很多做法. 1. 把文件用Google的Chrome浏览器打开,打印其中几页,另存为PDF.简单. 2. 安装Adobe的Acrobat,里面会有更全的功能.然而,收费. 3. 用Python的PyPDF2包.(Python 3,亲测有效) 下面是Python代码实例: pip install PyPDF2 from PyPDF2 import PdfFileWriter, PdfFileReader # 开始页 start_page = 0 # 截止页 end_page

随机推荐