安装iTextSharp包。
using iTextSharp.text.pdf;
using iTextSharp.text;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Pdf1
{
internal class Program
{
public static void AddTextWatermark(string inputPdfPath, string outputPdfPath, string watermarkText)
{
PdfReader pdfReader = new PdfReader(inputPdfPath);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(outputPdfPath, FileMode.Create));
//BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
BaseFont baseFont = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++)
{
Rectangle pageRectangle = pdfReader.GetPageSizeWithRotation(pageIndex);
//PdfContentByte pdfData = pdfStamper.GetUnderContent(pageIndex);
PdfContentByte pdfData = pdfStamper.GetOverContent(pageIndex);//在内容上方加水印
pdfData.BeginText();
pdfData.SetFontAndSize(baseFont, 30);
// 水印颜色设置为灰色
PdfGState graphicsState = new PdfGState();
graphicsState.FillOpacity = 0.3f;
pdfData.SetGState(graphicsState);
// 设置水印位置
pdfData.ShowTextAligned(Element.ALIGN_CENTER, watermarkText,
pageRectangle.Width / 2, pageRectangle.Height / 2, 45);
pdfData.EndText();
}
pdfStamper.Close();
pdfReader.Close();
}
static void Main(string[] args)
{
AddTextWatermark(@"C:\Users\zhour\Documents\meeting.pdf", @"C:\Users\zhour\Documents\meeting_watermark.pdf", "我是水印");
}
}
}
给pdf添加水印的代码中有三个注意点:
第一个注意点:
BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
要改成
BaseFont baseFont = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
才能支持中文。
第二个注意点:
C:\WINDOWS\Fonts\SIMFANG.TTF是Windows系统中的字体文件。
第三个注意点:
PdfContentByte pdfData = pdfStamper.GetUnderContent(pageIndex);
要改成
PdfContentByte pdfData = pdfStamper.GetOverContent(pageIndex);//在内容上方加水印
内容才能不覆盖水印。