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

pdf提取文本,表格以及转图片:spire.pdf

文章目录

  • 🐒个人主页:信计2102罗铠威
  • 🏅JavaEE系列专栏
    • 📖前言:
    • 🎀 1. pdfbox
        • 1.1导入pdfbox 的maven依赖
        • 1.1 提取文本
        • 1.2 提取文本表格(可自行加入逻辑处理)
        • 1.3 pdf转换成图片代码(不推荐)

🐒个人主页:信计2102罗铠威

🏅JavaEE系列专栏

📖前言:

PDF转文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 这几个,
spire.pdf这个转图片不推荐使用(图片不完整要收费),推荐使用我发布itextpdf 这篇文章的转图片方式

🎀 1. pdfbox

1.1导入pdfbox 的maven依赖

spire官网入口(不谢~)

           <dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf</artifactId><version>10.7.3</version></dependency>

因为这个是私服仓库,可能有的小伙伴下不下来依赖:在maven的配置文件中配置这个仓库即可:
看不懂的点这里~
在这里插入图片描述

在这里插入图片描述

<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository>
</repositories>	
1.1 提取文本
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextExtractOptions;
import com.spire.pdf.texts.PdfTextExtractor;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;public class ExtractTextFromPage
{public static void main(String[] args) throws IOException{// 创建 PdfDocument 对象PdfDocument doc = new PdfDocument();// 加载 PDF 文件doc.loadFromFile("input.pdf");// 获取第一页,遍历文档所有页便可提取文档所有文本内容PdfPageBase page = doc.getPages().get(0);// 创建PdfTextExtractor 对象PdfTextExtractor textExtractor = new PdfTextExtractor(page);// 创建PdfTextExtractOptions 对象PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();// 从页面中提取文本String text = textExtractor.extract(extractOptions);// 写入到 txt 文件中Files.write(Paths.get("Extracted.txt"), text.getBytes());// 释放PdfDocument对象doc.dispose();}
}
1.2 提取文本表格(可自行加入逻辑处理)
import com.spire.pdf.*;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;import java.io.FileWriter;
import java.io.IOException;public class ExtractTable {public static void main(String[] args)throws IOException {//实例化PdfDocument类的对象PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("test.pdf");//创建StringBuilder类的实例StringBuilder builder = new StringBuilder();//创建PdfTableExtractor类的对象PdfTableExtractor extractor = new PdfTableExtractor(pdf);//遍历每一页for (int page = 0; page < pdf.getPages().getCount(); page++){//提取页面中的表格存入PdfTable[]数组PdfTable[] tableLists = extractor.extractTable(page);if (tableLists != null && tableLists.length > 0){//遍历表格for (PdfTable table : tableLists){int row = table.getRowCount();//获取表格行int column = table.getColumnCount();//获取表格列for (int i = 0; i < row; i++){for (int j = 0; j < column; j++){//todo 获取表格中的文本内容  表格坐标(i,j)String text = table.getText(i, j);//将获取的text写入StringBuilder容器builder.append(text+" ");}builder.append("\r\n");}}}}//保存为txt文档FileWriter fileWriter = new FileWriter("ExtractedTable.txt");fileWriter.write(builder.toString());fileWriter.flush();fileWriter.close();}
}
1.3 pdf转换成图片代码(不推荐)

可以看我发布itextpdf 这篇文章的转图片方式,它这个功能不完整

import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class PDFtoImage {public static void main(String[] args)throws IOException {//实例化PdfDocument类的对象PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("sample.pdf");//遍历PDF每一页,保存为图片for (int i = 0; i < pdf.getPages().getCount(); i++) {//将页面保存为图片,并设置DPI分辨率BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap,500,500);//将图片保存为png格式File file = new File( String.format(("ToImage-img-%d.png"), i));ImageIO.write(image, "PNG", file);}pdf.close();}
}

相关文章:

pdf提取文本,表格以及转图片:spire.pdf

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380; 1. pdfbox1.1导入pdfbox 的maven依赖1.1 提取文本1.2 提取文本表格&#xff08;可自行加入逻辑处理&#xff09;1.3 pdf转换成图片代码&…...

jQuery UI 主题

关于“jQuery UI 主题”&#xff0c;我找到了一些有用的信息。 首先&#xff0c;jQuery UI 主题允许开发人员无缝集成UI小部件到他们网站或应用程序的外观和感观。每个插件通过CSS定义样式&#xff0c;包含两层样式信息&#xff1a;标准的jQuery UI CSS框架样式和具体的插件样…...

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以这个问题估计也冷门。没关系&#xff0c;分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器&#xff0c;实现图文排版等功能&#xff0c;用着没什么问题&#xff0c;直到有一天…...

C# GID+绘制不透明和半透明的线条

绘制线条时&#xff0c;必须将 Pen 对象传递给 DrawLine 类的 Graphics 方法。 Pen 构造函数的参数之一是 Color 对象。 若要绘制不透明的线条&#xff0c;请将颜色的 alpha 分量设置为 255。 若要绘制半透明的线条&#xff0c;请将 alpha 分量设置为从 1 到 254 的任何值。 在…...

L4-Prompt-Delta

Paper List PromptPapers:https://github.com/thunlp/PromptPapersDeltaPapers: https://github.com/thunlp/DeltaPapers Programming Toolkit OpemPrompt: https://github.com/thunlp/OpenPromptOpenDelta: https://github.com/thunlp/OpenDelta 一、传统微调方法&#xff1…...

Qt 自定义控件(Qt绘图)

一、QPaintEvent绘图事件1、QPaintEvent是Qt框架中一个重要的事件类&#xff0c;专门用于处理绘图事件。 2、当Qt视图组件需要重绘自己的一部分时&#xff0c;就会产生QPaintEvent事件。 3、Qt视图组件重绘自己&#xff0c;通常发生在以下情况: (1)、窗口第一次显示时: 当窗…...

electron 上怎么用node 调用 c++ 提供的方法

背景 在 Electron 上调用 C 代码的场景主要出现在需要执行高性能、低延迟的任务&#xff0c;或者需要与现有的本地 C 库集成时。这些场景往往涉及底层系统交互、性能优化或跨平台兼容性需求。 我们都知道c 的性能和安全性都比JavaScript 要高&#xff0c;但我认为在 Electron …...

Chromium 132 编译指南 Windows 篇 - Git 初始化设置 (四)

1. 引言 在 Chromium 编译指南系列的前几篇文章中&#xff0c;我们已经完成了编译环境的基础设置和关键环境变量的配置。本篇将重点介绍 Git 的安装与初始化配置&#xff0c;这是获取和管理 Chromium 源代码的重要前提。 2. 安装 Git 在 Windows 环境下&#xff0c;Git 并不…...

day03-前端Web-Vue3.0基础

目录 前言1. Vue概述2. 快速入门2.1 需求2.2 步骤2.3 实现 3. Vue指令3.1 介绍3.2 v-for3.2.1 介绍3.2.2 演示3.2.3 v-for的key3.2.4 案例-列表渲染 3.3 v-bind3.3.1 介绍3.3.2 演示3.3.3 案例-图片展示 3.4 v-if & v-show3.4.1 介绍3.4.2 案例-性别职位展示 3.6 v-model3.…...

Windows 下Mamba2 / Vim / Vmamba 环境安装问题记录及解决方法终极版(无需绕过triton)

导航 安装教程导航 Mamba 及 Vim 安装问题参看本人博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法&#xff08;初版&#xff09;Linux 下Mamba 及 Vim 安装问题参看本人博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法&#xff08;重置版&#xff09;Windows …...

GitLab本地服务器配置ssh和克隆项目

1. 本地安装好git git链接&#xff1a;https://git-scm.com/downloads/win 无脑点击下一步安装即可,打开Git Bash命令终端如下&#xff1a; 2. 配置本地用户名和邮箱 git config --global user.name "你的名字" git config --global user.email "你的邮箱&quo…...

Win10和11 git/Android Studio遇到filename too long问题的解决

1、打开windows长文件、长路径支持&#xff1a; 可以参考这篇文章&#xff1a; 修改注册表方法&#xff1a; 使用Admin登陆machine&#xff0c;在run中输入regedit并回车&#xff1b; 找到路径 ’Computer -> HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -&g…...

【JavaWeb学习Day11】

java程序操作数据库&#xff08;JDBC&#xff09; JDBC:&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;就是使用Java语言操作关系型数据库的一套API。 本质&#xff1a; 1.sun公司官方定义的一套操作所有关系型数据库的规范、即接口。 2.各个数据库厂商去…...

rom定制系列------小米max3安卓12 miui14批量线刷 默认开启usb功能选项 插电自启等

小米Max3是小米公司于2018年7月19日发布的机型。此机型后在没有max新型号。采用全金属一体机身设计&#xff0c;配备6.9英寸全面屏.八核处理器骁龙636&#xff0c;后置双摄像头1200万500万像素&#xff0c;前置800万像素.机型代码 &#xff1a;nitrogen.官方最终版为稳定版12.5…...

CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布

当地时间1月7日&#xff0c;2025年国际消费电子展&#xff08;CES 2025&#xff09;在美国拉斯维加斯正式开幕。美格智能合作伙伴阿加犀联合高通在展会上面向全球重磅发布人形机器人原型机——通天晓&#xff08;Ultra Magnus&#xff09;。该人形机器人内置美格智能基于高通QC…...

汽车电子相关的协议UDS、DOIP、CAN

UDS协议 UDS&#xff08;Unified Diagnostic Services&#xff0c;统一诊断服务协议&#xff09; 是一种标准化的通信协议&#xff0c;广泛应用于汽车电子系统中&#xff0c;尤其是在车辆诊断和服务过程中。它用于车辆的诊断、维护、控制和测试&#xff0c;支持通过车载诊断接…...

k8s笔记29--使用kyverno提高运维效率

k8s笔记29--使用kyverno提高运维效率 介绍原理安装应用场景自动修正测试环境pod资源强制 Pod 标签限制容器镜像来源禁止特权容器其它潜在场景 注意事项说明 介绍 Kyverno是一个云原生的策略引擎&#xff0c;它最初是为k8s构建的&#xff0c;现在也可以在k8s集群之外用作统一的…...

Life Long Learning(李宏毅)机器学习 2023 Spring HW14 (Boss Baseline)

1. 终身学习简介 神经网络的典型应用场景是,我们有一个固定的数据集,在其上训练并获得模型参数,然后将模型应用于特定任务而无需进一步更改模型参数。 然而,在许多实际工程应用中,常见的情况是系统可以不断地获取新数据,例如 Web 应用程序中的新用户数据或自动驾驶中的…...

libc.so.6不兼容

1、查看电脑所有libc.so.6 daviddavid-Shangqi-X4270:~/MySoft/ubuntusoft$ locate libc.so.6 /home/david/MySoft/ubuntusoft/EXEApp/libc.so.6 /home/david/MySoft/ubuntusoft/EXEApp_TEST/libc.so.6 /home/david/MySoft/ubuntusoft/RTMG_APP/libc.so.6 /home/david/MySoft/…...

树的模拟实现

一.链式前向星 所谓链式前向星&#xff0c;就是用链表的方式实现树。其中的链表是用数组模拟实现的链表。 首先我们需要创建一个足够大的数组h&#xff0c;作为所有结点的哨兵位。创建两个足够大的数组e和ne&#xff0c;一个作为数据域&#xff0c;一个作为指针域。创建一个变…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...