C#使用iTextSharp添加PDF水印

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

/// <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;
      }
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 利用C#如何给PDF文档添加文本与图片页眉

    前言 下面这篇文章向大家分享如何使用了免费组件Free Spire.PDF给PDF文档添加文本和图片页眉.这个组件提供了一些方法,可以帮助我们快速方便地实现此目的. 添加页眉步骤: 首先,创建一个Visual C#控制台项目,添加组件引用并使用以下命名空间. using System; using System.Drawing; using Spire.Pdf; using Spire.Pdf.Graphics; 在下列代码中,我们先定义一个SetDocumentTemplate()方法来创建一

  • C#中创建PDF网格并插入图片的方法

    这篇文章我将向大家演示如何以编程的方式在PDF文档中创建一个网格,并将图片插入特定的网格中. 网上有一些类似的解决方法,在这里我选择了一个免费版的PDF组件.安装控件后,创建新项目,添加安装目录下的dll文件作为项目的引用以及命名空间,如下: using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Grid; 接下来是详细步骤及代码片段: 步骤1: 首先创建一个PDF文档,并添加一个新页面. PdfDocument doc = new

  • 如何使用C#在PDF文件添加图片印章

    文档中添加印章可以起一定的作用,比如,防止文件随意被使用,或者确保文档内容的安全性和权威性.C#添加图片印章其实也有很多实现方法,这里我使用的是免费的第三方软件Free Spire.PDF,向大家阐述如何以编程的方式在PDF文件中添加图片印章. 具体步骤如下: 在此之前,我们需要添加dll文件作为引用.添加引用 → 浏览 → Spire.XLS folder → Bin → .NET 2.0/3.5/4.0/4.5/4.0 ClientProfile → Spire.XLS.dll. 第一步:首

  • C#实现的pdf生成图片文字水印类实例

    本文实例讲述了C#实现的pdf生成图片文字水印类.分享给大家供大家参考,具体如下: public class PDFSetWaterMark { /// <summary> /// 创建一个显示指定图片的pdf /// </summary> /// <param name="picPdfPath"></param> /// <param name="picPath"></param> /// &

  • C#给PDF文件添加水印

    本文实例为大家分享了C#添加PDF文件水印的具体代码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf; usi

  • C#利用iTextSharp添加PDF水印

    本文实例为大家分享了使用的是iTextSharp添加PDF水印的具体代码,供大家参考,具体内容如下 需要iTextSharp.dll, 下载地址http://sourceforge.net/projects/itextsharp/ public void Test() { Watermark(@"E:\日常工作\12084347 config.pdf", @"E:\日常工作\12084347 config wm.pdf", @"E:\日常工作\wm.png

  • C#实现PDF文件添加图片背景

    本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然可以在页面中设置背景图. 但有些内容过长夸页面的时候,就很难设置背景图,变成了空白背景的页面! 以下是重新生成每一页PDF背景图功能代码! public void SetPdfBackground(string pdfFilePath) { //重新生成的 PDF 的路径 string destFile = HttpContext.Current.Server

  • C#怎么给PDF添加背景图片

    今天要实现的是给PDF文件添加图片背景这个功能.PDF是近年来最流行的文件之一,无论是办公还是日常生活中都经常会用到,很多时候,PDF文件的背景色都是白色,看多了难免觉得累,更换PDF的背景不仅可以让眼睛看起来更舒服,还可以让PDF文件看上去更美观.如何实现?作为一名程序猿,当然要亲自"操刀上阵",这篇文章我主要写的是如何使用C# 给PDF文件添加图片背景. 这是我准备的PDF文件: 代码使用: 第一步:创建一个Visual C#控制台项目,添加引用并使用命名空间. using Sys

  • C#如何给PDF文件添加水印

    水印种类及功能介绍 PDF水印分为两种:文本水印和图片水印.文本水印一般被用在商业领域,提醒读者该文档是受版权保护的,其他人不能抄袭或者免费使用.除了这个特征,水印还可以用来标记这个文档 的一些基本状态信息,例如是草稿状态还是最终版本?图片水印是美化PDF文件的一个很好的选择,它可以用多彩的.独特的图片来作为PDF文件的背景.那么,怎样用编程的方式给PDF文件 添加水印呢?有很多种实现方法,其中一种最快最容易的办法也许是用第三方软件,例如Spire.PDF.本文会阐述怎样用免费的第三方软件Spi

  • C#使用iTextSharp添加PDF水印

    使用的是iTextSharp添加PDF水印,由于是接口动态生成PDF,所以采用的是全部是内存流的形式,而且水印是平铺是.iTextSharp版本是5.5. /// <summary> /// 添加倾斜水印 /// </summary> /// <param name="pdfStream">pdf文件流</param> /// <param name="waterMarkName">水印字符串</pa

  • Python实现批量向PDF文件添加中文水印

    目录 前言 实现步骤 完整代码 前言 可以通过设置批量PDF文件所在的路径及需要添加的水印名称可以实现批量添加PDF水印的效果. 实现思路是这样的,通过在批量PDF文件路径下面生成一个带有水印的PDF模板.最后,将批量文件的每个PDF页面和水印模板进行合并完成批量添加水印的效果. 需要注意的是批量PDF文件必须和PDF模板水印文件的大小尺寸保持一致,这个可以在代码里面调节一下就成了. 实现步骤 首先将需要添加水印的PDF文件准备好放在一个文件夹下面. 在代码中设置好PDF批量文件的路径及水印名称

  • C#使用iTextSharp操作PDF

    最终版iTextSharp 5.5: https://github.com/itext/itextsharp ,已经被 iText 7代替. 一.介绍 iTextSharp:是一个从JAVA项目iText衍生的.Net版本的开源项目.iText是一个PDF库,可让您创建,移植,检查和维护可移植文档格式(PDF)的文档,从而使您可以轻松地向软件项目添加PDF功能.我们甚至提供文档来帮助您进行编码. 二.使用 1.下载安装组件 首先下载该组件并添加引用,这里是使用VS自带的NuGet来进行安装的,键

  • C#使用itextsharp生成PDF文件的实现代码

    项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET.网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下:使用HTML文件创建PDF模板:使用自定义字体的一种方法: 复制代码 代码如下: FontFactory.Register(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\Fonts\\RAGE.TTF", "

  • php给图片添加文字水印方法汇总

    1: 面向过程的编写方法 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image_type_to_extension($info[2],false); //动态的把图片导入内存中 $fun = "imagecreatefrom{$type}"; $image = $fun('001.png'); //指定字体颜色 $col = imagecolorallocateal

  • asp .net实现给图片添加图片水印方法示例

    前言 本文主要给大家介绍的是asp .net实现给图片添加图片水印的方法,注意是图片水印,需要的朋友们可以参考学习,下面话不多说来看看详细的介绍吧. 方法如下 首先写好一个写入图片水印的类,先创建一个ImageWriter类库   (该类中有包含枚举类型和方法) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Co

  • php面向对象与面向过程两种方法给图片添加文字水印

    目前绝大多数PHP程序员使用面向过程的方式,因为解析WEB页面本身就非常"过程化"(从一个标签到另一个标签).在HTML中嵌入过程处理代码是很直接自然的作法,所以PHP程序员通常使用这种方式. 如果你是刚接触PHP,用面向过程的风格来书写代码很可能是你唯一的选择.但是如果你经常上PHP论坛和新闻组的话,你应该会看到有关"对象"的文章.你也可能看到过如何书写面向对象的PHP代码的教程.或者你也可能下载过一些现成的类库,并尝试着去实例化其中的对象和使用类方法--尽管你可

  • PHP图片处理之使用imagecopy函数添加图片水印实例

    为图片添加水印也是图片处理中常见的功能.因为只要在页面中见到的图片都可以很轻松地拿到,你辛辛苦苦编辑的图片不想被别人不费吹灰之力拿走就用,所以为图片添加水印以确定版权,防止图片被盗用.制作水印可以使用文字(公司名称加网址),也可以使用图片(公司LOGO),图片水印效果更好一些,因为可以通过一些做图片软件进行美化.使用文字做水印,只需要在图片上画一些文字即可.如果制作图片水印,就需要先了解一下GD库中的imagecopy()函数,能复制图片的一部分.该函数的原型如下所示: 复制代码 代码如下: b

  • Android实现分享长图并且添加全图水印

    Android实现分享长图并且添加全图水印 前言: 长图一般是ScrollView和ListView. 我们需要取得这两个控件的完整显示的图片.原理很简单,搞一张和控件长宽一致的画布(就是创建一个高宽相等的bitmap).然后调用控件的draw方法把自己画到画布上去. 分别贴出两个控件的长图获取方法 /** * 截取scrollview的屏幕 **/ public static Bitmap getScrollViewBitmap(ScrollView scrollView) { int h =

随机推荐