在文档电子化管理中会遇到 对PDF进行水印化的需求,如图

private string AddWaterMark(Stream stream,string waterName) {

PdfReader pdfReader = null;
            PdfStamper pdfStamper = null;
            var tempPath = $"wwwroot/tempFile_{Guid.NewGuid()}.pdf";
            try
            {
                pdfReader = new PdfReader(stream);
                pdfStamper = new PdfStamper(pdfReader, new FileStream(tempPath, FileMode.Create));
                int total = pdfReader.NumberOfPages + 1;
                iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
                float width = psize.Width;
                float height = psize.Height;
                PdfContentByte content;
                // 中文适配
                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                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.4f;
                    content.SetGState(gs);
                    //content.SetGrayFill(0.3f);
                    //开始写入文本
                    content.BeginText();
                    content.SetColorFill(BaseColor.GRAY);
                    content.SetFontAndSize(font, 20);
                    content.SetTextMatrix(0, 0);
                    content.ShowTextAligned(Element.ALIGN_CENTER, waterName, width - 120, height - 120, -45);
                    if (width > 240 && height > 240)
                    {
                        content.ShowTextAligned(Element.ALIGN_CENTER, waterName, width - 240, height - 240, -45);
                    }
                    if (width > 360 && height > 360)
                    {
                        content.ShowTextAligned(Element.ALIGN_CENTER, waterName, width - 360, height - 360, -45);
                    }
                    if (width > 480 && height > 480)
                    {
                        content.ShowTextAligned(Element.ALIGN_CENTER, waterName, width - 480, height - 480, -45);
                    }
                    //content.SetColorFill(BaseColor.BLACK);
                    //content.SetFontAndSize(font, 8);
                    //content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, 0, 0, 0);
                    content.EndText();
                }

if (pdfStamper != null)
                    pdfStamper.Close();

if (pdfReader != null)
                    pdfReader.Close();
            }
            catch (Exception ex)
            {
                return "";
               
            }
          
            return tempPath;
        }

C#基于 iTextSharp.text.pdf 实现PDF水印添加功能相关推荐

  1. pdf怎么加水印,pdf加水印简单方法

    pdf怎么加水印?pdf的使用往往伴随着重要的文件,相信大家都应该比较同意这种观点吧,我们平时在工作中接触到的那些pdf文件往往都是比较重要的,因此小编认为pdf文件的安全级别相对较高.同样,细心的小 ...

  2. C#合并多个pdf到一个pdf文件;不使用Aspose.pdf.dll,避免水印

    一首先引用:itextsharp.dll(不使用Aspose.pdf.dll,避免水印) 二编写合并方法 多个pdf合并成一个pdf         /// </summary>     ...

  3. .NetCore实现word转PDF无第三方水印+批量生成自定义水印(不用安装Microsoft和WPS插件)

    技术实现: Aspose18.7破解版Word转PDF无官方水印,使用Aspose破解版需要在Nuget中下载安装 SkiaSharp1.60.0 iTextSharp添加自定义水印,平铺展示 Dem ...

  4. 【itext学习之路】--4.给pdf增加文本水印和图片水印

    来源:[itext学习之路]-------(第四篇)给pdf增加文本水印和图片水印_tomatocc的博客-CSDN博客_itext添加水印 一般而言,许多公司在做pdf之后,都会将公司的logo或者 ...

  5. Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印

    前段时间,为了解析PDF,花了不少时间去学习PDFbox和itext,这两个都是处理PDF的开源库,有java和C#的.作为一个刚开始学习这两个开源库的,感觉百度上的资源还是太少了.我做的是一个关于P ...

  6. Android pdf填充表单,预览,图片填充,水印添加

    前言 需求是这样的,客户需要用户登录app后录入个人信息,然后由手机端帮助将录入的信息填充到pdf, 用户录入的部分图片需要填充到pdf模板的最后面,还需要给每一页pdf都加上水印,生成后给用户预览 ...

  7. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)

    JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...

  8. Java使用Spire.Pdf实现PDF添加图片水印

    通过本文你将学到: Spire.Pdf是什么? 如何在项目中引入Spire.Pdf依赖? 项目中基于Spire.Pdf实现PDF添加图片水印? 一.Spire.Pdf是什么? 1.Spire.Pdf是 ...

  9. java使用2种方法操作liberoffice把word转pdf,pdf加水印,java远程调用Linux执行命令

    文章目录 libreoffice下载地址 安装 (第一种) java调用 (第二种 推荐) java调用Linux命令转pdf java远程连接Linux执行命令(少数情况) linux安装windo ...

最新文章

  1. Linux的档案权限及目录配置(3)
  2. Python 之父谈 Python
  3. python知乎-知乎大佬李启方道出肺腑之言:为什么我不建议你学Python?
  4. Java布尔类的compareTo()
  5. 用C#创建COM组件全过程
  6. UDP接收端和发送端_Socket编程
  7. vc c语言坐标图,VC++6.0下C语言画图编程问题
  8. 分布式锁和mysql事物扣库存_浅谈库存扣减和锁
  9. 【Java】第6章 访问权限控制
  10. 编程基本功:BUG描述不要偷懒,不要误导
  11. lightning接口_苹果、安卓充电接口有望统一,欧盟重压下,苹果将不得不妥协
  12. Navicat15 安装激活
  13. java 判断正态分布_如何检验数据是否服从正态分布
  14. 人脸识别中的活体检测
  15. bootstrap-tagsinput 使用方法
  16. python生成带照片的二维码图片_Python生成带文字的二维码
  17. bootstrapTable 数据格式
  18. cocos creator中FBX文件不可用显示asset invalid
  19. R语言 RevoScaleR的大规模数据集决策树模型应用案例
  20. 开源项目推荐:运动控制速度前瞻算法(Look-Ahead),连续小线段高速插补算法

热门文章

  1. PHP 函数、类声明和调用
  2. centos8 手动修改网络配置以及怎么重启网络,添加开机自启动
  3. 视频和图片合成软件,简单快速合成视频和图片
  4. 在VC中编程实现按钮的启用(enable)和禁用(disable)
  5. .pdm文件怎么打开
  6. Java在编译到执行过程的编码问题
  7. oracle and not 的用法,[ORACLE]详解not in与not exists的区别与用法(not in的性能并不差!)...
  8. 学生成绩管理系统总体设计
  9. 数据结构(C语言)-广义表
  10. 解决“事件ID(487)的描述(在资源(Zend Optimizer)中)无法找到”问题