申请注册网站域名.商城重庆市建设信息网站

diannao/2026/1/23 0:33:46/文章来源:
申请注册网站域名.商城,重庆市建设信息网站,从WordPress源码恢复,兰州 网站建设文章目录 前言简介第一步#xff1a;引入依赖第二步#xff1a;编写文件解析处理类第三步#xff1a;Word解析类第四步#xff1a;PDF解析类第五步#xff1a;Txt解析类总结 前言 请各大网友尊重本人原创知识分享#xff0c;谨记本人博客#xff1a;南国以南i、 提示引入依赖第二步编写文件解析处理类第三步Word解析类第四步PDF解析类第五步Txt解析类总结 前言 请各大网友尊重本人原创知识分享谨记本人博客南国以南i、 提示以下是本篇文章正文内容下面案例可供参考 简介 在日常开发中我们经常会解析各类文件如.docx、pdf、txt 读取文件内容进行下一步逻辑处理本文例举解析上述文件 第一步引入依赖 友情链接创建Springboot 项目请移步 点我点我点我 dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.5/version/dependency!-- 提取pdf中的文字--dependencygroupIdcom.itextpdf/groupIdartifactIditextpdf/artifactIdversion5.5.6/version/dependency!--获取pdf文件的总页数--dependencygroupIdorg.apache.pdfbox/groupIdartifactIdpdfbox/artifactIdversion1.8.11/version/dependency!-- poi --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion4.0.0/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.0.0/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml-schemas/artifactIdversion4.0.0/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-scratchpad/artifactIdversion4.0.0/version/dependency!-- FileUtils依赖--dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.4/version/dependency第二步编写文件解析处理类 // 定义静态的文件后缀private static final String SUFFIX_DOC .doc;private static final String SUFFIX_DOCX .docx;private static final String SUFFIX_PDF .pdf;private static final String SUFFIX_TXT .txt;/*** .* 根据文件类型解析文件内容** param file 文件* return 解析内容*/private static String readFileToString(File file) {StringBuilder readStr new StringBuilder();String fileType file.getName().substring(file.getName().lastIndexOf(.));log.debug(解析文件类型为[{}]文件, fileType);switch (fileType) {case SUFFIX_DOC: {readStr.append(WordUtil.readWord(SUFFIX_DOC, file.getAbsolutePath()));break;}case SUFFIX_DOCX: {readStr.append(WordUtil.readWord(SUFFIX_DOCX, file.getAbsolutePath()));break;}case SUFFIX_PDF: {readStr.append(PDFToWordUtil.getTextFromPdf(file.getAbsolutePath()));break;}case SUFFIX_TXT: {readStr.append(TxtUtil.readTxtFile(file.getAbsolutePath()));break;}default: {log.error(文件类型不正确请上传.doc、.docx、.pdf、.txt后缀文件);throw new RuntimeException(文件类型不正确请上传.doc、.docx、.pdf、.txt后缀文件);}}return readStr.toString();}第三步Word解析类 import lombok.extern.slf4j.Slf4j; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument;import java.io.FileInputStream; import java.io.InputStream;/*** Word 操作工具类*/ Slf4j public class WordUtil {// 定义静态的文件后缀public static final String SUFFIX_DOC .doc;public static final String SUFFIX_DOCX .docx;/*** 读取 Word 入口方法根据后缀调用方法** param suffix 文件后缀* param filePath 文件路径* return*/public static String readWord(String suffix, String filePath) {String wordStr ;try (InputStream input new FileInputStream(filePath)) {// docx 类型if (SUFFIX_DOCX.equals(suffix)) {wordStr readDocx(input);// doc 类型} else if (SUFFIX_DOC.equals(suffix)) {wordStr readDoc(input);}} catch (Exception e) {log.error(readWord [{}] is error, filePath);}wordStr wordStr.replace(\n, );wordStr wordStr.replace(\\\\r, );wordStr wordStr.replace(\\\\t, );return wordStr;}/*** 读取 doc 类型使用 WordExtractor 对象传递输入流** param inputStream* return*/private static String readDoc(InputStream inputStream) {try {String content ;WordExtractor ex new WordExtractor(inputStream);content ex.getText();ex.close();return content;} catch (Exception e) {return null;}}/*** 读取 docx 类型使用 XWPFDocument 对象传递输入流** param inputStream* return*/private static String readDocx(InputStream inputStream) {try {String content ;XWPFDocument xdoc new XWPFDocument(inputStream);XWPFWordExtractor extractor new XWPFWordExtractor(xdoc);content extractor.getText();extractor.close();return content;} catch (Exception e) {return null;}} }第四步PDF解析类 Slf4j public class PDFToWordUtil {/*** Description: 提取pdf中的文字 第一种方法* Param: fileUrlList地址* Param: pages页码* return: content提取的文字*/public static String PDFToWord(String fileUrlList) throws IOException {//linux---start---fileUrlList fileUrlList.replaceAll(\\\\, File.separator);//linux--end----Integer pages PDFToPage(fileUrlList);String fileName fileUrlList;//源文件的位置PdfReader reader null;//PDF读取器reader new PdfReader(fileName);String content ;for (int i 1; i pages; i) {content PdfTextExtractor.getTextFromPage(reader, i); // 读取PDF中第i页用哪一页就写几的文档内容并转成String}content content.replace(\n, );content content.replace(\\\\r, );content content.replace(\\\\t, );log.debug(content);//控制台打印PDF第一页的内容return content;}/*** Description: 提取pdf中的页码* Param: fileUrlList地址* return: pages页码数*/public static int PDFToPage(String fileUrlList) {//linux---start---fileUrlList fileUrlList.replaceAll(\\\\, File.separator);//linux--end----File file new File(fileUrlList);PdfReader pdfReader null;try {pdfReader new PdfReader(new FileInputStream(file));} catch (IOException e) {e.printStackTrace();}int pages pdfReader.getNumberOfPages();log.debug(pdf文件的总页数为: pages);return pages;}/*** Description: 提取pdf中的文字 第二种方法* Param: pdfPath地址* return: content提取的文字*/public static String getTextFromPdf(String pdfPath) {String content null;try {// 是否排序boolean sort false;// 开始提取页数int startPage 1;// 结束提取页数int endPage Integer.MAX_VALUE;//InputStream input null;//linux---start---// pdfPath pdfPath.replaceAll(\\\\, File.separator);//linux--end----File pdfFile new File(pdfPath);PDDocument document null;try (InputStream input new FileInputStream(pdfFile)) {// 加载 pdf 文档PDFParser parser new PDFParser(input);parser.parse();document parser.getPDDocument();// 获取内容信息PDFTextStripper pts new PDFTextStripper();pts.setSortByPosition(sort);endPage document.getNumberOfPages();log.debug(Total Page: endPage);pts.setStartPage(startPage);pts.setEndPage(endPage);try {content pts.getText(document);} catch (Exception e) {throw e;}log.debug(Get PDF Content ...);} catch (Exception e) {throw e;} finally {if (null ! document)document.close();}content content.replace(\n, );content content.replace(\\\\r, );content content.replace(\\\\t, );} catch (Exception e) {log.error(getTextFromPdf [{}] is error, pdfPath);}return content;}} 第五步Txt解析类 Slf4j public class TxtUtil {/*** .* 获取文本内容** return 文件内容*/public static String readTxtFile(String filePath) {String txtStr ;try {File file new File(filePath);if (!file.exists()) {log.error(可读文件不存在[{}], file.getAbsolutePath());}txtStr FileUtils.readFileToString(file, CharsetUtil.UTF_8);} catch (IOException e) {log.error(readTxtFile [{}] is error, filePath);}txtStr txtStr.replace(\n, );txtStr txtStr.replace(\\\\r, );txtStr txtStr.replace(\\\\t, );return txtStr;}/*** .* 写入数据** param outPath 输出路径* param context 内容*/public static void writeFile(String outPath, String context) {try {File file new File(outPath);FileUtils.write(file, context, CharsetUtil.UTF_8, false);} catch (IOException e) {log.error(writeFile is error {}, e);}} }总结 我是南国以南i记录点滴每天成长一点点学习是永无止境的转载请附原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树状结构的网站百度关键词查询工具

