*java识别pdf中的关键字,获取关键字坐标 *
今天遇到个需求,需要在pdf中识别关键字的坐标位置并插入电子签名(png,jpg),在网上找了很多的案例,发现不同的pdf识别出来效果不一样,有的pdf识别是一个文字一个文字,有的是一段文字一段文字。最终发现,由于pdf来源不同(word转换、excel转换、图片转换)导致识别的效果有所差异。
于是自己整理了一份案例,效果还算完美
效果展示
废话不多说
使用依赖:itextpdf-5.5.13.jar
常见itextpdf各个版本【0积分免费下载】 下载地址
- 新建DTO实体,用于接收返回的坐标信息
public class MatchItem {
/**
* 页数
*/
private Integer pageNum;
/**
* X轴坐标
*/
private Float x;
/**
* Y轴坐标
*/
private Float y;
/**
* 宽度
*/
private Float pageWidth;
/**
* 高度
*/
private Float pageHeight;
/**
* 匹配到的文案
*/
private String content;
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Float getX() {
return x;
}
public void setX(Float x) {
this.x = x;
}
public Float getY() {
return y;
}
public void setY(Float y) {
this.y = y;
}
public Float getPageWidth() {
return pageWidth;
}
public void setPageWidth(Float pageWidth) {
this.pageWidth = pageWidth;
}
public Float getPageHeight() {
return pageHeight;
}
public void setPageHeight(Float pageHeight) {
this.pageHeight = pageHeight;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "MatchItem [pageNum=" + pageNum + ", x=" + x + ", y=" + y
+ ", pageWidth=" + pageWidth + ", pageHeight=" + pageHeight
+ ", content=" + content + "]";
}
}
2.新建工具类,用处识别文字坐标
public class AutoMatch {
public static List<MatchItem> matchPage(String fileName, String keyword