本文实例讲述了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#程序设计有所帮助。
# C#
# pdf
# 生成
# 图片
# 文字
# 水印
# 类
# C#实现PDF文档自动化生成的开发实战
# 使用C#生成二维码并插入PDF、Word与Excel文档
# 如何在C#中自动化生成PDF表格
# 在C#中生成PDF的步骤详解
# C#使用iTextSharp生成PDF的示例代码
# C#生成PDF的方法
# C#编程简单实现生成PDF文档的方法示例
# C#生成PDF文件流
# C#生成动态pdf文件的实现示例
# 程序设计
# 文档
# 相关内容
# 感兴趣
# 数据结构
# 给大家
# 建立一个
# 更多关于
# 所述
# 创建一个
# 使用技巧
# 面向对象
# 新建一个
# 画一
# 操作技巧
# 讲述了
# finally
# null
# false
# throw
相关文章:
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
广州营销型建站服务商推荐:技术优势与SEO优化解析
制作农业网站的软件,比较好的农业网站推荐一下?
官网网站制作腾讯审核要多久,联想路由器newifi官网
TestNG的testng.xml配置文件怎么写
怀化网站制作公司,怀化新生儿上户网上办理流程?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何在IIS7中新建站点?详细步骤解析
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
教程网站设计制作软件,怎么创建自己的一个网站?
,有什么在线背英语单词效率比较高的网站?
制作网站外包平台,自动化接单网站有哪些?
,制作一个手机app网站要多少钱?
建站之星图片链接生成指南:自助建站与智能设计教程
音响网站制作视频教程,隆霸音响官方网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
如何在Windows 2008云服务器安全搭建网站?
建站主机是否等同于虚拟主机?
C++如何使用std::optional?(处理可选值)
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
高端云建站费用究竟需要多少预算?
建站之星如何实现网站加密操作?
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何通过.red域名打造高辨识度品牌网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何快速搭建高效服务器建站系统?
如何通过西部建站助手安装IIS服务器?
建站主机选虚拟主机还是云服务器更好?
大连网站制作公司哪家好一点,大连买房网站哪个好?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何快速搭建个人网站并优化SEO?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
在线制作视频网站免费,都有哪些好的动漫网站?
MySQL查询结果复制到新表的方法(更新、插入)
建站之星后台密码遗忘?如何快速找回?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
建站之星安装后界面空白如何解决?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
公众号网站制作网页,微信公众号怎么制作?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何设置并定期更换建站之星安全管理员密码?
如何通过二级域名建站提升品牌影响力?
建站之星免费模板:自助建站系统与智能响应式一键生成
成都网站制作公司哪家好,四川省职工服务网是做什么用?
广州建站公司哪家好?十大优质服务商推荐
如何在云主机上快速搭建多站点网站?
如何通过云梦建站系统实现SEO快速优化?
建站主机SSH密钥生成步骤及常见问题解答?
*请认真填写需求信息,我们会在24小时内与您取得联系。