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

政府网站红色模板百度经验实用生活指南

政府网站红色模板,百度经验实用生活指南,优秀企业网页设计,做网站服装app最近搞到一个任务是要解析一套雅思题目并提取其中的高频单词。那如何使用java来解析一个pdf文件呢? 首先我们要知道这需要springboot框架来进行创建,需要的PDFTextStripper是一个用于PDF文档中提取文本的类,它是Apache PDFBox的一个类用于处…

最近搞到一个任务是要解析一套雅思题目并提取其中的高频单词。那如何使用java来解析一个pdf文件呢?

首先我们要知道这需要springboot框架来进行创建,需要的PDFTextStripper是一个用于PDF文档中提取文本的类,它是Apache PDFBox的一个类用于处理PDF文档的开源的库。其主要功能是解析文档的内容流,所以我们需要定义一个流来提取其中的文字内容。

所以我们先引入pdfbox相关的依赖,具体如下:

<dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.0</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>jempbox</artifactId><version>1.8.11</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>xmpbox</artifactId><version>2.0.0</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>preflight</artifactId><version>2.0.0</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-tools</artifactId><version>2.0.0</version>
</dependency>

这是比较完整的一套依赖。我们把提交pdf和接收pdf用一种post的方式进行上传,这样会显得提交方式非常的灵活。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Upload PDF</title>
</head>
<body>
<h1>Upload PDF File</h1>
<form action="/api/files/upload-pdf" method="post" enctype="multipart/form-data"><input type="file" name="file" accept="application/pdf" required><button type="submit">Upload</button>
</form>
</body>
</html>

然后我们简单写一个controller

@RestController
@RequestMapping("/api/files")
public class ReadFileController {@Autowiredprivate ExtractService extractService;@PostMapping("/upload-pdf")public ResponseEntity<Object> uploadPdf(@RequestParam("file") MultipartFile file) {// 验证文件是否为空if (file.isEmpty()) {return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("File is empty");}// 验证文件类型是否为PDFif (!"application/pdf".equals(file.getContentType())) {return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Only PDF files are allowed");}String file_name = file.getOriginalFilename();String filePath = extractService.Run(file,file_name);

我们可以看到表单提交的action就是我们controller里面的路径,提交之后我们在做一个简单的文件类型判断之后就返回给了业务层进行解析。

private StringBuilder accumulatedText = new StringBuilder();
public List<Map.Entry<String, Integer>> read_file(MultipartFile file) {try (InputStream inputStream = file.getInputStream()) {try (PDDocument doc = PDDocument.load(inputStream)) {PDFTextStripper textStripper = new PDFTextStripper();textStripper.setSortByPosition(true);String allText = textStripper.getText(doc);accumulatedText.append(allText).append("\n");}} catch (IOException e) {e.printStackTrace();}return getSortedWordList(accumulatedText.toString());}

这段代码首先通过file.getInputStream()获取上传文件对应的输入流,这个过程就避免了我们先把文件存到磁盘,而是直接从文件中读数据。PDDocumentApache PDFBox库中的一个类,用于表示PDF文档。此语句确保了PDDocument对象在使用后会被正确关闭。PDFTextStripper 是 Apache PDFBox 库中的一个类,用于从 PDF 文档中提取文本。它提供了一种简单而有效的方法来遍历 PDF 的内容,并将其中的文本元素抽取出来形成字符串。PDFTextStripper 可以解析 PDF 页面上的文本对象,并将它们转换为可读的字符串格式。通过设置 setSortByPosition(true),可以确保提取的文本按照其在页面上的实际位置进行排序,这有助于保持文本的自然阅读顺序。默认情况下,PDFTextStripper 按照文本对象在 PDF 文件中的出现顺序提取文本,这可能会导致文本顺序混乱。

StringBuilder 是 Java 中的一个类,它提供了可变的字符序列,允许你高效地构建、修改和操作字符串。与 String 类不同,String 是不可变的(immutable),每次对 String 的修改都会创建一个新的 String 对象,而 StringBuilder 是可变的(mutable),可以在同一个对象上进行多次修改而不创建新的对象。这使得 StringBuilder 在需要频繁修改字符串的情况下更加高效。

尽管 PDFTextStripper 主要用于文本提取,但它也可以与 PDFStreamEngine 结合使用,以处理 PDF 中的其他内容,如图像或矢量图形。目前我还没有用到,日后需要解析非文字内容再做解析。

http://www.hrbkazy.com/news/42063.html

相关文章:

  • 上海哪家做网站关键词排名关键词排名怎么上首页
  • 从做系统后以前的网站打不开了怎么办理seo优化软件免费
  • 企业网站的种类企业营销推广怎么做
  • 网站建设思路整合营销传播理论
  • 男女生做羞羞网站关键词排名优化方法
  • 网站建设维护单位沈阳网站关键字优化
  • 精通网站建设 全能建站密码pdf百度热门关键词排名
  • 北京专业网站建设服务商西安网站设计公司
  • 公司备案号查询平台官网seo全站优化全案例
  • 北京门头沟住房和城乡建设委员会网站it培训班大概需要多少钱
  • 企业网站内容更新河南郑州最近的热搜事件
  • 马蹄室内设计网站百度手机快速排名点击软件
  • 类似卡盟网站卖怎么做厦门seo外包
  • 免费短网址生成seo是什么意思电商
  • 教育校园网站建设方案网址怎么创建
  • php动态网站开发案例百度一下子就知道了
  • wordpress 总浏览数量网站seo收录工具
  • 哪个网站可以做服装批发seo实战密码
  • 厦门好的网站设计seo诊断报告
  • 政协机关网站建设一站式快速网站排名多少钱
  • 网站背景视频是怎么做的产品市场推广计划书
  • 兰州道路建设情况网站seo推广和百度推广的区别
  • 重庆微信网站制作价格视频号链接怎么获取
  • 漳州网站开发制作百度店铺怎么开通
  • 怎样做网站标题的图标深圳网站建设 手机网站建设
  • 一些网站是用什么颜色做的企业官网定制设计
  • wordpress用户更改不了密码网站排名优化查询
  • 企业网站建设公司地址班级优化大师怎么用
  • 经营性网站备案流程图提升seo排名
  • 网站建设哈尔滨网站优化4手机网站优化排名