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

ops/2025/1/12 19:09:12/

文章目录

  • 🐒个人主页:信计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 这篇文章的转图片方式

pdfbox_6">🎀 1. pdfbox

pdfbox_maven_7">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 提取文本
java">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 提取文本表格(可自行加入逻辑处理)
java">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();}
}
pdf_131">1.3 pdf转换成图片代码(不推荐)

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

java">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();}
}

http://www.ppmy.cn/ops/149531.html

相关文章

linux下的MongoDB手动安装部署详解

MongoDB数据库很常用.但是有时候难免需要手动部署。这里分享下教程笔记&#xff0c;分享给有需要的小伙伴&#xff0c;需要的可以收藏。 要解压和安装 MongoDB&#xff0c;您可以按照以下步骤操作&#xff1a; 下载&#xff1a; https://www.mongodb.com/try/download/commun…

昆虫分割数据集labelme格式9484张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;9484 标注数量(json文件个数)&#xff1a;9484 标注类别数&#xff1a;1 标注类别名称:["insect"] 每个类别标注的框数&…

论文阅读:LDA-AQU:Adaptive Query-guided Upsampling via Local Deformable Attention

论文地址&#xff1a;arxiv 摘要 提出了一种上采样的模块&#xff0c;有着较好的效果。 正文 常见的上采样方法有最近邻插值和双线性插值&#xff0c;通过手动的范式从邻近点聚合特征。之后又提出了可学习的上采样方法&#xff0c;比如反卷积&#xff0c;像素洗牌等。但是这…

Keil C51 与 Keil MDK(ARM-stm32?):嵌入式开发的利器

Keil C51 与 Keil MDK&#xff08;ARM&#xff09;&#xff1a;嵌入式开发的利器 引言 在嵌入式系统开发领域&#xff0c;Keil 软件套件是广受开发者欢迎的工具之一。Keil 提供了多种开发环境&#xff0c;其中最著名的两个是 Keil C51 和 Keil MDK&#xff08;Microcontrolle…

arcgis中用python脚本批量给多个要素类的相同字段赋值

1、python脚本 import arcpy# 设置工作空间路径 arcpy.env.workspace = r"D:\test.gdb"# 要素集名称 feature_dataset = "test"# 线要素类名称列表,初始化为空 line_feature_classes = []# 遍历要素集获取所有线要素类 for fc in arcpy.ListFeatureClass…

【C语言学习】——命令行编译运行 C 语言程序的完整流程,理解C语言编译的底层实现和编译原理相关知识

今天要学习的内容是 命令行编译运行 C 语言程序&#xff0c;更好的学习理解C语言编译运行的底层实现和编译原理相关知识&#xff0c;下面介绍命令行编译运行 C 语言程序的完整流程 一、理论讲解 1. 编译原理概述 1.1 编译过程的四个主要阶段 源代码 (.c) → 预处理 → 编译 …

设计模式简介

设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。…

【NLP 19、词的向量化和文本向量化】

祝我们都能在各自的选择中渐入佳境 —— 25.1.8 一、向量化 向量对于机器学习非常重要 大量的算法都需要基于向量来完成 1.文本向量化 对于机器来说&#xff0c;字符是没有含义的&#xff0c;只是有区别 只使用字符无法去刻画字与字、词与词、文本与文本之间的关系 文本转…