MySQL数据库设计篇 概述 做服务端开发离不开数据库设计,虽然说服务端技术一直在革新,但是MySQL一直都是我们首选使用的关系型数据库。服务端开发一直以来都是采用数据驱动研发的思想,可见数据库设计是非常重要的,数据库设计的好坏…

广州外贸网站公司安阳网站开发

目录: 一. 异常概念与体系结构 二. 异常的处理 三. 自定义异常类 一. 异常概念与体系结构: 1 异常的概念:在 Java 中,将程序执行过程中发生的 不正常行为 称为异常, 如:算数异常: ArithmeticException System.out.pri…

如何创建个人网站模板杭州营销网站建设平台

1. 自动提交最简单的提交方式是让消费者自动提交偏移量。如果 enable.auto.commit 被设为 true,那么每过 5s,消费者会自动把从 poll() 方法接收到的最大偏移量提交上去。提交时间间隔由 auto.commit.interval.ms 控制,默认值是5s。消费者每次…

网站建设图标合集网站如何做团购

题目 28. 实现 strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack “hello”, needle “ll” 输…

企业展示网站 价钱网站建设免费软件

目录 修改约束 创建数据库 添加约束 删除约束 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 修改约束 如果说表结构的修改还在可以容忍的范畴之内,那么约束的修改是绝对 100% 禁止的 所有的约束一定要在…

wordpress 仿站 教程网2008iis网站属性

