当前位置: 首页 > news >正文

关于pdfbox读取pdf

最近,想着将pdf的文件进行读取其内容,发现了一个比较好用的依赖pdfbox。目前使用这个依赖,进行实现一个简单实例,如果之后需要使用到更深的了解,会进行更新。这里提醒一下:jdk8尽量采用pdfbox3.x版本。

  1. 对于文件的读取
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中的截图,那么进行如下操作:

  1. 获取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

最近&#xff0c;想着将pdf的文件进行读取其内容&#xff0c;发现了一个比较好用的依赖pdfbox。目前使用这个依赖&#xff0c;进行实现一个简单实例&#xff0c;如果之后需要使用到更深的了解&#xff0c;会进行更新。这里提醒一下&#xff1a;jdk8尽量采用pdfbox3.x版本。 对…...

汽车电子零部件(14):TMS热管理系统

前言: TMS(thermal management system)热管理系统,这是新能源汽车诞生后随之而产生的一种新汽车零部件,一旦热管理失控会触发自燃,这种现象也是对EV来说是件头疼的事。汽车的热管理系统(TMS)是一个关键部件,有助于调节汽车电池组、车厢和其他车辆系统的温度。TMS的主要…...

代码模板,Cookie和Session

目录 代码模板 Cookie的基本使用 概念 Cookie的API public Cookie(String name, String value) 发送Cookie对象到客户端&#xff1a;使用response对象 创建Cookie对象并响应给浏览器 在服务器后端获取Cookie对象 Cookie[]cookiesrequset.getCookies(); Cookie的使用细…...

Nginx配置及优化

Nginx配置及优化 前言nginx.conf拆分理解上线 最近在配置Nginx的时候&#xff0c;偶尔一些细致的理论有些模糊&#xff0c;配置起来费了点功夫&#xff0c;今天来详细写一下我个人的理解&#xff0c;文章参考了一些官网和其他优秀博主的文章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 力反馈通过机器人和虚拟现实完成远程操作项目 搜维尔科技&#xff1a;使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目...

【Python】WHEELTEC GPS G60主代码读取传感器数据代码(Windows系统)

【Python】WHEELTEC惯导IMU主代码读取传感器数据代码 Windows系统&#xff0c;直接输入串口号即可 读取设备的移动速度&#xff08;km/h&#xff09; 注&#xff1a;该GPS传感器需要在室外条件运行&#xff0c;室内可能接收不到信号。 # coding: utf-8 # last modified:202310…...

【Vue】Vue2与Vue3的区别

目录 响应式系统组合式API更小的体积编译优化新的生命周期钩子更好的性能组件结构与模板TeleportFragments 静态节点标记异步组件Slots的改进更好的TypeScript支持Composition API的引入 响应式系统 Vue2使用Object.defineProperty来实现响应式系统&#xff0c;这意味着只有预…...

马斯克的 xAI 帝国!60亿融资背后的超级布局?

在全球科技竞技场&#xff0c;每个重大融资事件都是对行业格局的一次重塑。近日&#xff0c;埃隆马斯克的人工智能初创企业 xAI 成功完成了一轮规模空前的融资——60亿美元&#xff0c;此举无疑在业界投下了一枚震撼弹&#xff0c;标志着 AI 领域内一场新的竞赛拉开了序幕。 …...

互联网医院开发:引领智慧医疗新时代

随着科技的迅猛发展和互联网的普及&#xff0c;传统医疗模式正在迎来一场深刻的变革。互联网医院的崛起&#xff0c;打破了时间和空间的限制&#xff0c;为患者和医疗机构带来了更加便捷、高效、安全的医疗服务体验。本文将从技术角度深入探讨互联网医院的开发&#xff0c;包括…...

民国漫画杂志《时代漫画》第18期.PDF

时代漫画18.PDF: https://url03.ctfile.com/f/1779803-1248612707-27e56b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;...

java.lang.NumberFormatException: For input string:

创建SpringBoot&#xff0c;Mybatis的项目时候&#xff0c;Service层调用Mapper层时候爆出了一个错误 发现报错是一个类型转换错误&#xff0c;经过排查后发现是因为mapper接收的实体类中没有写空参构造...

从零开始搭建Springboot项目脚手架4:保存操作日志

目的&#xff1a;通过AOP切面&#xff0c;统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面&#xff0c;把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…...

持续总结中!2024年面试必问 20 道 Rocket MQ面试题(一)

一、请简述什么是RocketMQ&#xff1f; RocketMQ是一个开源的消息中间件&#xff0c;由阿里巴巴团队开发&#xff0c;主要设计用于分布式系统中的异步通信、应用解耦、流量削峰和消息持久化。它支持高吞吐量、高可用性、可扩展性和容错性&#xff0c;是构建大规模实时消息处理…...

生成式AI的GPU网络技术架构

生成式AI的GPU网络 引言&#xff1a;超大规模企业竞相部署拥有64K GPU的大型集群&#xff0c;以支撑各种生成式AI训练需求。尽管庞大Transformer模型与数据集需数千GPU&#xff0c;但实现GPU间任意非阻塞连接或显冗余。如何高效利用资源&#xff0c;成为业界关注焦点。 张量并…...

旅游卡在哪里拿货?千益畅行旅游卡源头

旅游卡是一种便捷的旅行工具&#xff0c;它可以提供多种优惠和特惠&#xff0c;让人们在旅行中更加省钱、省心。那么&#xff0c;在千益畅行旅游卡这里&#xff0c;我们该如何拿到这张神奇的旅游卡呢&#xff1f; 首先&#xff0c;千益畅行旅游卡作为一款专为旅行爱好者打造的…...

