IText7提取pdf页面内容文本,并兼容中文字体,修复提取中文乱码问题

当使用iText7从包含新宋体等特定字体的PDF中提取文本时,可能会出现乱码。通过分析PdfCanvasProcessor的源码,可以发现可以通过覆盖Tf操作符来处理字体设置。文章提供了一种方法,创建自定义的LocalTextFontOperator,检查并替换为系统中的宋体字体,从而避免乱码问题。

首先正常情况下的文本提取很简单

maven依赖:

<dependencies>
	<dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.2.3</version>
	</dependency>
</dependencies>

主要代码块:

public static void main(String args[]){
    PdfReader pr = new PdfReader(input);
    PdfDocument pd = new PdfDocument(pr);
    LocationTextExtractionStrategy strategy = new LocationTextExtractionStrategy();
    PdfCanvasProcessor parser = new PdfCanvasProcessor(strategy);
    parser.processPageContent(pd.getPage(1));
    String text = strategy.getResultantText();
    System.out.println(text);

}        

如果使用上述代码直接读取的文本,包含了新宋体等字体样式的话,那么文本内容就会乱码,通过查看 PdfCanvasProcessor 类的源码,发现构造有一个重载的构造方法,可以自定义传入IContentOperator,再通过定位IContentOperator对应的addit

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值