国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現的pdf生成圖片文字水印類實例

2020-01-24 00:27:37
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現的pdf生成圖片文字水印類。分享給大家供大家參考,具體如下:

public class PDFSetWaterMark{    /// <summary>    /// 創建一個顯示指定圖片的pdf    /// </summary>    /// <param name="picPdfPath"></param>    /// <param name="picPath"></param>    /// <returns></returns>    public static bool CreatePDFByPic(string picPdfPath, string picPath)    {      //新建一個文檔      Document doc = new Document();      try      {        //建立一個書寫器(Writer)與document對象關聯        PdfWriter.GetInstance(doc, new FileStream(picPdfPath, FileMode.Create, FileAccess.ReadWrite));        //打開一個文檔        doc.Open();        //向文檔中添加內容        Image img = Image.GetInstance(picPath);        //img.SetAbsolutePosition();        doc.Add(img);        return true;      }      catch (Exception ex)      {        return false;        throw ex;      }      finally      {        if (doc != null)        {          doc.Close();        }      }    }    /// <summary>    /// 加圖片水印    /// </summary>    /// <param name="inputfilepath"></param>    /// <param name="outputfilepath"></param>    /// <param name="ModelPicName"></param>    /// <param name="top"></param>    /// <param name="left"></param>    /// <returns></returns>    public static bool PDFWatermark(string inputfilepath, string outputfilepath, string ModelPicName, float top, float left)    {      //throw new NotImplementedException();      PdfReader pdfReader = null;      PdfStamper pdfStamper = null;      try      {        pdfReader = new PdfReader(inputfilepath);        int numberOfPages = pdfReader.NumberOfPages;        iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);        float width = psize.Width;        float height = psize.Height;        pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));        PdfContentByte waterMarkContent;        iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicName);        image.GrayFill = 20;//透明度,灰色填充        //image.Rotation//旋轉        //image.RotationDegrees//旋轉角度        //水印的位置        if (left < 0)        {          left = width / 2 - image.Width + left;        }        //image.SetAbsolutePosition(left, (height - image.Height) - top);        image.SetAbsolutePosition(left, (height / 2 - image.Height) - top);        //每一頁加水印,也可以設置某一頁加水印        for (int i = 1; i <= numberOfPages; i++)        {          //waterMarkContent = pdfStamper.GetUnderContent(i);//內容下層加水印          waterMarkContent = pdfStamper.GetOverContent(i);//內容上層加水印          waterMarkContent.AddImage(image);        }        //strMsg = "success";        return true;      }      catch (Exception ex)      {        throw ex;      }      finally      {        if (pdfStamper != null)          pdfStamper.Close();        if (pdfReader != null)          pdfReader.Close();      }    }    /// <summary>    /// 添加普通偏轉角度文字水印    /// </summary>    /// <param name="inputfilepath"></param>    /// <param name="outputfilepath"></param>    /// <param name="waterMarkName"></param>    /// <param name="permission"></param>    public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName)    {      PdfReader pdfReader = null;      PdfStamper pdfStamper = null;      try      {        pdfReader = new PdfReader(inputfilepath);        pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));        int total = pdfReader.NumberOfPages + 1;        iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);        float width = psize.Width;        float height = psize.Height;        PdfContentByte content;        BaseFont font = BaseFont.CreateFont(@"C:/WINDOWS/Fonts/SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);        PdfGState gs = new PdfGState();        for (int i = 1; i < total; i++)        {          content = pdfStamper.GetOverContent(i);//在內容上方加水印          //content = pdfStamper.GetUnderContent(i);//在內容下方加水印          //透明度          gs.FillOpacity = 0.3f;          content.SetGState(gs);          //content.SetGrayFill(0.3f);          //開始寫入文本          content.BeginText();          content.SetColorFill(BaseColor.LIGHT_GRAY);          content.SetFontAndSize(font, 100);          content.SetTextMatrix(0, 0);          content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, width / 2 - 50, height / 2 - 50, 55);          //content.SetColorFill(BaseColor.BLACK);          //content.SetFontAndSize(font, 8);          //content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, 0, 0, 0);          content.EndText();        }      }      catch (Exception ex)      {        throw ex;      }      finally      {        if (pdfStamper != null)          pdfStamper.Close();        if (pdfReader != null)          pdfReader.Close();      }    }    /// <summary>    /// 添加傾斜水印    /// </summary>    /// <param name="inputfilepath"></param>    /// <param name="outputfilepath"></param>    /// <param name="waterMarkName"></param>    /// <param name="userPassWord"></param>    /// <param name="ownerPassWord"></param>    /// <param name="permission"></param>    public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName, string userPassWord, string ownerPassWord, int permission)    {      PdfReader pdfReader = null;      PdfStamper pdfStamper = null;      try      {        pdfReader = new PdfReader(inputfilepath);        pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));        // 設置密碼        //pdfStamper.SetEncryption(false,userPassWord, ownerPassWord, permission);        int total = pdfReader.NumberOfPages + 1;        PdfContentByte content;        BaseFont font = BaseFont.CreateFont(@"C:/WINDOWS/Fonts/SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);        PdfGState gs = new PdfGState();        gs.FillOpacity = 0.2f;//透明度        int j = waterMarkName.Length;        char c;        int rise = 0;        for (int i = 1; i < total; i++)        {          rise = 500;          content = pdfStamper.GetOverContent(i);//在內容上方加水印          //content = pdfStamper.GetUnderContent(i);//在內容下方加水印          content.BeginText();          content.SetColorFill(BaseColor.DARK_GRAY);          content.SetFontAndSize(font, 50);          // 設置水印文字字體傾斜 開始          if (j >= 15)          {            content.SetTextMatrix(200, 120);            for (int k = 0; k < j; k++)            {              content.SetTextRise(rise);              c = waterMarkName[k];              content.ShowText(c + "");              rise -= 20;            }          }          else          {            content.SetTextMatrix(180, 100);            for (int k = 0; k < j; k++)            {              content.SetTextRise(rise);              c = waterMarkName[k];              content.ShowText(c + "");              rise -= 18;            }          }          // 字體設置結束          content.EndText();          // 畫一個圓          //content.Ellipse(250, 450, 350, 550);          //content.SetLineWidth(1f);          //content.Stroke();        }      }      catch (Exception ex)      {        throw ex;      }      finally      {        if (pdfStamper != null)          pdfStamper.Close();        if (pdfReader != null)          pdfReader.Close();      }    }}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#圖片操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 军事| 都兰县| 广丰县| 福清市| 疏勒县| 金平| 南部县| 林西县| 莒南县| 白水县| 紫阳县| 安塞县| 隆昌县| 汝阳县| 洪江市| 香格里拉县| 道孚县| 东港市| 靖边县| 广饶县| 临颍县| 景泰县| 宜章县| 平罗县| 宝清县| 福安市| 克东县| 湖南省| 咸阳市| 包头市| 天台县| 绥滨县| 江源县| 深泽县| 辽阳市| 类乌齐县| 瑞金市| 永清县| 桓台县| 苗栗市| 宁德市|