java对pdf关键字定位
来源:互联网 发布:淘宝宝贝浏览量怎么看 编辑:程序博客网 时间:2024/06/05 15:28
昨天研究一天的对pdf关键字定位,走了不少弯路,网上找的好多有瑕疵,今天有时间跟大家分享下:
以下方法是对pdf每页内容进行扫描定位出关键字的大致坐标。
import com.google.common.collect.Lists;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.AcroFields.FieldPosition;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.parser.ImageRenderInfo;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo;
// 定义返回页码
private static int i = 0;
private static com.itextpdf.awt.geom.Rectangle2D.Float boundingRectange =null;
private static StringBuilder content;
private static List<Object[]> arrays = Lists.newArrayList();
private static List<Object[]> getKeyWords(String filePath, final String keyWord) {
try {PdfReader pdfReader = new PdfReader(filePath);
int pageNum = pdfReader.getNumberOfPages();
PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(pdfReader);
for (i = 1; i < pageNum; i++) {
content = new StringBuilder();
boundingRectange =new com.itextpdf.awt.geom.Rectangle2D.Float();
pdfReaderContentParser.processContent(i, new RenderListener() {
@Override
public void renderText(TextRenderInfo textRenderInfo) {
String text = textRenderInfo.getText(); // 整页内容
content.append(text);
boundingRectange= textRenderInfo.getBaseline().getBoundingRectange();
/*if (null != text && StringUtils.contains(content, keyWord)) {
float[] resu = new float[3];
resu[0] = boundingRectange.x;
resu[1] = boundingRectange.y;
resu[2] = i;
arrays.add(resu);
}*/
}
@Override
public void renderImage(ImageRenderInfo arg0) {
// TODO Auto-generated method stub
}
@Override
public void endTextBlock() {
// TODO Auto-generated method stub
}
@Override
public void beginTextBlock() {
// TODO Auto-generated method stub
}
});
if (null != content && StringUtils.contains(content, keyWord)) {
Object[] resu = new Object[4];
resu[0] = content;
resu[1] = boundingRectange.x;
resu[2] = boundingRectange.y;
resu[3] = i;
arrays.add(resu);
}
// System.out.println("第"+i+"页,内容:"+content);
}
} catch (IOException e) {
e.printStackTrace();
}
return arrays;
}
以上方法中使用到的jar包
itextpdf-5.5.6.jar
- java对pdf关键字定位
- java对pdf截图
- PDF定位关键字/词所在坐标及页码
- java对word、excel、pdf的操作
- 对Java关键字synchronized的一些理解
- 对Java中Native关键字的认识
- 对java synchronized 关键字的理解
- 对Java中Native关键字的认识
- 对java synchronized 关键字的理解二
- 对Java-Static 关键字的理解
- 对java中static关键字的理解
- 对Java中关键字的认知
- 对Java中final关键字的理解
- 对Java中this关键字的理解
- linux 快速定位关键字
- java对word、excel、pdf等操作综合文章
- java对word、excel、pdf等操作综合文章
- java对word、excel、pdf等操作综合文章
- iOS WebViewJavascriptBridge的使用
- rm 删除目录及文件
- KPGP0001初步处理
- Linux基础——所属组特殊权限set_gid == sgid
- Android模拟点击View
- java对pdf关键字定位
- 用Unity做游戏,你需要深入了解一下IL2CPP
- java常用类
- XSS过滤 与 单例模式
- Vue学习
- 为菜单添加图标
- 自制小四轴:从入门到放弃
- confirm函数,弹窗询问框,确认则提交,否则不提交
- Android手势ImageView三部曲(二)