记录一下:使用PDFBox向pdf中添加内容时,覆盖了pdf中原先的内容问题解决。
创建 PDPageContentStream 对象时使用
public PDPageContentStream(PDDocument document, PDPage sourcePage, PDPageContentStream.AppendMode appendContent, boolean compress, boolean resetContext)
示例:
PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false, false);
该构造器,原先使用的
public PDPageContentStream(PDDocument document, PDPage sourcePage) throws IOException { this(document, sourcePage, PDPageContentStream.AppendMode.OVERWRITE, true, false); }
这个构造器会覆盖原先pdf中的内容
注:pdfbox的版本是:2.0.15
附上一个小工具类:
/**
* 根据关键字段获取其所在开始页码
*
* @param total:pdf总页码数
* @param str:需要匹配的字段
* @param document
* @return
* @throws IOException
*/
public static Integer getStartPageNum(Integer total, String str, PDDocument document) throws IOException {
int i;
PDFTextStripper pdfStripper = new PDFTextStripper();
Integer getStartPageNum = null;
for (i = 0; i <= total; i++) {
pdfStripper.setStartPage(i);
pdfStripper.setEndPage(i);
String text = pdfStripper.getText(document);
if (text.contains(str)) {
getStartPageNum = i - 1;
break;
}
}
return getStartPageNum;
}