C uses iTextSharp to add PDF watermark
- 2021-12-12 05:22:18
- OfStack
In this paper, we share the specific code of adding PDF watermark with iTextSharp for your reference. The specific contents are as follows
iTextSharp.dll is required, and the download address is http://sourceforge.net/projects/itextsharp/
public void Test()
{
Watermark(@"E:\ Daily work \12084347 config.pdf", @"E:\ Daily work \12084347 config wm.pdf", @"E:\ Daily work \wm.png");
}
public bool AddWatermark(string inputPath, string outputPath, string watermarkPath, ref string error)
{
try
{
PdfReader pdfReader = new PdfReader(inputPath);
int numberOfPages = pdfReader.NumberOfPages;
FileStream outputStream = new FileStream(outputPath, FileMode.Create);
PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream);
PdfContentByte waterMarkContent;
iTextSharp.text.Image image = null;
if (string.IsNullOrEmpty(watermarkPath))
{
Stream s = GetType().Assembly.GetManifestResourceStream("WatermarkTool.wm.png");
image = iTextSharp.text.Image.GetInstance(s);
}
else
{
image = iTextSharp.text.Image.GetInstance(watermarkPath);
}
image.SetAbsolutePosition(100, 100);
for (int i = 1; i <= numberOfPages; i++)
{
waterMarkContent = pdfStamper.GetUnderContent(i);
waterMarkContent.AddImage(image);
}
pdfStamper.Close();
pdfReader.Close();
outputStream.Close();
return true;
}
catch (Exception ex)
{
error = ex.StackTrace;
return false;
}
}
// Select a folder
private void textBox2_DoubleClick(object sender, EventArgs e)
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = label2.Text;
if (dialog.ShowDialog() == DialogResult.OK)
{
textBox2.Text = dialog.SelectedPath;
}
}
// Select a file
private void textBox3_DoubleClick(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Multiselect = true;
fileDialog.Title = label3.Text;
fileDialog.Filter = "*.jpg|*.jpg|*.jpeg|*.jpeg|*.bmp|*.bmp|*.gif|*.gif|*.png|*.png|*.Tiff|*.Tiff|*.Wmf|*.Wmf";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
textBox3.Text = fileDialog.FileName;
}
}
// Startup thread
private void button1_Click(object sender, EventArgs e)
{
if (Directory.Exists(textBox1.Text) == false )
{
MessageBox.Show(label1.Text, "Require input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox1.Focus();
return;
}
if (Directory.Exists(textBox2.Text) == false)
{
MessageBox.Show(label2.Text, "Require input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox2.Focus();
return;
}
if ( textBox3.Enabled && File.Exists(textBox3.Text) == false)
{
MessageBox.Show(label3.Text, "Require input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox3.Focus();
return;
}
richTextBox1.Clear();
button1.Enabled = false;
Thread thread = new Thread(new ThreadStart(this.BatchDo));
thread.IsBackground = true;
thread.Start();
}
public delegate void SetControlValue(string message);
// Modifying control properties in a thread
public void AppendRTBText(string text)
{
if (richTextBox1.InvokeRequired)
{
SetControlValue cal = delegate(string s) { richTextBox1.AppendText(s); };
this.Invoke(cal, text);
}
else
{
richTextBox1.AppendText(text);
}
}