Insert watermark in multiple documents and images in C# or Java
Tags: csharp, java
Published: 2019-09-11 07:03:58

Watermarking is a popular technique to indicate that the content in a document is confidential or information/data the document contains is copyrighted to the creator. Similarly, in many instances, the watermarked documents are shared among all the stakeholders and partners within a company. However, it is quite hard to manually apply the watermark to a bunch of documents one by one. So in order to make this process easier, we need some automation.

In this article, I will show you how you can apply the watermark to a batch of files including multiple documents or images in one go with the minimum efforts.

Many software components are available that allow you to add watermark. I am going to use [GroupDocs.Watermark](https://products.groupdocs.com/watermark) API which is available for both .NET and Java platforms. The plus point of using this API is that you can control the appearance and placement of the watermark using a variety of options. So let’s begin.

**Steps**

You need to follow the below steps to apply the watermark to a document:

* Load the document
* Create and initialize watermark object
* Set watermark properties such as position, size, opacity, font, etc.
* Add watermark to the document
* Save the document


This is how we would transform these steps into the code.

**Code**

* _C#_

```csharp
DirectoryInfo dir = new DirectoryInfo(@"../../Documents/");
FileInfo[] files = dir.GetFiles();
// Iterate through the files
foreach (FileInfo file in files)
{
	// Load document
	using (Document doc = Document.Load(file.FullName))
	{
		// Initialize the font to be used for watermark
		Font font = new Font("Calibre", 50, FontStyle.Bold | FontStyle.Italic);
		// Create watermark
		TextWatermark watermark = new TextWatermark("Protected", font);
		// Set watermark properties
		watermark.ForegroundColor = Color.Red; 
		watermark.TextAlignment = TextAlignment.Right;
		watermark.Opacity = 0.5;
		watermark.HorizontalAlignment = HorizontalAlignment.Center;
		watermark.VerticalAlignment = VerticalAlignment.Center;
		watermark.RotateAngle = -45;
		// Apply watermark
		doc.AddWatermark(watermark);
		// Save document
		doc.Save(Path.Combine("../../Output",file.Name));
	}
}
```
 

* _Java_

```java
 // Get files in the Documents folder
File folder = new File("./Documents/");
File[] listOfFiles = folder.listFiles();
 
// Iterate through the files
for (int i = 0; i < listOfFiles.length; i++) {
	if (listOfFiles[i].isFile()) {
		Document doc = Document.load(listOfFiles[i].getPath());
		// Create watermark
		Font font = new Font("Calibre", 50, FontStyle.Bold | FontStyle.Italic);
		TextWatermark watermark = new TextWatermark("Protected", font);
		// Set watermark properties
		watermark.setForegroundColor(Color.getRed());
		watermark.setTextAlignment(TextAlignment.Right);
		watermark.setOpacity(0.5);
		watermark.setHorizontalAlignment(HorizontalAlignment.Center);
		watermark.setVerticalAlignment(VerticalAlignment.Center);
		watermark.setRotateAngle(-45);
		// Apply watermark to the document
		doc.addWatermark(watermark);
		// Save document
		doc.save("./Output/" + listOfFiles[i].getName());
 
		doc.close();
	}
}
```

**Output**

![watermark](https://thepracticaldev.s3.amazonaws.com/i/ea02e29bwwz866acc281.png)

**Source Code**

Download the complete ready-to-run source code from [GitHub](https://github.com/usmanazizgroupdocs/batch_watermark).

Cheers!