java pdf替换内容_java PDF批量替换关键词

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.google.common.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() {

}

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值