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() {

}

<

本文标签: 批量关键词内容JavaPDF