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
method | description |
---|
MultipartFileToFile(MultipartFile multiFile) | MultipartFile文件转File文件,对接前端传递的MultipartFile文件数据 | deleteTempFile(File file) | 删除临时文件 |
BoxKeyPosition核心类,其中方法请勿直接使用
method | description |
---|
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核心类,请勿直接使用此方法
method | description |
---|
readRectangelText(File file, int nowPage, Rectangle textRrect) | 根据指定文件页码的指定区域读取文字 | readPageText(File file, int nowPage) | 提取nowPage页面所有文本 | readRectangelImage(File file, int nowPage, Rectangle imgRrect) | 根据指定文件页码的指定区域读取图片 |
Base64Util
method | description |
---|
convertimgtoBase64(BufferedImage image) | 将BufferedImage类型的图片文件转换为Base64字符串 | base64ToImage(String base64, String path) | 对图片字符串进行Base64解码并生成图片 | imageToBase64(String path) | 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 |
model包
RectPos核心实体模型
private Integer x;
private Integer y;
private Integer width;
private Integer height;
private Integer pageFrom;
private Integer endX;
private Integer endY;
private Integer pageWidth;
private Integer pageHeight;
对于PDFBox组件对坐标的定义,以pdf文件页面左上角为原点,享有第二象限为正,往右移动加数据,往下移动加数据
pdfBoxCtl包
BaseMethod基本方法
method | description |
---|
getPages(File file) | 获取PDF文件总页数 |
CatalogMethod针对PDF目录有关方法
method | description |
---|
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
method | description |
---|
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确定区域之后的方法
method | description |
---|
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() |
|