天天看點

java pdf添加水印

pdf添加水印

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.List;

import com.itextpdf.text.DocumentException;

import com.itextpdf.text.Image;

import com.itextpdf.text.pdf.PdfContentByte;

import com.itextpdf.text.pdf.PdfGState;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;

/**

  • @author caoxm
  • */

    public class PDFUtil {

    • @param bosUrl 輸出pdf位址
    • @param inputUrl 讀取pdf位址
    • @param converImgUrl 水印圖檔位址 D:/03.png
    • @throws DocumentException
    • @throws IOException

      public static void setWatermark(String inputPdfUrl, String bosPdfUrl, String converImgUrl)

      throws DocumentException, IOException {

      // PdfReader reader = new PdfReader(inputPdfUrl);

      PdfReader reader = new PdfReader(new FileInputStream(inputPdfUrl));

// BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(bosPdfUrl)));

// PdfStamper stamper = new PdfStamper(reader, bos);

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(bosPdfUrl));

int total = reader.getNumberOfPages() + 1;

    PdfContentByte content = null;

    PdfGState gs = new PdfGState();
    gs.setFillOpacity(0.1f);// 設定透明度

    Image image = Image.getInstance(converImgUrl);;
    /**
             * 第一個參數 ,從左往右
             * 第二個參數,從下往上
    */
    //image.setAbsolutePosition(100, 606); // set the first background
    image.setAbsolutePosition(0, 0); // set the first background
                      // image of the absolute
    //image.scaleToFit(200, 200);
    image.scaleToFit(850, 850);

    for (int i = 1; i < total; i++) {
        if(i == 1) { // 第一頁不處理
            continue ;
        }
        content = stamper.getOverContent(i);// 在内容上方加水印
        content.setGState(gs);
        content.beginText();           

// content.setColorFill(BaseColor.LIGHT_GRAY);

// content.setFontAndSize(base, 50);

// content.setTextMatrix(70, 200);

// content.showTextAligned(Element.ALIGN_CENTER, "公司内部檔案,請注意保密!", 290, 250, 45);

// image = Image.getInstance(converImgUrl);

/

image.setAlignment(Image.LEFT | Image.TEXTWRAP);

image.setBorder(Image.BOX); image.setBorderWidth(10);

image.setBorderColor(BaseColor.WHITE); image.scalet.scaleToFit(100072);//大小

image.setRotationDegrees(-30);//旋轉

content.addImage(image);

// content.setFontAndSize(base, 8);

// content.showTextAligned(Element.ALIGN_CENTER, "下載下傳時間:" + waterMarkName + "", 300, 10, 0);

content.endText();

}

if(null != stamper) {
      stamper.close();
  }

}

public static boolean delFiles(List<String> fileUrls) {
    if(null != fileUrls && fileUrls.size() > 0) {
        File file = null;
        for(String fileUrl : fileUrls) {
            file = new File(fileUrl);
            if (!file.exists()) {
                continue ;
            }
            if(file.isFile()) {
                file.delete();
            }
        }
    }
    return true;
}

public static boolean delFile(String fileUrl) {

    File file = new File(fileUrl);;
    if(file.isFile()) {
        file.delete();
    }
    return true;
}

public static void main(String[] args) throws Exception {           
}