PDF 添加单个文字水印
- 添加单个文字水印代码
private static void addWatermark(PdfStamper pdfStamper, String waterMarkName) {
PdfContentByte content = null;
BaseFont base = null;
Rectangle pageRect = null;
PdfGState gs = new PdfGState();
try {
base = BaseFont.createFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
try {
if (base == null || pdfStamper == null) {
return;
}
gs.setFillOpacity(0.1f);
gs.setStrokeOpacity(0.1f);
int toPage = pdfStamper.getReader().getNumberOfPages();
for (int i = 1; i <= toPage; i++) {
pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);
float x = pageRect.getWidth() / 2;
float y = pageRect.getHeight() / 2;
content = pdfStamper.getOverContent(i);
content.saveState();
content.setGState(gs);
content.beginText();
content.setColorFill(BaseColor.RED);
content.setFontAndSize(base, 38);
content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x,y, 45);
content.endText();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
content = null;
base = null;
pageRect = null;
}
}
- 调用方法添加水印
public static void main(String[] args) throws Exception {
try{
String inPutFile = "E:/test/源文件.pdf";
String outPutFile = "E:/test/报告水印1.pdf";
PdfReader pdfReader = new PdfReader(inPutFile);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(outPutFile), '1',true);
addWatermark(pdfStamper, "绝密文件,禁止外传!");
pdfStamper.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
- 添加文字水印效果
PDF 添加满屏文字水印
- 添加满屏文字水印代码
public static void fillUpWaterMark(PdfStamper stamper, String waterMarkName) {
try {
BaseFont base = BaseFont.createFont("C:/WINDOWS/Fonts/SC-REGULAR.OTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Rectangle pageRect = null;
PdfGState gs = new PdfGState();
gs.setFillOpacity(0.1f);
gs.setStrokeOpacity(0.1f);
int total = stamper.getReader().getNumberOfPages();
JLabel label = new JLabel();
FontMetrics metrics;
int textH = 0;
int textW = 0;
label.setText(waterMarkName);
metrics = label.getFontMetrics(label.getFont());
textH = metrics.getHeight();
textW = metrics.stringWidth(label.getText());
PdfContentByte under;
for (int i = 1; i <= total; i++) {
pageRect = stamper.getReader().getPageSizeWithRotation(i);
under = stamper.getOverContent(i);
under.saveState();
under.setGState(gs);
under.beginText();
under.setFontAndSize(base, 20);
under.setColorFill(BaseColor.RED);
for (int height = 5 + textH; height < pageRect.getHeight(); height = height + textH*3) {
for (int width = 5 + textW; width < pageRect.getWidth() + textW; width = width + textW + 3) {
under.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, 45);
}
}
under.endText();
}
stamper.close();
} catch (Exception e) {
e.printStackTrace();
}
}
- 调用方法添加水印
public static void main(String[] args) throws Exception {
try{
String inPutFillUpFile = "E:/test/源文件.pdf";
String outPutFillUpFile = "E:/test/报告水印2.pdf";
PdfReader pdfReader1 = new PdfReader(inPutFillUpFile);
PdfStamper pdfStamper1 = new PdfStamper(pdfReader1, new FileOutputStream(outPutFillUpFile), '1',true);
fillUpWaterMark(pdfStamper1, "绝密文件,禁止外传!");
pdfStamper1.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
- 添加文字水印效果
