关于pdfbox读取pdf
最近,想着将pdf的文件进行读取其内容,发现了一个比较好用的依赖pdfbox。目前使用这个依赖,进行实现一个简单实例,如果之后需要使用到更深的了解,会进行更新。这里提醒一下:jdk8尽量采用pdfbox3.x版本。
- 对于文件的读取
File file = new File("E:\\关于pdfbox学习.pdf");PDDocument document = Loader.loadPDF(file);//Instantiate PDFTextStripper classPDFTextStripper pdfStripper = new PDFTextStripper();//Retrieving text from PDF documentString text = pdfStripper.getText(document);System.out.println(text);
通过这个代码可以读取到相应的pdf文字:

上述是关于文字的读取,如果是获取pdf中的截图,那么进行如下操作:
- 获取pdf中的截图
代码展示:
int pageNum = document.getNumberOfPages();
for (int i = 0; i < pageNum; i++) {PDPage page = document.getPage(i);PDResources resources = page.getResources();Iterable<COSName> xObjectNames = resources.getXObjectNames();if (xObjectNames != null){Iterator<COSName> names = xObjectNames.iterator();while (names.hasNext()){COSName next = names.next();if (resources.isImageXObject(next)){PDImageXObject xObject = (PDImageXObject) resources.getXObject(next);BufferedImage image = xObject.getImage();ImageIO.write(image, "png", new File("E:\\" + i + ".png"));}}}
}
结果如下:

所有代码展示:
package com.example.demo;import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.text.PDFTextStripper;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
public class FoxApiMain {public static void main(String[] args) { //try{//读取本地文件File file = new File("E:\\关于pdfbox学习.pdf");PDDocument document = Loader.loadPDF(file);//Instantiate PDFTextStripper classPDFTextStripper pdfStripper = new PDFTextStripper();//Retrieving text from PDF documentString text = pdfStripper.getText(document);System.out.println(text);int pageNum = document.getNumberOfPages();for (int i = 0; i < pageNum; i++) {PDPage page = document.getPage(i);PDResources resources = page.getResources();Iterable<COSName> xObjectNames = resources.getXObjectNames();if (xObjectNames != null){Iterator<COSName> names = xObjectNames.iterator();while (names.hasNext()){COSName next = names.next();if (resources.isImageXObject(next)){PDImageXObject xObject = (PDImageXObject) resources.getXObject(next);BufferedImage image = xObject.getImage();ImageIO.write(image, "png", new File("E:\\" + i + ".png"));}}}}document.close();} catch (IOException e) {throw new RuntimeException(e);}}
}相关文章:
关于pdfbox读取pdf
最近,想着将pdf的文件进行读取其内容,发现了一个比较好用的依赖pdfbox。目前使用这个依赖,进行实现一个简单实例,如果之后需要使用到更深的了解,会进行更新。这里提醒一下:jdk8尽量采用pdfbox3.x版本。 对…...
汽车电子零部件(14):TMS热管理系统
前言: TMS(thermal management system)热管理系统,这是新能源汽车诞生后随之而产生的一种新汽车零部件,一旦热管理失控会触发自燃,这种现象也是对EV来说是件头疼的事。汽车的热管理系统(TMS)是一个关键部件,有助于调节汽车电池组、车厢和其他车辆系统的温度。TMS的主要…...
代码模板,Cookie和Session
目录 代码模板 Cookie的基本使用 概念 Cookie的API public Cookie(String name, String value) 发送Cookie对象到客户端:使用response对象 创建Cookie对象并响应给浏览器 在服务器后端获取Cookie对象 Cookie[]cookiesrequset.getCookies(); Cookie的使用细…...
Nginx配置及优化
Nginx配置及优化 前言nginx.conf拆分理解上线 最近在配置Nginx的时候,偶尔一些细致的理论有些模糊,配置起来费了点功夫,今天来详细写一下我个人的理解,文章参考了一些官网和其他优秀博主的文章http://t.csdnimg.cn/GbID9。 前言 …...
HashMap在Go与Java的底层实现与区别
在Java中 在Java中hash表的底层数据结构与扩容等已经是面试集合类问题中几乎必问的点了。网上有对源码的解析已经非常详细了我们这里还是说说其底层实现。 基础架构 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable,…...
搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目
使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目 搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目...
【Python】WHEELTEC GPS G60主代码读取传感器数据代码(Windows系统)
【Python】WHEELTEC惯导IMU主代码读取传感器数据代码 Windows系统,直接输入串口号即可 读取设备的移动速度(km/h) 注:该GPS传感器需要在室外条件运行,室内可能接收不到信号。 # coding: utf-8 # last modified:202310…...
【Vue】Vue2与Vue3的区别
目录 响应式系统组合式API更小的体积编译优化新的生命周期钩子更好的性能组件结构与模板TeleportFragments 静态节点标记异步组件Slots的改进更好的TypeScript支持Composition API的引入 响应式系统 Vue2使用Object.defineProperty来实现响应式系统,这意味着只有预…...
马斯克的 xAI 帝国!60亿融资背后的超级布局?
在全球科技竞技场,每个重大融资事件都是对行业格局的一次重塑。近日,埃隆马斯克的人工智能初创企业 xAI 成功完成了一轮规模空前的融资——60亿美元,此举无疑在业界投下了一枚震撼弹,标志着 AI 领域内一场新的竞赛拉开了序幕。 …...
互联网医院开发:引领智慧医疗新时代
随着科技的迅猛发展和互联网的普及,传统医疗模式正在迎来一场深刻的变革。互联网医院的崛起,打破了时间和空间的限制,为患者和医疗机构带来了更加便捷、高效、安全的医疗服务体验。本文将从技术角度深入探讨互联网医院的开发,包括…...
民国漫画杂志《时代漫画》第18期.PDF
时代漫画18.PDF: https://url03.ctfile.com/f/1779803-1248612707-27e56b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!...
java.lang.NumberFormatException: For input string:
创建SpringBoot,Mybatis的项目时候,Service层调用Mapper层时候爆出了一个错误 发现报错是一个类型转换错误,经过排查后发现是因为mapper接收的实体类中没有写空参构造...
从零开始搭建Springboot项目脚手架4:保存操作日志
目的:通过AOP切面,统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面,把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…...
持续总结中!2024年面试必问 20 道 Rocket MQ面试题(一)
一、请简述什么是RocketMQ? RocketMQ是一个开源的消息中间件,由阿里巴巴团队开发,主要设计用于分布式系统中的异步通信、应用解耦、流量削峰和消息持久化。它支持高吞吐量、高可用性、可扩展性和容错性,是构建大规模实时消息处理…...
生成式AI的GPU网络技术架构
生成式AI的GPU网络 引言:超大规模企业竞相部署拥有64K GPU的大型集群,以支撑各种生成式AI训练需求。尽管庞大Transformer模型与数据集需数千GPU,但实现GPU间任意非阻塞连接或显冗余。如何高效利用资源,成为业界关注焦点。 张量并…...
旅游卡在哪里拿货?千益畅行旅游卡源头
旅游卡是一种便捷的旅行工具,它可以提供多种优惠和特惠,让人们在旅行中更加省钱、省心。那么,在千益畅行旅游卡这里,我们该如何拿到这张神奇的旅游卡呢? 首先,千益畅行旅游卡作为一款专为旅行爱好者打造的…...
代码随想录算法训练营第四十一天| 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯
509. 斐波那契数 题目链接:509. 斐波那契数 文档讲解:代码随想录/斐波那契数 视频讲解:视频讲解-斐波那契数 状态:已完成(1遍) 解题过程 看到题目的第一想法 虽然看了卡哥的动态规划五部曲,…...
Ribbon负载均衡(自己总结的)
文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的? Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…...
Leetcode 力扣92. 反转链表 II (抖音号:708231408)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head [1,2,3,4,5], left 2, right 4 输出:[1,4,3,2…...
OSI七层模型和TCP/IP四层模型的区别
OSI七层模型 1.物理层(Physical Layer) 实现相邻节点之间比特流的透明传输,尽可能屏蔽传输介质带来的差异。典型设备:集线器(Hub)。 2.数据链路层(Data Link Layer) 将网络层传下来…...
嵌入式核心板选型指南:从单核到四核的精准配置与实战优化
1. 项目概述:从“固定套餐”到“自助餐”的嵌入式核心板选型变革最近在规划一个工业HMI项目,主控选型时又翻开了飞凌嵌入式的产品手册。看到AM62x系列核心板配置新增了单核、双核、四核的选项,第一反应是:这路子对了。在嵌入式开发…...
中间件简单题目教学
题目1:环境搭建与简单模式使用 Docker 启动 RabbitMQ 4.x 容器,用户 guest,密码 123456,映射管理端口 15672。编写 Java 原生生产者,向队列 test_queue 发送消息 "Hello Exam"。编写 Java 原生消费者&#x…...
集团化全员学习企业在线学习平台选型指南|政企专属解决方案
在数字化人才培养浪潮下,集团化全员学习已成为央企、国企、大型上市公司的核心战略,而一款稳定、可管控、高合规的企业在线学习平台,是支撑万人级培训的核心底座。传统分散式培训存在管理混乱、标准不统一、效果不可追溯等痛点,本…...
JMeter 实战:JSON 响应中文节点 + 数值精准断言(附真实接口案例)
前言在接口自动化测试、性能测试过程中,JSON 断言是 JMeter 最常用的校验方式。日常开发中经常遇到JSON 键为中文、数组嵌套、浮点数金额校验等场景,很多同学会出现路径写错、数值匹配失败、中文节点解析异常等问题。本文以真实业务接口返回数据为例&…...
工业级AI计算机如何支撑机场eGate系统:BOXER-6646-ADP硬件与部署解析
1. 项目概述:当“刷脸通关”成为现实,背后是谁在支撑?每次在机场国际出发或到达大厅,看到那些排着长队等待人工查验护照、盖章的队伍,你是不是也幻想过能像科幻电影里那样,走到一个闸机前,刷一下…...
Linux设备模型核心数据结构解析:从kobject到sysfs的驱动开发指南
1. 项目概述:从“黑盒”到“白盒”的设备认知之旅在Linux的世界里,我们每天都在和各种设备打交道:一块硬盘、一张网卡、一个USB摄像头。对于普通用户或应用开发者而言,这些设备可能只是/dev/sda、eth0这样的一个文件节点或接口名。…...
录音总结会议纪要推荐,零基础新手避坑可直接上手指南
这是专为零基础新手整理的2026年录音转会议纪要避坑指南,适配喜欢尝试效率工具、想借助AI节省整理时间的朋友,所有推荐均按实际场景适配度排序,内容简洁易懂,看完可直接上手,无需自行试错踩坑。很多新手接触录音转会议…...
Git提交者信息填错了?别慌,手把手教你用config命令修正(全局/本地/取消设置全攻略)
Git提交者信息填错了?别慌,手把手教你用config命令修正(全局/本地/取消设置全攻略) 刚提交完代码到Git仓库,突然发现用户名和邮箱填错了?别担心,这种情况几乎每个开发者都遇到过。提交者信息错误…...
SaySo 语音识别相关技术解析,从语音输入到可用文本
摘要语音识别正在从一个独立功能,变成越来越多桌面应用里的基础交互能力。对于 SaySo 这类 PC 端语音工具来说,语音识别不仅仅是把声音转成文字,更关键的是如何在桌面工作流中做到识别准确、响应及时、体验稳定。本文将围绕 SaySo 的语音识别…...
SPEC CPU 2017基准测试深度解析:从原理到实战调优
1. 项目概述:一次性能基准测试的巅峰对决最近在服务器和芯片圈子里,一个消息炸开了锅:曙光服务器在SPEC CPU 2017基准测试中,一口气刷新了四项世界纪录。对于圈外人来说,这可能只是一条普通的科技新闻,但对…...