C11标准之前的auto_ptr这个智能指针不被广泛使用的原因就是:在某些应用场景下,拷贝构造函数的意义不明确,同理赋值语句也是这个道理,意义同样不明确,因为C11标准之前并不存在移动赋值和移动构造的概念,还有…

做淘宝网站要求与想法常州建设工程电子审图网站

vbs读取数据库值前端FlexGrid前导0出不来的原因 原因 系统设置问题 解决 修改系统默认数值显示: 1)控制面板找到“区域”,点击“更改日期、时间和数字模式”,在弹出窗口点击“其他设置” 2)在数字一栏中的“显示前…

制作网站教程哪个网站可以做加工代理的

学习python前纠结了下,到底是应该一个个知识点吃透,然后写些小程序。还是应该快速掌握基础语法,快速实践。思考后认为前者这么学习速度真心不高,于是花2天时间看了下python3的语法,虽然很多都不明白,但是带…

网站开发合同属于知识产权类吗谁给个网站啊急急急2021

文章目录前期准备应用场景1.constant_score查询-不考虑文档频率得分,与搜索关键字命中更多的返回结果2.sort排序-分数相同情况下,按照指定价格域排序3.不考虑文档频率TF/IDF情况下,不同域打分权重不同进行召回4.不考虑文档频率TF/IDF情况下&a…

网站开发专业职业规划会计培训

学习目标 加强理解DMA数据传输过程加强掌握DMA的初始化流程掌握DMA数据表查询理解源和目标的配置理解数据传输特点能够动态配置源数据学习内容 需求 uint8_t data; 串口接收(&data);data有数据了 实现串口的数据接收,要求采用dma的方式。 数据交互流程 CPU配置好DMA外…

网站建设研究的意义一般网站建设

全屏Java.math.BigDecimal.plus()方法实例java.math.BigDecimal.plus() 返回一个BigDecimal,其值是 (this),并且其刻度为是 this.scale().这种方法,它只是返回此BigDecimal是包括对称性与一元减号方法negate()。声明以下是java.math.BigDecim…

建设部网站怎么查询相关专业wordpress加入音乐播放器

最近AWS公布了新的客户端库,它实现了JMS 1.1规范 ,并使用他们的简单队列服务 (SQS)作为JMS提供者 (见杰夫巴尔的帖子在这里 )。 在我的文章中,我将向您展示如何设置Maven项目以使用Spring Frame…

做网站如何自动采集图片wordpress精美免费主题

据悉,诺基亚创新和测试强调了其AirScale无线产品组合的灵活性、可升级性和可扩展性,以适应技术初始应用中实现的5G频段。 通过证明AirScale能够支持低频和高频,运营商将能够从5G推出的第一天提供广泛的覆盖和室内覆盖,而无需进行复…

顶客网站和网摘网站国外wordpress

认识面向对象 Java是一门纯面向对象的语言(Object Oriented Program, OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。  面向过程和面相对象并不是一门语言,而是解决…

做网站免费搭建为什么做可信网站

目录1.上传tar包2.解压3. 设置环境变量4.设置Hive的配置文件5.启动Hive6.安装MySQL7.下载MySQL的驱动包8.修改Hive的配置文件9.启动Hive10.查看MySQL数据库 目录 1.上传tar包 jar包地址:http://hive.apache.org/downloads.html 2.解压 tar -zxvf apache-hive-2…

百度网站收录个人作品网站

MySQL中的自动增量AUTO_INCREMENT,是有使用条件的 该列(column)的数据类型必须是数值型(这点容易理解,数值才能自增)该列必须被索引,比如定义为主键(PRIMARY KEY) 感悟…

免费素材下载网站有哪些网站开发实用技术第2版课后答案

文章目录 工作原理代码编写驱动方式全步进驱动半步进驱动微步进驱动 工作原理 工作原理简要说明,和单片机一起配合使用的步进电机多为28BYJ28 五线四相步进电机,配合ULN2003驱动板进行控制,如图所示,对于扭矩、精度要求较高的还有…

58同城网站建设推广排名电商直播app开发公司

一 选择排序 原理:选择排序很简单,他的步骤如下: 从左至右遍历,找到最小(大)的元素,然后与第一个元素交换。从剩余未排序元素中继续寻找最小(大)元素,然后与第二个元素进行交换。以此…

网站建设的方案模板下载个人导航网站怎么备案

目前展示了用Avalonia做几个主要流行的主界面,演示了一下组件的使用。用不同的实现方式实现一些方法。 1、独立大屏展示,类似一个实时监控,这是一种目前很方便的大屏效果。 主要涉及的内内容: (1)窗标题实…

小型网站开发开题报告范文六安杂谈百姓畅言

1. 正所谓圣人云:“无农不稳,无商不富”,“民无利则国不富,民不富则国无税,国无税则兵不强,兵不强则天下危”。 2. 播下一个行动,收获一种习惯;播下一种习惯,收获一种性格…