亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#利用iTextSharp添加PDF水印

 更新時間:2017年03月24日 11:37:57   作者:IT-民工  
這篇文章主要為大家詳細介紹了C#利用iTextSharp添加PDF水印的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了使用的是iTextSharp添加PDF水印的具體代碼,供大家參考,具體內(nèi)容如下

需要iTextSharp.dll, 下載地址http://sourceforge.net/projects/itextsharp/

public void Test()
    {
      Watermark(@"E:\日常工作\12084347 config.pdf", @"E:\日常工作\12084347 config wm.pdf", @"E:\日常工作\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;
      }
    }

 //選擇文件夾
    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;
      }
    }

    //選擇文件
    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;
      }
    }

 //啟動線程
    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);
    //在線程中修改控件屬性
    public void AppendRTBText(string text)
    {
      if (richTextBox1.InvokeRequired)
      {
        SetControlValue cal = delegate(string s) { richTextBox1.AppendText(s); };
        this.Invoke(cal, text);
      }
      else
      {
        richTextBox1.AppendText(text);
      }
    }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#獲取任務(wù)欄顯示進程的方法

    C#獲取任務(wù)欄顯示進程的方法

    這篇文章主要介紹了C#獲取任務(wù)欄顯示進程的方法,涉及C#針對進程操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#處理MySql多個返回集的方法

    C#處理MySql多個返回集的方法

    這篇文章主要介紹了C#處理MySql多個返回集的方法,實現(xiàn)了對處理MySql多個返回集進行封裝,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • C#線性漸變畫刷LinearGradientBrush用法實例

    C#線性漸變畫刷LinearGradientBrush用法實例

    這篇文章主要介紹了C#線性漸變畫刷LinearGradientBrush用法,實例分析了線性漸變畫刷LinearGradientBrush的相關(guān)使用技巧,需要的朋友可以參考下
    2015-06-06
  • C#使用Winform連接SQL Server數(shù)據(jù)庫的詳細步驟

    C#使用Winform連接SQL Server數(shù)據(jù)庫的詳細步驟

    Windows Forms是一個用于構(gòu)建Windows桌面應(yīng)用程序的圖形用戶界面(GUI)庫,它是.NET Framework的一部分,允許開發(fā)者快速創(chuàng)建豐富的交互式界面,本文給大家介紹了C#使用Winforms連接SQL Server數(shù)據(jù)庫的詳細步驟,需要的朋友可以參考下
    2024-09-09
  • C#實現(xiàn)兩個時間相減的方法

    C#實現(xiàn)兩個時間相減的方法

    這篇文章主要介紹了C#實現(xiàn)兩個時間相減的方法,實例分析了C#針對時間操作的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • c# 識別圖片格式的方法

    c# 識別圖片格式的方法

    這篇文章主要介紹了c# 識別圖片格式的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • winform去掉右上角關(guān)閉按鈕的方法

    winform去掉右上角關(guān)閉按鈕的方法

    這篇文章主要介紹了winform去掉右上角關(guān)閉按鈕的方法,需要的朋友可以參考下
    2014-02-02
  • C#8.0新語法using?declaration

    C#8.0新語法using?declaration

    這篇文章介紹了C#8.0的新語法using?declaration,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C# WPF實現(xiàn)讀寫CAN數(shù)據(jù)

    C# WPF實現(xiàn)讀寫CAN數(shù)據(jù)

    這篇文章主要介紹了C# WPF實現(xiàn)讀寫CAN數(shù)據(jù),文中通過代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • C#?異步多線程入門到精通之Thread篇

    C#?異步多線程入門到精通之Thread篇

    Thread?是?1.0?時代的產(chǎn)物,當(dāng)時?C#?就考慮到了多線程,于是就設(shè)計了?Thread?。其實現(xiàn)在不推薦使用,除非在維護老的項目已經(jīng)用了的。Thread?也是比較雞肋的,有很多缺陷,但也并不是一無是處
    2021-11-11

最新評論