java解析pdf文档(前面写了docx的解析所以也思考写一份pdf的解析)--PdfReader底层分析
一、直接将前篇docx文档转成pdf文档用于测试
二、由于使用pdf文档所以需要引入一个新的依赖
<!--itextpdf是生成PDF文档的一个java类库-->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.7</version>
</dependency>
三、获取pdf的文档下标要从1开始,如果像之前一样循坏页数从下标0开始遍历会报错:
错误代码段:
PdfReader pdfReader = new PdfReader(file.getInputStream());//获取pdf的页数int page = pdfReader.getNumberOfPages();for(int i=0 ; i<=page ; i++){//获取pdf每一页的内容String content = PdfTextExtractor.getTextFromPage(pdfReader, i);//根据固定的数据去取需要的数据信息String perfix = "";}
这里从红框77行一路点进去,会看见下面这个PdfReader.class底层代码:
这个方法就能发现,如果下标从0开始,这里–pageNum直接把数值变为-1,循坏条件不满足,获取不到pdf的数据;
四、核心代码:
/*** 获取固定格式pdf文件的数据信息* @param file*/public void pdfIndentify(MultipartFile file){try {//获取pdfPdfReader pdfReader = new PdfReader(file.getInputStream());//获取pdf的页数int page = pdfReader.getNumberOfPages();String insAmt = null;String insPrice = null;String insQty = null;String date = null;for(int i=1 ; i<=page ; i++){//获取pdf每一页的内容String content = PdfTextExtractor.getTextFromPage(pdfReader, i);PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(pdfReader);log.info(content);//根据固定的数据去取需要的数据信息String perfix = "量";String suffix = "文档日期";//在切割数据时要考虑到把换行符排掉,所以开始下标多加了1,结束下标减一String subString = content.substring(content.indexOf(perfix)+2,content.indexOf(suffix)-1);perfix = ":";suffix = "作者";//由于段落与段落间换行,所以结束下标需要减一,去掉换行符date = content.substring(content.indexOf(perfix)+1,content.indexOf(suffix)-1).replaceAll(" ","");List<String> dataList = Arrays.asList(subString.split(" "));insAmt = dataList.get(0);insPrice = dataList.get(1);insQty = dataList.get(2);}//这里由于只是测试所以直接把获得的数据打印出来验证下就好了,实际中这个文档应该是流程中提供的官网文档,会落入数据库中或使用在一定业务场景log.info("金额:"+insAmt+";价格:"+insPrice+";数量:"+insQty+";日期:"+date);System.out.println("金额:"+insAmt+";价格:"+insPrice+";数量:"+insQty+";日期:"+date);} catch (IOException e) {e.printStackTrace();}}
结果展示:
五、总结:
1、按页数获取pdf内容时,需从下标1开始
2、在解析特定格式的pdf文件时,可以先获取每页的pdf内容,然后根据固定的字符串截取所需要的数据信息
java解析pdf文档(前面写了docx的解析所以也思考写一份pdf的解析)--PdfReader底层分析相关推荐
- 使用HttpHandler解析并展示PDF文档内容
前言 如果我们想将服务端的PDF文档内容展示给客户端,往往会通过URL直接访问的方式.这样一来,PDF文档就会毫无保留的保存到客户端去,通过浏览器的PDF插件,客户端可以随意拷贝PDF的副本.(如下图 ...
- HttpHandler解析并展示PDF文档内容
2019独角兽企业重金招聘Python工程师标准>>> HttpHandler 解析并展示 PDF 文档内容 如果我们想将服务端的 PDF 文档内容展示给客户端,往往会通过 URL ...
- java pdf_Java 生成 PDF 文档
最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持 iText,生成PDF文档,还支持将XM ...
- java生成pdf方法_详解Java生成PDF文档方法|chu
最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持iText,生成PDF文档,还支持将XML ...
- java xsl转换pdf_Java 生成PDF文档-阿里云开发者社区
最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持 iText,生成PDF文档,还支持将XM ...
- Java使用freemarker生成word文档并转pdf文档
Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...
- Java使用 PDFBox 2.0 从 PDF 文档中读取所有文本
在本教程中,我们将学习在 Java 程序中使用 PDFBox 2.0 库从 pdf 文档中读取所有文本. PDF 文档可能包含文本.嵌入图像等作为其内容.PDFBox 中的 PDFTextStripp ...
- 【教程】如何使用Java生成PDF文档?
在如今数字化时代,越来越多的人使用PDF文档进行信息传递和共享.而使用Java生成PDF文档也成为了一个非常重要的技能,因为Java作为一种通用的编程语言,可以在不同的操作系统和平台上运行.下面,我们 ...
- Java PDF文档转换 — PDF转Excel、SVG转PDF
概述 Spire.PDF for Java支持将PDF文档高质量地转换为XPS.图片.SVG.Word.HTML和PDF/A格式,以及支持将XPS.HTML文档转换为PDF格式.本文将通过代码演示来介 ...
- java pdf无法加载_无法加载PDF文档 - Angular JS - BLOB
我试图从Web API获取PDF文档,并希望在Angular App中显示 . 获得"Failed to load PDF document error" . 我已经关注了&quo ...
最新文章
- ASP.NET2.0轻松搞定统计图表
- 走近分形与混沌(part12)--随机过程与混沌
- jquery html 片段,十条jQuery代码片段助力Web开发效率提升
- faster rcnn resnet_Faster-rcnn 代码详解
- vscode修改c 项目_windows 10上使用vscode编译运行和调试C/C++
- Linux文件的软链接和硬链接
- sql:Mysql create view,function,procedure
- iOS 细碎知识整理
- linux 开放端口
- PTA是什么?BT-WIFI共存
- NWT融资一百万,被老张嘲笑了
- Css3:选择器、字体和颜色样式
- Metasploit联动CobaltStrike渗透win11主机并提权
- [RK3399][Android7.1] Audio中的Ducking模式
- 微信收到的文件怎样通过电脑打印
- javaweb JSP JAVA 电影院在线订票系统(电影购票系统 电影售票 电影票预订系统)
- 对“出轨情人节”的看法
- 孙海平:已有退休念头
- sg90舵机工作原理_快来听郑老轨分享船舶舵机液压锁报警测试经验!
- Ansys ncode Designlife19.0疲劳与裂纹扩展分析资料教程