/**
* creates a copy of the input file into the output file, and apply the given watermark at the center of all pages.
*
* @param inputFile the path of the input document.
* @param password the password of the input document.
* @param outputFile the path of the output document.
* @param watermarkPath the page to remove (0-based from 0 to GetPageCount() - 1)
* @return true or false
*/
public static boolean addWatermark(String inputFile, String password, String outputFile, String watermarkPath) {
try {
//init the library and activate the license
Global.Init(company, email, key);
//open the input file
Document mInputFile = new Document();
if(mInputFile.Open(inputFile, password) == 0) {
//create the output file
Document mOutputDoc = new Document();
if(mOutputDoc.Create(outputFile) == 0) {
ImportContext mContext = mOutputDoc.ImportStart(mInputFile);
if(mContext != null) { //import all pages
int pagesCount = mInputFile.GetPageCount();
for(int i = 0; i < pagesCount; i++)
mOutputDoc.ImportPage(mContext, i, i);
mContext.Destroy();
}
mOutputDoc.Save();
mOutputDoc.Close();
mOutputDoc.Open(outputFile, null);
addWatermark(mOutputDoc, watermarkPath);
}
}
mInputFile.Close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* Add a watermark to all the pages of the given document in the given position.
*
* @param srcDoc the document to apply the watermark to.
* @param watermarkPath the path of the watermark image.
*/
public static void addWatermark(Document srcDoc, String watermarkPath) {
try {
BufferedImage bimg = ImageIO.read(new File(watermarkPath));
int width = bimg.getWidth();
int height = bimg.getHeight();
DocImage dimg;
if(watermarkPath.toLowerCase().endsWith("png"))
dimg = srcDoc.NewImage(bimg, true);
else
dimg = srcDoc.NewImageJPEG(watermarkPath);
if(dimg != null) {
for(int i = 0 ; i < srcDoc.GetPageCount() ; i++) {
Page page = srcDoc.GetPage(i);
ResImage rimg = page.AddResImage(dimg);
if(rimg != null) {
int watermarkX = (int) ((srcDoc.GetPageWidth(i) - width) / 2);
int watermarkY = (int) ((srcDoc.GetPageHeight(i) - height) / 2);
PageContent content = new PageContent();
content.Create();
content.GSSave();
Matrix mat = new Matrix( width, height, watermarkX, watermarkY);
content.GSSetMatrix(mat);
mat.Destroy();
content.DrawImage(rimg);
content.GSRestore();
//add content to page
page.AddContent(content, true);
content.Destroy();
page.Close();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
srcDoc.Save();
srcDoc.Close();
}
RadaeePDF Master SDK
Created : 2017-05-05 14:44:04, Last Modified : 2017-05-08 15:48:06