首先正常情况下的文本提取很简单
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

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





