package org.jeecg.modules.ai.vo; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.parser.ImageRenderInfo; import com.itextpdf.text.pdf.parser.TextExtractionStrategy; import com.itextpdf.text.pdf.parser.TextRenderInfo; import com.itextpdf.text.pdf.parser.Vector; import java.util.List; /** * @author clown * * @date 2024/7/23 * 记录所有位置+字体信息,这种方式获取坐标信息和字体信息方便一点 * */ public class MyTextExtractionStrategy implements TextExtractionStrategy { private List positions; private Integer page; public MyTextExtractionStrategy() {} public MyTextExtractionStrategy(List positions, Integer page) { this.positions = positions; this.page = page; } @Override public void beginTextBlock() { // TODO Auto-generated method stub } @Override public void renderText(TextRenderInfo renderInfo) { ItemPosition ItemPosition = new ItemPosition(); Vector bottomLeftPoint = renderInfo.getDescentLine().getStartPoint(); Vector topRightPoint = renderInfo.getAscentLine().getEndPoint(); //记录矩形坐标 Rectangle rectangle = new Rectangle(bottomLeftPoint.get(Vector.I1), bottomLeftPoint.get(Vector.I2), topRightPoint.get(Vector.I1), topRightPoint.get(Vector.I2)); ItemPosition.setPage(page); ItemPosition.setRectangle(rectangle); ItemPosition.setText(renderInfo.getText()); positions.add(ItemPosition); } @Override public void endTextBlock() { // TODO Auto-generated method stub } @Override public void renderImage(ImageRenderInfo renderInfo) { // TODO Auto-generated method stub } @Override public String getResultantText() { // TODO Auto-generated method stub return null; } }