上传及接收pdf文件,使用pdfbox读取pdf文件内容

前端上传pdf文件

html

html 复制代码
<form class="layui-form">
	<div style="background-color: #ffffff" >
		<div style="padding: 30px">
			<div class="layui-form-item">
				<div class="layui-inline">
					<label class="layui-form-label"><label style="color: red">*</label>编号:</label>
					<div class="layui-input-inline">
						<input type="text" class="layui-input" name="orderNo" id="orderNo" >
					</div>
				</div>
			</div>
			<div class="layui-form-item">
				<div class="layui-inline">
					<label class="layui-form-label "><label style="color: red">*</label>上传文件:</label>
					<div class="layui-inline layui-input-inline">
						<input type="file" name="printFile" id="printFile">
					</div>
				</div>
			</div>
			<div class="layui-form-item">
				<div class="layui-input-block">
					<button type="button" class="layui-btn layui-btn-sm" id="save-button" onclick="save()">提交</button>
				</div>
			</div>
		</div>
	</div>
</form>

js

js 复制代码
function save(){
	var formData = new FormData();
	formData.appen("orderNo",$("#orderNo").val())
	var files = document.getElementById('printFile');
	if(files.files && files.files.length > 1){
		formData.append('file',files.files[0])
	}else{
		layer.msg("文件不能为空");
		return false;
	}
	formData.append('file',files.files[0])
	console.log("formData",formData)
	var url = ""
	HSoft.postMultipartForm(url), formData,function(res){
		console.log(res)
		if ("200" == res.code) {
			layer.msg(res.data);
			setTimeout(function(){
				 layer.closeAll('loading');
			},1000)
		} else {
			layer.msg("提交失败",res.msg);
		}
	});
}

this.postMultipartForm = function(url,formData,fn,errorCallback){
	$.ajax({
		type: "POST",
		url: url,
		data: formData,
		/**
		*必须false才会自动加上正确的Content-Type
		*/
		contentType: false,
		/**
		* 必须false才会避开jQuery对 formdata 的默认处理
		* XMLHttpRequest会对 formdata 进行正确的处理
		*/
		processData: false,
		error: function (XHR, textStatus, errorThrown) {
			console.log("XHR=" + XHR + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
			if (errorCallback && typeof errorCallback == "function") {
				errorCallback({});
			}
		},
		success: function (data, textStatus) {
			if (fn && typeof fn == "function") {
				fn(data);
			}
		}
	});
};

后台接收文件

安装pdfbox依赖

xml 复制代码
<dependency>
	<groupId>org.apache.pdfbox</groupId>
	<artifactId>pdfbox</artifactId>
	<version>2.0.27</version>
</dependency>

controller

java 复制代码
@PostMapping("/uploadFile")
@ApiOperation("上传文件")
@ResponseBody
public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file, HttpServletRequest request){
    DataRespVO respVO = orderService.uploadFile(file,request);
    if(Objects.equals(respVO.getCode(), 200)){
        return CommonResult.success(respVO.getMessage());
    }
    return CommonResult.error(respVO.getCode(), respVO.getMessage());
}

service

java 复制代码
@Override
public DataRespVO uploadFile(MultipartFile file, HttpServletRequest request) {
    MultipartHttpServletRequest params=((MultipartHttpServletRequest) request);
   
    String orderNo = params.getParameter("orderNo ");
    if(HSoft.isEmpty(orderNo )){
        return new DataRespVO(ErrorCodeConstants.ORDER_NO_IS_EMPTY);
    }
    PDDocument document = null;
    try{
        // 读取标签文件内容
        String fileName = file.getOriginalFilename();
        document = PDDocument.load(file.getInputStream());
        int pageSize = document.getNumberOfPages();
        String text = "";
        // 一页一页读取
        for (int i = 0; i < pageSize; i++) {
            // 文本内容
            PDFTextStripper stripper = new PDFTextStripper();
            // 设置按顺序输出
            stripper.setSortByPosition(true);
            stripper.setStartPage(i + 1);
            stripper.setEndPage(i + 1);
            text = stripper.getText(document);
            System.out.println(text.trim());
        }
    }catch (Exception e){
        log.error(e.getMessage(),e);
        return new DataRespVO((new ErrorCode(10000001,"数据更新失败,"+e.getMessage())));
    } finally {
        try {
            if (document != null) {
                document.close();
            }
        } catch (IOException e) {
            log.error(e.getMessage(),e);
            return new DataRespVO((new ErrorCode(10000001,"数据更新失败,"+e.getMessage())));
        }
    }
    return new DataRespVO(ErrorCodeConstants.UPDATE_OK);
}
相关推荐
麒麟而非淇淋13 分钟前
AJAX 入门 day1
前端·javascript·ajax
架构文摘JGWZ15 分钟前
Java 23 的12 个新特性!!
java·开发语言·学习
2401_8581205315 分钟前
深入理解MATLAB中的事件处理机制
前端·javascript·matlab
阿树梢20 分钟前
【Vue】VueRouter路由
前端·javascript·vue.js
拾光师1 小时前
spring获取当前request
java·后端·spring
aPurpleBerry1 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏1 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko1 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
2301_789985941 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
IT学长编程1 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统