pdfbox、icepdf工具实现pdf转图片

news/2024/11/25 21:21:28/

文章目录

  • 一、环境准备
  • 二、pdfbox、icepdf工具实现pdf转图片
  • 结尾

一、环境准备

  • icepdf-core-6.1.2.jar
  • pdfbox-2.0.20.jar

二、pdfbox、icepdf工具实现pdf转图片


import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;/*** pdf转图片工具类*/
public class PdfToImgUtils {/*** 利用pdfbox实现pdf转图片* @param filePath* @return*/public static List<String> convertToImgByPdfbox(String filePath){
//        Properties properties = System.getProperties();
//        Object encoding = properties.get("file.encoding");
//        properties.put("file.encoding", "SHIFT-JIS");List<String> result = new ArrayList<String>();String targetFormat = "jpg";String targetPath;int resolution = 300;File file = new File(filePath);PDDocument doc = null;try {doc = PDDocument.load(file);if (doc.isEncrypted()) {// doc.decrypt("TU2016");return result;}List<PDPage> pages = doc.getDocumentCatalog().getAllPages();String format = "_%0" + String.valueOf(pages.size()).length() + "d";for (int i = 0; i < pages.size(); i++) {PDPage page = pages.get(i);BufferedImage image = page.convertToImage(BufferedImage.TYPE_BYTE_GRAY, resolution);targetPath = filePath.substring(0, filePath.lastIndexOf(".")) + String.format(format, i + 1) + "." + targetFormat;File destFile = new File(targetPath);ImageIO.write(image, targetFormat, destFile);result.add(targetPath);}} catch (Exception e) {e.printStackTrace();} finally {if (doc != null) {try {doc.close();} catch (IOException e) {e.printStackTrace();}}//properties.put("file.encoding", encoding);}return result;}/*** 利用icepdf实现pdf转图片* @param filePath* @return*/public static List<String> convertToImgByIcepdf(String filePath) {List<String> result = new ArrayList<String>();Document document = null;//缩放比例float scale = 2f;//旋转角度float rotation = 0f;String targetFormat = "png";String targetPath;try {document = new Document();document.setFile(filePath);String format = "_%0" + String.valueOf(document.getNumberOfPages()).length() + "d";for (int i = 0; i < document.getNumberOfPages(); i++) {BufferedImage image = (BufferedImage)document.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, scale);RenderedImage rendImage = image;targetPath = filePath.substring(0, filePath.lastIndexOf(".")) + String.format(format, i + 1) + "." + targetFormat;File file = new File(targetPath);ImageIO.write(rendImage, targetFormat, file);result.add(targetPath);image.flush();}} catch (Exception e) {e.printStackTrace();} finally {document.dispose();}return result;}public static void main(String args[]) throws Exception {Long start = System.currentTimeMillis();PdfToImgUtils.convertToImgByIcepdf("C:\\Users\\Administrator\\Desktop\\ocr\\111.pdf");System.out.println((System.currentTimeMillis() - start) / 1000);}
}

结尾

  • 感谢大家的耐心阅读,如有建议请私信或评论留言。
  • 如有收获,劳烦支持,关注、点赞、评论、收藏均可,博主会经常更新博客,知识共享。

http://www.ppmy.cn/news/865951.html

相关文章

免费图片转pdf的方法?学会图片转pdf很重要

免费图片转pdf的方法&#xff1f;需要看网课的小伙伴们都知道&#xff0c;我们在看网课的时候&#xff0c;经常需要截取一些重要的图片以作复习之用。但是如果我们不将其整理成册的话&#xff0c;我们就需要一直翻阅相册&#xff0c;十分麻烦。其实我们完全可以将全部图片合并成…

通过 pdftoppm 实现PDF转图片

介绍如何在 Linux 系统中使用 pdftoppm 指令将 PDF 文件转为 PNG、JPEG 等图片文件。 安装 pdftoppm 指令 在 Linux 系统中 pdftoppm 指令可以透过 poppler 套件来安装&#xff0c;不同的 Linux 发行版会有不同的套件名称&#xff0c;但大同小异&#xff1a; Debian、Ubuntu、…

ArcGIS一张图的制作过程

来源&#xff1a;GIS荟 数据 首先&#xff0c;第一步是数据的准备和处理&#xff0c;这里没什么好说的。 使用的所有数据都是在网上下载的 OSM 数据。 第一步 主视觉 为了更好的说明该地图的完整操作过程&#xff0c;同时又要有条理、比较好理解&#xff0c;所以我采用拆分…

挖矿记录+解决方案:利用GitLab组件对服务器进行挖矿导致CPU占用200%

文章目录 什么是云服务器挖矿?事件记录事件分析产生影响解决方案后期预防什么是云服务器挖矿? 云服务器挖矿是指利用云服务器从事赚取比特币的活动。比特币是一种虚拟数字货币,挖矿是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新区块的过程。 用于…

题目:1995.统计特殊四元组

​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;1995. 统计特殊四元组 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 四重循环&#xff0c;暴力寻找。 解题代码&#xff1a; class Solution {public int countQuadruplets(int[] nums) {i…

Shell通配符和正则表达式

目录 ​​​​​​​grep 通配符 正则表达式 grep grep家族有三大成员分别为&#xff1a; grep&#xff1a;支持使用基本正则表达式。 egrep&#xff1a;支持使用扩展正则表达式。 fgrep&#xff1a;不支持使用正则表达式&#xff0c;即所有的正则表达式中的元字符都将作…

在html中怎么设置段落的边框线,Word怎么设置文字段落边框和底纹

在Word中设置段落边框能使文章中段落层次更为清晰&#xff0c;用户阅读体验感更好。但是在Word中默认是没有边框的&#xff0c;那么该怎样做呢?下面是学习啦小编为大家整理的Word设置文字段落边框和底纹的方法&#xff0c;希望大家能够从中有所收获! Word设置文字段落边框和底…

html网页设置边框和底纹在哪,word边框和底纹在哪 word文档中文字的边框与底纹该如何添加...

我们在使用word的文档的时候&#xff0c;可能会对某些文字进行加边框或者是底纹处理&#xff0c;可是Word如何使用边框和底纹功能呢&#xff1f;今天我们就一起来看一看具体的使用方法和技巧吧。 word边框和底纹在哪——word文档中文字的边框与底纹该如何添加 1.首先打开你需要…