Java实现pdf转图片案例

工程加入依赖:

<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>2.0.15</version>
		</dependency>
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox-tools</artifactId>
			<version>2.0.15</version>
		</dependency>

pdf文件转图片:

    public static List<String> pdf2Img(File pdfFile) {
        if (pdfFile == null || !pdfFile.exists()) {
            throw new RuntimeException("pdf文件不能为空");
        }
        String name = pdfFile.getName().substring(0, pdfFile.getName().lastIndexOf("."));
        String targetPath = pdfFile.getParent() + File.separator + name;
        List<String> imgList = new ArrayList<>();
        try {
            PDDocument doc = PDDocument.load(pdfFile);
            // 页数
            int pageCount = doc.getNumberOfPages();
            PDFRenderer pdfRenderer = new PDFRenderer(doc);
            for (int i = 0; i < pageCount; i++) {
                File targetFile = new File(targetPath + File.separator + name + "-" + (i + 1) + ".jpg");
                if (!targetFile.getParentFile().exists()) {
                    FileUtil.mkdir(targetFile.getParentFile());
                }
                pdfRenderer.renderImage(i);
                BufferedImage image = pdfRenderer.renderImageWithDPI(i, 105, ImageType.RGB);
                ImageIOUtil.writeImage(image, targetFile.getPath(), 105);
                imgList.add(targetFile.getPath());
            }
        } catch (IOException e) {
            log.error("文件转换异常", e);
            throw new RuntimeException("文件转换异常,err=" + e.getMessage());
        }

pdf转成一张图片:

    /**
     * pdf转成一张图片
     *
     * @param pdfFile pdf图片文件
     * @return 图片地址
     */
    public static String pdf2OneImg(File pdfFile) {

        List<String> imgs = pdf2Img(pdfFile);
        int len = imgs.size();
        File[] src = new File[len];
        BufferedImage[] images = new BufferedImage[len];
        int[][] ImageArrays = new int[len][];
        for (int i = 0; i < len; i++) {
            try {
                src[i] = new File(imgs.get(i));
                if (!src[i].exists()) {
                    throw new RuntimeException("文件【" + imgs.get(i) + "】不存在");
                }
                images[i] = ImageIO.read(src[i]);
            } catch (Exception e) {
                log.error("", e);
                throw new RuntimeException(e);
            }
            int width = images[i].getWidth();
            int height = images[i].getHeight();
            // 从图片中读取RGB 像素
            ImageArrays[i] = new int[width * height];
            ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
        }

        int dst_height = 0;
        int dst_width = images[0].getWidth();
        // 合成图片像素
        for (int i = 0; i < images.length; i++) {
            dst_width = dst_width > images[i].getWidth() ? dst_width : images[i].getWidth();
            dst_height += images[i].getHeight();
        }
        if (dst_height < 1) {
            throw new RuntimeException("文件合成失败,合成后的图片文件高度=" + dst_height);
        }
        String name = pdfFile.getName().substring(0, pdfFile.getName().lastIndexOf("."));
        String targetPath = pdfFile.getParent() + File.separator + name;
        // 输出路径
        File outFile = new File(targetPath + File.separator + name + "-bigone.jpg");
        // 生成新图片
        try {
            dst_width = images[0].getWidth();
            BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB);
            int height_i = 0;
            for (int i = 0; i < images.length; i++) {
                ImageNew.setRGB(0, height_i, dst_width, images[i].getHeight(), ImageArrays[i], 0, dst_width);
                height_i += images[i].getHeight();
            }
            ImageIO.write(ImageNew, "jpg", outFile);
        } catch (Exception e) {
            log.error("图片合并异常=", e);
            throw new RuntimeException(e);
        }
        return outFile.getPath();
    }

