java pdfbox读取pdf中的表格

java pdfbox读取pdf中的表格

目前遇到了需要解析pdf中表格的需求,遇到无法解析表格中的空格,求助大神帮助!!!

<dependency>
	<groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>1.8.10</version>
</dependency>
package com.lc.pdfModule.service;

import java.awt.Rectangle;
import java.io.File;
import java.util.List;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.util.PDFTextStripperByArea;

import com.lc.common.utils.JsonUtils;

public class PdfText {
	public static void main(String[] args) {
		fillTemplete();
	}
	//pdf模板处理
	private static void fillTemplete(){
	   String templetePath = "D:\\201902yb_from_5_to_5_.pdf";
	   String data = "";
	   try {
	      PDDocument document = PDDocument.load(new File(templetePath));
	      if(document.isEncrypted()){
	         try{
	            document.decrypt("");
	         } catch (Exception e){
	         }
	      }
	      PDFTextStripperByArea stripper = new PDFTextStripperByArea();
	      stripper.setSortByPosition(true);
	      stripper.setWordSeparator("|");
//	      stripper.setLineSeparator("#");
	      //划定区域
	      Rectangle rect= new Rectangle(0, 0, 10000, 10000);
	      stripper.addRegion("area", rect);
	      List<PDPage> allPages = document.getDocumentCatalog().getAllPages();
	      int i = 0;
	      for(PDPage page : allPages){
	         stripper.extractRegions(page);
	         i++;
	         //获取区域的text
	         data = stripper.getTextForRegion("area");
//	         data = data.trim();
	         String[] datas = data.split("\r\n");
	         //对文本进行分行处理         
	         for( i = 0; i<datas.length; ++i){
	        	 String[] str = datas[i].split(" ");
	        	 System.out.println(JsonUtils.objToString(str));
	         }
	      }
	      document.close();
	   } catch (Exception e){
	      e.printStackTrace();
	   }
	}
}

下图是需要解析的pdf文件中的表格
在这里插入图片描述
这是解析后的结果,表格中空格无法识别
在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
PDFBox是一个用于处理PDF文档的Java库,可以用来读取和写入PDF文档。PDF表格通常是由表格框架和单元格组成的。因此,要读取PDF表格,我们需要做以下几个步骤: 1. 加载PDF文档 我们可以使用PDFBox库的PDFDocument类来加载PDF文档。示例代码如下: ``` PDDocument document = PDDocument.load(new File("example.pdf")); ``` 2. 遍历文档页面 PDF文档表格通常在页面。我们可以使用PDFBox库的PDFTextStripper类遍历所有页面,并获取页面的所有文本。示例代码如下: ``` PDFTextStripper stripper = new PDFTextStripper(); for (int i = 1; i <= document.getNumberOfPages(); i++) { stripper.setStartPage(i); stripper.setEndPage(i); String text = stripper.getText(document); // 处理页面文本 } ``` 3. 解析表格 在页面文本表格通常是由一系列的单元格组成。我们可以使用正则表达式或其他方法来解析这些单元格,以获取表格的内容和结构。示例代码如下: ``` String[] lines = text.split("\\r?\\n"); for (String line : lines) { String[] cells = line.split("\t"); for (String cell : cells) { // 处理单元格内容 } } ``` 4. 关闭文档 在读取PDF文档后,我们需要关闭它以释放资源。示例代码如下: ``` document.close(); ``` 这些步骤可以帮助我们读取PDF表格。但是,请注意,这种方法可能会在复杂的表格结构出现问题。对于更复杂的表格,我们可能需要使用PDFBox库的其他功能,例如PDF表格提取器(PDFBox Table Extractor)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值