admin管理员组文章数量:1648938
java PDF批量替换关键词
要求:将要替换的字段封装到一个类中,并规定字段名与PDF中关键字的映射。
准备:
关键词信息类-----MatchItem
package pdf.replace;
import lombok.Data;
@Data
public class MatchItem {
//pdf页数
private Integer pageNum;
//关键词
private String keyWord;
//pdf扫描的单个字块
private String content;
//关键词的位置信息,字体大小等等
private float x;
private float y;
private float fontHeight;
private float fontWidth;
private float pageHeight;
private float pageWidth;
}
扫描pdf并组装成MatchItem类------KeyWordPositionListener
package pdf.replace;
import com.googlemon.collect.Lists;
import com.itextpdf.awt.geom.Rectangle2D;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.parser.ImageRenderInfo;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo;
import lombok.Data;
import java.util.List;
@Data
public class KeyWordPositionListener implements RenderListener {
private String keyword;
private Integer pageNumber;
private Rectangle curPageSize;
private List allItems= Lists.newArrayList();
private List matches= Lists.newArrayList();
@Override
public void beginTextBlock() {
}
@Override
public void renderText(TextRenderInfo textRenderInfo) {
//获取字符
String content = textRenderInfo.getText();
Rectangle2D.Float textRectangle = textRenderInfo.getDescentLine().getBoundingRectange();
MatchItem item = new MatchItem();
item.setContent(content);
item.setPageNum(pageNumber);
item.setFontHeight(textRectangle.height == 0 ? 12:textRectangle.height);//默认12
item.setFontWidth(textRectangle.width);
item.setPageHeight(curPageSize.getHeight());
item.setPageWidth(curPageSize.getWidth());
item.setX((float)textRectangle.getX());
item.setY((float)textRectangle.getY());
//若keyword是单个字符,匹配上的情况
if(content.equalsIgnoreCase(keyword)) {
matches.add(item);
}
//保存所有的项
allItems.add(item);
}
@Override
public void endTextBlock() {
}
<版权声明:本文标题:java pdf替换内容_java PDF批量替换关键词 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729504838a1203506.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论