详解C#使用iTextSharp添加PDF水印的代码案例


本文摘自PHP中文网,作者黄舟,侵删。

这篇文章主要为大家详细介绍了C#使用iTextSharp添加PDF水印的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用的是iTextSharp添加PDF水印,由于是接口动态生成PDF,所以采用的是全部是内存流的形式,而且水印是平铺是。iTextSharp版本是5.5。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

/// <summary>

    /// 添加倾斜水印

    /// </summary>

    /// <param name="pdfStream">pdf文件流</param>

    /// <param name="waterMarkName">水印字符串</param>

    /// <param name="width">页面宽度</param>

    /// <param name="height">页面高度</param>

    public MemoryStream SetWaterMark(MemoryStream pdfStream, string waterMarkName, float width, float height)

    {

      try

      {

        int fontSize = 50;//设置字体大小

        int span = 40;//设置垂直位移

        MemoryStream outStream = new MemoryStream();

        PdfReader pdfReader = new PdfReader(pdfStream);

        PdfStamper pdfStamper = new PdfStamper(pdfReader, outStream);

        pdfStamper.Writer.CloseStream = false;

        int total = pdfReader.NumberOfPages + 1;

        PdfContentByte content;

        BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\STCAIYUN.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//华文云彩字体

        PdfGState gs = new PdfGState();

        gs.FillOpacity = 0.15f;//透明度

        int waterMarkNameLenth = waterMarkName.Length;

        char c;

        int rise = 0;

        string spanString = " ";//水平位移

        for (int i = 1; i < total; i++)

        {

          rise = waterMarkNameLenth * span;

          content = pdfStamper.GetOverContent(i);//在内容上方加水印

                              //content = pdfStamper.GetUnderContent(i);//在内容下方加水印

          content.SetGState(gs);

          content.BeginText();

          content.SetColorFill(BaseColor.GREEN);

          content.SetFontAndSize(font, fontSize);

          int heightNumbert = (int)Math.Ceiling((decimal)height / (decimal)rise);//垂直重复的次数,进一发

          int panleWith = (fontSize + span) * waterMarkNameLenth;

          int widthNumber = (int)Math.Ceiling((decimal)width / (decimal)panleWith);//水平重复次数

           

          // 设置水印文字字体倾斜 开始

          for (int w = 0; w < widthNumber; w++)

          {

            for (int h = 1; h <= heightNumbert; h++)

            {

              int yleng = rise * h;

              content.SetTextMatrix(w * panleWith, yleng);//x,y设置水印开始的绝对左边,以左下角为x,y轴的起点

              for (int k = 0; k < waterMarkNameLenth; k++)

              {

                content.SetTextRise(yleng);//指定的y轴值处添加

                c = waterMarkName[k];

                content.ShowText(c + spanString);

                yleng -= span;

              }

            }

          }

          content.EndText();

        }

        if (pdfStamper != null)

          pdfStamper.Close();

 

        if (pdfReader != null)

          pdfReader.Close();

 

        return outStream;

      }

      catch (Exception ex)

      {

        throw ex;

      }

    }

以上就是详解C#使用iTextSharp添加PDF水印的代码案例的详细内容!

相关阅读 >>

C#获取listview鼠标下的item案例

C#基础入门之算法-交换的代码示例

C#调用默认浏览器打开网页的几种方法具体介绍(图)

C#开发之winform(公共控件)

C# tabcontrol组件如何切换显示form窗体的示例代码

C#学习之面向对象如何调用类以及普通方法、静态方法的使用

原来斐波拉契数列还有这种写法,你知道吗?

bitmap生成base64码(C#

使用c#操作windowad之的windows用户组

详解C#实现获取汉字十六进制unicode编码字符串的示例代码

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...