代码随想录算法训练营第四十一天| 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯

509. 斐波那契数 题目链接&#xff1a;509. 斐波那契数 文档讲解&#xff1a;代码随想录/斐波那契数 视频讲解&#xff1a;视频讲解-斐波那契数 状态&#xff1a;已完成&#xff08;1遍&#xff09; 解题过程 看到题目的第一想法 虽然看了卡哥的动态规划五部曲&#xff0c;…...

Ribbon负载均衡(自己总结的)

文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的&#xff1f; Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…...

Leetcode 力扣92. 反转链表 II (抖音号:708231408)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…...

OSI七层模型和TCP/IP四层模型的区别

OSI七层模型 1.物理层&#xff08;Physical Layer&#xff09; 实现相邻节点之间比特流的透明传输&#xff0c;尽可能屏蔽传输介质带来的差异。典型设备&#xff1a;集线器&#xff08;Hub&#xff09;。 2.数据链路层&#xff08;Data Link Layer&#xff09; 将网络层传下来…...

告别单调模型!FreeCAD‘逐面着色’保姆级教程:从颜色理论到3D打印预览

告别单调模型&#xff01;FreeCAD‘逐面着色’保姆级教程&#xff1a;从颜色理论到3D打印预览 在3D设计领域&#xff0c;模型的美观度往往决定了第一印象。你是否遇到过这样的困境&#xff1a;精心建模的作品因为单调的色彩而失去表现力&#xff1f;FreeCAD的逐面着色功能正是打…...

推荐8款提升论文效率的AI工具(含爱毕业aibiye)和简易使用教程

在学术研究领域&#xff0c;AI技术的应用显著提升了论文写作的效率与质量。以下推荐8款功能强大的智能工具&#xff0c;涵盖文献解析、内容生成、文本优化等关键环节&#xff0c;助力研究者高效完成从资料收集到论文润色的全流程工作。这些创新解决方案能够有效简化研究过程&am…...

从分类影像到Fragstats输入:搞定景观格局分析前处理的完整避坑指南

景观格局分析前处理全流程&#xff1a;从分类影像到Fragstats输入的实战避坑指南 当你完成遥感影像分类&#xff0c;准备计算景观指数时&#xff0c;是否遇到过Fragstats报错"Invalid input format"&#xff1f;或是发现计算结果与预期不符却找不到原因&#xff1f;本…...

世界第一个开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf

一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作&#xff0c;需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释&#xff08;因业务实际需要存储大数值关联字段&#xff09;。 表的核心特性为Java 多线程密集读写&#xff0c;业务请求持续…...

从SENet到KAN卷积:一文搞懂注意力机制如何从‘加权’进化到‘学习’(附演进路线图)

注意力机制的进化图谱&#xff1a;从SENet到KAN卷积的技术跃迁 在计算机视觉领域&#xff0c;注意力机制已成为提升模型性能的关键技术。本文将带您深入探索注意力机制从早期通道注意力到最新动态结构学习的完整演进历程&#xff0c;揭示这一技术如何从简单的特征重标定发展为能…...

手把手教你用Matlab把PLL相噪曲线算成Jitter(附三种方法源码)

从PLL相噪曲线到Jitter计算的Matlab实战指南 在射频系统设计中&#xff0c;锁相环(PLL)的相位噪声性能直接影响通信质量与系统稳定性。频谱分析仪虽能捕捉相噪曲线&#xff0c;但工程师常需将其转换为更直观的时间抖动(Jitter)指标。本文将系统介绍三种Matlab实现方案&#xff…...

Pixel Epic · Wisdom Terminal 部署与压测:使用.accelerate库优化推理性能

Pixel Epic Wisdom Terminal 部署与压测&#xff1a;使用.accelerate库优化推理性能 1. 引言 如果你正在使用Pixel Epic Wisdom Terminal进行AI推理任务&#xff0c;可能会遇到性能瓶颈问题。今天我们就来聊聊如何用Hugging Face的.accelerate库来提升推理速度&#xff0c;…...

2026年高压电磁阀销售厂家哪家强?口碑好才是真的香

在工业阀门领域&#xff0c;高压电磁阀是许多高难度、复杂工况下的关键设备。随着技术的不断进步和市场需求的增加&#xff0c;选择一家优质的高压电磁阀销售厂家显得尤为重要。本文将从多个维度对比分析几家主要的高压电磁阀生产厂家&#xff0c;并给出实操建议&#xff0c;帮…...

5分钟上手Godot 4.0地形系统:用AutoTile实现像素风草地自动拼接(含Layer新功能演示)

5分钟掌握Godot 4.0地形系统&#xff1a;用AutoTile实现像素风无缝拼接 在像素风格游戏开发中&#xff0c;地形拼接一直是让开发者头疼的问题——如何让草地、石块、沙土等元素自然过渡&#xff1f;传统方案往往需要手动放置大量图块或编写复杂逻辑。Godot 4.0的TileMap系统带来…...

突破限制:NCM音乐格式转换与跨平台播放完全指南

突破限制&#xff1a;NCM音乐格式转换与跨平台播放完全指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 音乐文件解密是许多音乐爱好者面临的实际需求&#xff0c;尤其是当你希望在不同设备上自由播放从网易云音乐下载的NCM格式文…...