PDFBox提取PDF信息

该项目提供了一套基于SpringBoot的PDFBox封装工具,用于按关键词或矩形区域提取PDF文本和截图。支持从MultipartFile转换为File,删除临时文件,定位关键字的矩形位置,以及读取特定区域的文字和图片。还提供了目录定位、关键词搜索、图片Base64转换等功能。
摘要由CSDN通过智能技术生成

PDFBox提取PDF信息

gitee https://gitee.com/Grantr/the-encapsulation-of-pdfbox
github https://github.com/Grant-Vranes/The-encapsulation-of-PDFBox

这个项目使用SpringBoot,纯纯的一个工具类,主要操作方法再pdfBoxCtl包下。结合这些方法可以做到“根据关键字限定范围(页数)或确定矩形、扩展矩形,提取其中文本或者截图”
在这里插入图片描述

basement包

BaseTools

methoddescription
MultipartFileToFile(MultipartFile multiFile)MultipartFile文件转File文件,对接前端传递的MultipartFile文件数据
deleteTempFile(File file)删除临时文件

BoxKeyPosition核心类,其中方法请勿直接使用

methoddescription
BoxKeyPosition(byte[] src)构造方法
BoxKeyPosition(String keyWords, byte[] src)含关键词的构造方法
getPosition()遍历所有页,获取所有存在此关键字的矩形
getPosition(Integer startIndex)从当前页面开始遍历,获取所有存在此关键字的矩形
getPosition(Integer[] scope)查找固定范围内,存在此关键字的矩形
getPositionFirst(Integer startIndex)若水三千,我只取startIndex之后的第一瓢
getAllPage()获取PDF文件总页数
getPositionFirst(Integer[] scope)从圈定的目录范围内,查找关键词的第一个RectPos
getPositionFirst()从整个PDF中,找关键词的第一个RectPos
writeString(String string, List<TextPosition> textPositions)填充RectPos的数据项

PdfboxUtils核心类,请勿直接使用此方法

methoddescription
readRectangelText(File file, int nowPage, Rectangle textRrect)根据指定文件页码的指定区域读取文字
readPageText(File file, int nowPage)提取nowPage页面所有文本
readRectangelImage(File file, int nowPage, Rectangle imgRrect)根据指定文件页码的指定区域读取图片

Base64Util

methoddescription
convertimgtoBase64(BufferedImage image)将BufferedImage类型的图片文件转换为Base64字符串
base64ToImage(String base64, String path)对图片字符串进行Base64解码并生成图片
imageToBase64(String path)将图片文件转化为字节数组字符串,并对其进行Base64编码处理

model包

RectPos核心实体模型

private Integer x; // 查询关键词的x坐标
private Integer y; // 查询关键词的y坐标
private Integer width; // 查询关键词的宽度
private Integer height; // 查询关键词的高度
private Integer pageFrom;
private Integer endX; // 当前无用
private Integer endY; // 当前无用
private Integer pageWidth; // 当页PDF宽度
private Integer pageHeight; // 当页PDF高度

对于PDFBox组件对坐标的定义,以pdf文件页面左上角为原点,享有第二象限为正,往右移动加数据,往下移动加数据
在这里插入图片描述


pdfBoxCtl包

BaseMethod基本方法

methoddescription
getPages(File file)获取PDF文件总页数

CatalogMethod针对PDF目录有关方法

methoddescription
whereIsCatalog(File file, String catalog_keywords)判断目录在哪一页,需要传入确认目录的关键词,如“目录”,“Table of content”
ScopeOfCatalog(File file, String catalog_keywords, String catalog_features)判断目录所在范围
确认目录的关键词,如“目录”,“Table of content”
确认目录特征词,如“…”,可以指定,传入null则默认为’…’
getPageNumFromCatalog(File file, String titleName, Integer[] scope)从圈定的目录范围查找存在的关键字,并返回目录映射页码,二次确认,能排除避免可能出现的表头也有关键字的情况,默认以“…”作为目录特征词。scope是目录的范围
getPageNumFromCatalog(File file, String titleName, Integer[] scope, String catalog_features)从圈定的目录范围查找存在的关键字,并返回目录映射页码,二次确认,能排除避免可能出现的表头也有关键字的情况,可自定义传入目录特征词catalog_features

KeyLocation封装对于PDFBox组件的基本操作方法:提取关键词在PDF文件中所在的RectPos

methoddescription
getKeyLocation(File file, String keyWords)获取此关键词再PDF文件中所在位置的RectPos模型集合
getKeyLocation(File file, String keyWords, Integer[] scope)查找此关键词在PDF文件scope范围内所有位置的RectPos的集合
getKeyLocationFirst(File file, String keyWords)获取该关键词在PDF文件中的第一个RectPos对象
getKeyLocationFirst(File file, String keyWords, Integer startIndex)从设定的startIndex页数查找后面所有的keyWords(关键词)的RectPos对象的第一个(包括startIndex此页)
getKeyLocationFirst(File file, String keyWords, Integer[] scope)从圈定的范围中找所有的keyWords的RectPos的第一个。圈定的页面范围,[x,y],包括x和y当页
getKeyLocationFirst(File file, String keyWords[], Integer startIndex)从设定的startIndex页面开始找后面的keyWords数组中某一个的RectPos的第一个。
keyWords数组中根据顺序遍历,找到谁算谁的

RegionalMethod确定区域之后的方法

methoddescription
getPhotos2Base64(File file, int startIndex, int endIndex)提取[startIndex, endIndex]范围内的图片,转换为Base64格式集合
注意:图片提取的顺序是PDF创建时图片插入的顺序,并非页面图片展示的顺序
getRectImage(File file, Integer pageIndex, Rectangle rect_cut)截取pageIndex页面的rect_cut矩形为base64格式图片
getRectImage(File file, Integer pageIndex, List<Rectangle> rect_cut)截取pageIndex页面中的矩形集合为base64图片集合
getRectImage(File file, Integer startIndex, Integer endIndex, List<Rectangle> rect_cut)截取[startIndex, endIndex]中的矩形为图片,每个页面对应一个rect_cut集合中一个矩形
注意:需要确保endIndex-startIndex=rect_cut.size()
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值