关于使用itexpdf7提取pdf页面指定区域内容文本

关于使用itexpdf7提取pdf页面指定区域内容文本

参考文章和资料

老梁 - https://cloud.tencent.com/developer/article/1502408
微光•无单位 - https://blog.csdn.net/LvWeijie941/article/details/105248627/
官方api - https://api.itextpdf.com/iText7/java/7.0.5/

前言

具体版本为itexpdf7.0.4,使用Maven项目管理依赖
主要使用jar包: kernel-7.0.4.jar

转载请注明出处

配置

具体Maven配置可参考先前文章

参考Maven项目配置

依赖

<dependencies>
	<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>kernel</artifactId>
            <version>7.0.4</version>
	</dependency>
</dependencies>

程序代码

import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.kernel.pdf.canvas.parser.filter.TextRegionEventFilter;
import com.itextpdf.kernel.pdf.canvas.parser.listener.FilteredTextEventListener;
import com.itextpdf.kernel.pdf.canvas.parser.listener.ITextExtractionStrategy;
import com.itextpdf.kernel.pdf.canvas.parser.listener.LocationTextExtractionStrategy;

public class test {
    public static void main(String args[]){
        String inputFileName = "target.pdf";
        
        int x = 120;
        int y = 415;
        int width = 500-120;
        int height = 510 - 415;
        Rectangle region = new Rectangle(x, y, width, height);
        
        //通过传入待处理pdf文件和感兴趣的区域以及指定页数进行 页面区域内容提取
        getRectangleExtraction(inputFileName, region, 46);
    }

    public static void getRectangleExtraction(String input, Rectangle region, int pageNum){
    	//新建区域过滤器
        TextRegionEventFilter filter = new TextRegionEventFilter(region);
        StringBuilder result = new StringBuilder();

        try{
            PdfReader pr = new PdfReader(input);
            PdfDocument pd = new PdfDocument(pr);
			//给 文本过滤监听器 装配 文本提取策略 和 所需过滤器 后返回具体的策略
            ITextExtractionStrategy strategy = new FilteredTextEventListener(new LocationTextExtractionStrategy(), filter);
            //核心思想为:给待处理pdf页面以相应的策略进行处理.
            //借助PdfTextExtractor类,本质仍然使用PdfCanvasProcessor类处理
            result.append(PdfTextExtractor.getTextFromPage(pd.getPage(pageNum), strategy));
            //直接输出结果
            System.out.println("the extracted region result: \r" + result);

        }catch (Exception e){
            System.err.println("No such file!");
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值