到此这篇关于Java实现pdf转图片案例的文章就介绍到这了,更多相关Java实现pdf转图片内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java生成pdf文件或jpg图片的案例讲解

    在一些业务场景中,需要生成pdf文件或者jpg图片,有时候还需要带上水印.我们可以事先用freemarker定义好html模板,然后把模板转换成pdf或jpg文件. 同时freemarker模板还支持变量的定义,在使用时可以填充具体的业务数据. 1.Maven导包 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</ar

  • 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 添加、替换、删除PDF中的图片的示例代码

    概述 本文介绍通过java程序向PDF文档添加图片,以及替换和删除PDF中已有的图片.另外,关于图片的操作还可参考设置PDF 图片背景.设置PDF图片水印.读取PDF中的图片.将PDF保存为图片等文章. 工具:Free Spire.PDF for Java (免费版) Jar获取及导入:官网下载,并解压将lib文件夹下的jar文件导入java程序,或者通过maven仓库下载并导入. jar导入效果: Java代码示例 [示例1]添加图片到PDF import com.spire.pdf.*; i

  • Java实现图片转换PDF文件的示例代码

    最近因为一些事情,需要将一张简单的图片转换为PDF的文件格式,在网上找了一些工具,但是这些工具不是需要注册账号,就是需要下载软件. 而对于只是转换一张图片的情况下,这些操作显然是非常繁琐的,所以作者就直接使用Java写了一个图片转换PDF的系统,现在将该系统分享在这里. 引入依赖 <!--该项目以SpringBoot为基础搭建--> <parent> <groupId>org.springframework.boot</groupId> <artifa

  • Java 读取PDF中的文本和图片的方法

    本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取. 使用工具:Free Spire.PDF for Java(免费版) Jar文件获取导入: 方法1:通过官网下载jar文件包.下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入java程序.导入后如下图: 方法2: 可通过maven仓库安装导入. Java代码示例 import com.spire.pdf.*; import java

  • Java实现pdf转图片案例

    工程加入依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.15</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artif

  • java中pdf转图片的实现方法

    JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用. 一.icepdf.有收费版和开源版,几种方法里最推荐的.转换的效果比较好,能识别我手头文件中的中文,就是转换后可能字体的关系部分字间距有点宽.因为,字体支持是要收费的,所以转换的图片会带有官方的水印.去水印的方法可以查看另一篇文章:icepdf去水印方法 1.下载icepdf的架包,并导入项目中,这里用到4个,如下: 2.附上代码例子: String filePath = "c:/test.pdf

  • java实现PDF转图片的方法

    本文实例为大家分享了java实现PDF转图片的具体代码,供大家参考,具体内容如下 1.首先利用maven引入所需jar包 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.1</version> </dependency> <dependency> <g

  • Java 创建PDF打印小册子案例

    目录 一.概述 二.环境配置及代码步骤 1. 环境配置 2. 代码步骤 一.概述 PDF打印小册子是指将PDF格式文档在打印成刊物前需要提前进行的页面排版,以便在打印后装订成册.下面以Java代码展示如何来实现.这里调用Free Spire.PDF for Java中的PdfDocument. createBooklet(java.lang.String fileName, double width, double height, boolean doubleSide)方法来创建Booklet小

  • JAVA基于PDF box将PDF转为图片的实现方法

    在一项目中用到,本身我是.NET的,团队中有用到JAVA,故此我处理这个功能,记录以下备用. 1.引用:fontbox-2.0.16.jar.pdfbox-app-2.0.16.jar 版本一定要正确,否则代码会有问题. main函数: package kevin.cn; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.Fi

  • java实现pdf按页转换为图片

    本文实例为大家分享了java实现pdf按页转换为图片的具体代码,供大家参考,具体内容如下 本程序是利用jacob.jar包实现的,关于jacob.jar的配置见我上一篇文章,程序中可配置参数选择图片清晰图. package core.util; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.File

  • 详解Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片

    10万+IT人都在关注的图片批量压缩上传方案(完整案例+代码) 背景需求:为了客户端访问图片资源时,加载图片更流畅,体验更好,通常不会直接用原图路径,需要根据不同的场景显示不同规格的缩略图,根据商品关键属性,能够获取到图片不同尺寸规格的图片路径,并且能根据不同缩略图直观看到商品的关键属性,需要写一个Java小工具把本地磁盘中的图片资源一键上传至分布式FastDFS文件服务器,并把图片信息存入本地数据库,PC端或者客户端查询商品时,就可以根据商品的业务属性.比如根据productId就能把商品相关

  • java实现pdf文件截图的方法【附PDFRenderer.jar下载】

    本文实例讲述了java实现pdf文件截图的方法.分享给大家供大家参考,具体如下: 最近做的一个网站中,有个需求是上传pdf文件,显示pdf的封页,点击封页之后进行在线阅读,这里使用的是PDFRender对pdf进行截图. public static boolean createScreenShoot(String source, String target) { File file = new File(source); if (!file.exists()) { System.err.prin

随机推荐