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 {
}