Created
February 15, 2018 15:40
-
-
Save warrengalyen/56a0af9e6cf5139c5a03fa63bd4ceccd to your computer and use it in GitHub Desktop.
Add text watermark to PDF using iTextSharp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using iTextSharp.text; | |
using iTextSharp.text.pdf; | |
/// <summary> | |
/// This method adds watermark text under pdf content | |
/// </summary> | |
/// <param name="pdfData">pdf content bytes</param> | |
/// <param name="watermarkText">text to be shown as watermark</param> | |
/// <param name="font">base font</param> | |
/// <param name="fontSize">font sieze</param> | |
/// <param name="angle">angle at which watermark needs to be shown</param> | |
/// <param name="color">water mark color</param> | |
/// <param name="realPageSize">pdf page size</param> | |
public static void AddWaterMarkText(PdfContentByte pdfData, string watermarkText, BaseFont font, float fontSize, float angle, BaseColor color, Rectangle realPageSize) | |
{ | |
var gstate = new PdfGState {FillOpacity = 0.35f, StrokeOpacity = 0.3f}; | |
pdfData.SaveState(); | |
pdfData.SetGState(gstate); | |
pdfData.SetColorFill(color); | |
pdfData.BeginText(); | |
pdfData.SetFontAndSize(font, fontSize); | |
var x = (realPageSize.Right + realPageSize.Left)/2; | |
var y = (realPageSize.Bottom + realPageSize.Top)/2; | |
pdfData.ShowTextAligned(Element.ALIGN_CENTER, watermarkText, x, y, angle); | |
pdfData.EndText(); | |
pdfData.RestoreState(); | |
} | |
// <summary> | |
/// This method calls another method to add watermark text for each page | |
/// </summary> | |
/// <param name="bytes">byte array of Pdf</param> | |
/// <param name="baseFont">Base font</param> | |
/// <param name="watermarkText">Text to be added as watermark</param> | |
/// <returns>Pdf bytes array having watermark added</returns> | |
private static byte[] AddWatermark(byte[] bytes, BaseFont baseFont, string watermarkText) | |
{ | |
using (var ms = new MemoryStream(10 * 1024)) | |
{ | |
using (var reader = new PdfReader(bytes)) | |
using (var stamper = new PdfStamper(reader, ms)) | |
{ | |
var pages = reader.NumberOfPages; | |
for (var i = 1; i <= pages; i++) | |
{ | |
var dc = stamper.GetOverContent(i); | |
AddWaterMarkText(dc, watermarkText, baseFont, 50, 45, BaseColor.GRAY, reader.GetPageSizeWithRotation(i)); | |
} | |
stamper.Close(); | |
} | |
return ms.ToArray(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment