想实现找到pdf中的印章字样,然后在印章字样上插入一个图片,并设置图片浮于文字上方
当前不能找到到印章字样
经查,读取pdf得到的字样为如下:
{
标
准
}
{
项
目
}
{
细
则
}
印
章
所以 只能查找到印或章字样,且找到后图片没有浮于文字上方

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.TextPosition;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class pdfyinzhang {
private static final String SEARCH_TEXT = "章"; // 搜索的关键字
private static final float IMAGE_WIDTH = 50; // 图片宽度,单位为点
private static final float IMAGE_HEIGHT = 50; // 图片高度,单位为点
private static final String IMAGE_PATH = "d:\\index.gif"; // 图片文件路径
private static final float IMAGE_XOFFSET = -5; // 图片X偏移量,单位为点
private static final float IMAGE_YOFFSET = -5; // 图片Y偏移量,单位为点
public static void main(String[] args) throws IOException {
// 读取PDF文件
PDDocument pdfDocument = PDDocument.load(new File("d:\\input.pdf"));
try {
// 遍历所有页面
for (int i = 0; i < pdfDocument.getNumberOfPages(); i++) {
PDPage page = pdfDocument.getPage(i);
// 获取页面大小
PDRectangle pageSize = page.getMediaBox();
float pageWidth = pageSize.getWidth();
float pageHeight = pageSize.getHeight();
// 搜索关键字
PDFTextStripper stripper = new PDFTextStripper() {
@Override
protected void writeString(String text, List<TextPosition> textPositions) throws IOException {
super.writeString(text, textPositions);
for (TextPosition textPosition : textPositions) {
String textChunk = textPosition.getUnicode();
System.out.println(textChunk);
if (textChunk.contains(SEARCH_TEXT)) {
System.out.println("找到关键字");
// 找到关键字位置后添加图片印章
PDImageXObject image = PDImageXObject.createFromFile(IMAGE_PATH, pdfDocument);
PDPageContentStream contentStream = new PDPageContentStream(pdfDocument, page, PDPageContentStream.AppendMode.APPEND, true);
float x = pageWidth - textPosition.getX() + IMAGE_XOFFSET;
float y = pageHeight - textPosition.getY() + IMAGE_YOFFSET;
contentStream.drawImage(image, x, y, IMAGE_WIDTH, IMAGE_HEIGHT);
contentStream.close();
}
}
}
};
stripper.setStartPage(i + 1);
stripper.setEndPage(i + 1);
stripper.getText(pdfDocument);
}
// 保存修改后的PDF文件
pdfDocument.save("d:\\inputnewPdf.pdf");
} finally {
pdfDocument.close();
}
}
}