protected void addText(PdfContentByte contentByte, String content, float positionX, float positionY, float gradient, float fontSize) {
PdfGState gs = new PdfGState();
try {
//开始
contentByte.beginText();
gs.setFillOpacity(0.3f);
gs.setStrokeOpacity(0.3f);
contentByte.saveState();
contentByte.setGState(gs);
// 设置颜色
contentByte.setColorFill(BaseColor.RED);
// 设置字体及字号
contentByte.setFontAndSize(baseFont, fontSize);
// 设置起始位置
contentByte.setTextMatrix(positionX, positionY);
//开始写入水印
contentByte.showTextAligned(Element.ALIGN_CENTER, content, positionX, positionY, gradient);
contentByte.restoreState();
//结束
contentByte.endText();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
以上是添加文字水印的代码,但是添加的文字水印在pdf里面的图片上却显示不出来。
最后问题是:
//writer.getDirectContent() 内容上方
//writer.getDirectContentUnder() 内容下方
addText(writer.getDirectContent(), journalNo, x, y, 0, 30);
调用的地方有问题,应该使用writer.getDirectContent(), 而不是writer.getDirectContentUnder()
欢迎关注我的公众号,不定期分享java文章,一起学习进步。