1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > pdf关键字搜索盖章 长关键字定位

pdf关键字搜索盖章 长关键字定位

时间:2022-12-02 22:56:46

相关推荐

pdf关键字搜索盖章 长关键字定位

jar包依赖

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version></dependency>

pdf盖章的最重要是寻找关键字确定位置

//seal是自己封装的类,pos 是x方向偏移量,y方向偏移量,印章图片宽,和高拼成的字符串String pos = seal.getPos();//通过将pdfreader传给pdf内容解析器,PdfReaderContentParser Parser = new PdfReaderContentParser(pdfReader);//自定义监听,pdf内容解析器解析完内容会传入此处进行处理,参数是关键字和关键字出现的次数DSRenderListener renderListener = new DSRenderListener(keyword,seal.getRate());//第一个参数是处理的页数,第二个参数是处理完一部分pdf内容就会调用监听器Parser.processContent(i, renderListener);

监听器的实现

public class DSRenderListener implements RenderListener {public int getRet() {return ret;}public float getX() {return x;}public float getY() {return y;}private int ret=0;private float x;private float y;private StringBuffer sb=new StringBuffer();private String strSearch1;private List<String> charSearch;private Integer rate;public DSRenderListener(String keyWord,Integer rate)//接收关键字和出现频率{strSearch1 = keyWord;this.rate = rate;charSearch = new ArrayList<>();//将关键字打碎for(int j=0;j<strSearch1.length();j++)charSearch.add(strSearch1.charAt(j)+"");}@Overridepublic void renderText(TextRenderInfo textRenderInfo){if(ret==0){String text = textRenderInfo.getText();//获取内容解析器的内容//System.out.println("t:"+text);if(text.length()>0){sb.append(text);//当字段末尾是关键字内容记录此切块位置,if(charSearch.contains(text.substring(text.length()-1)) ) {//记录当前切块位置com.itextpdf.awt.geom.Rectangle2D.Float boundingRectange = textRenderInfo.getBaseline().getBoundingRectange();x = boundingRectange.x;y = boundingRectange.y;}//当前切块内容有关键字,或者缓冲区中包含该关键字都表示找到了if(text.contains(strSearch1) || sb.indexOf(strSearch1)!=-1){--rate;//出现频率自减if(rate<=0){ret =1;if(text.contains(strSearch1)){//当前内容包含关键字,获取精确位置com.itextpdf.awt.geom.Rectangle2D.Float b = textRenderInfo.getBaseline().getBoundingRectange();x = b.x;y = b.y;}}else{sb.setLength(0);}}//最后一个字在打碎的关键字数组中,不清空缓冲区,方便和下次内容合并。if(!charSearch.contains(text.substring(text.length()-1))){sb.setLength(0);}}}}/*public boolean findKey(TextRenderInfo textRenderInfo, String text, String search){if (null != text && text.contains(search)){com.itextpdf.awt.geom.Rectangle2D.Float boundingRectange = textRenderInfo.getBaseline().getBoundingRectange();float resu[] = new float[2];resu[0] = boundingRectange.x + boundingRectange.width;resu[1] = boundingRectange.y;return true;}return false;}*/@Overridepublic void renderImage(ImageRenderInfo arg0){// TODO Auto-generated method stub}@Overridepublic void endTextBlock(){// TODO Auto-generated method stub}@Overridepublic void beginTextBlock(){// TODO Auto-generated method stub}}

支持长文本作为关键字查找,准确性也挺好。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。