C#实现的pdf生成图片文字水印类实例
本文实例讲述了C#实现的pdf生成图片文字水印类。分享给大家供大家参考,具体如下:
publicclassPDFSetWaterMark
{
///
///创建一个显示指定图片的pdf
///
///
///
///
publicstaticboolCreatePDFByPic(stringpicPdfPath,stringpicPath)
{
//新建一个文档
Documentdoc=newDocument();
try
{
//建立一个书写器(Writer)与document对象关联
PdfWriter.GetInstance(doc,newFileStream(picPdfPath,FileMode.Create,FileAccess.ReadWrite));
//打开一个文档
doc.Open();
//向文档中添加内容
Imageimg=Image.GetInstance(picPath);
//img.SetAbsolutePosition();
doc.Add(img);
returntrue;
}
catch(Exceptionex)
{
returnfalse;
throwex;
}
finally
{
if(doc!=null)
{
doc.Close();
}
}
}
///
///加图片水印
///
///
///
///
///
///
///
publicstaticboolPDFWatermark(stringinputfilepath,stringoutputfilepath,stringModelPicName,floattop,floatleft)
{
//thrownewNotImplementedException();
PdfReaderpdfReader=null;
PdfStamperpdfStamper=null;
try
{
pdfReader=newPdfReader(inputfilepath);
intnumberOfPages=pdfReader.NumberOfPages;
iTextSharp.text.Rectanglepsize=pdfReader.GetPageSize(1);
floatwidth=psize.Width;
floatheight=psize.Height;
pdfStamper=newPdfStamper(pdfReader,newFileStream(outputfilepath,FileMode.Create));
PdfContentBytewaterMarkContent;
iTextSharp.text.Imageimage=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(inti=1;i<=numberOfPages;i++)
{
//waterMarkContent=pdfStamper.GetUnderContent(i);//内容下层加水印
waterMarkContent=pdfStamper.GetOverContent(i);//内容上层加水印
waterMarkContent.AddImage(image);
}
//strMsg="success";
returntrue;
}
catch(Exceptionex)
{
throwex;
}
finally
{
if(pdfStamper!=null)
pdfStamper.Close();
if(pdfReader!=null)
pdfReader.Close();
}
}
///
///添加普通偏转角度文字水印
///
///
///
///
///
publicstaticvoidsetWatermark(stringinputfilepath,stringoutputfilepath,stringwaterMarkName)
{
PdfReaderpdfReader=null;
PdfStamperpdfStamper=null;
try
{
pdfReader=newPdfReader(inputfilepath);
pdfStamper=newPdfStamper(pdfReader,newFileStream(outputfilepath,FileMode.Create));
inttotal=pdfReader.NumberOfPages+1;
iTextSharp.text.Rectanglepsize=pdfReader.GetPageSize(1);
floatwidth=psize.Width;
floatheight=psize.Height;
PdfContentBytecontent;
BaseFontfont=BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
PdfGStategs=newPdfGState();
for(inti=1;i
///添加倾斜水印
///
///
///
///
///
///
///
publicstaticvoidsetWatermark(stringinputfilepath,stringoutputfilepath,stringwaterMarkName,stringuserPassWord,stringownerPassWord,intpermission)
{
PdfReaderpdfReader=null;
PdfStamperpdfStamper=null;
try
{
pdfReader=newPdfReader(inputfilepath);
pdfStamper=newPdfStamper(pdfReader,newFileStream(outputfilepath,FileMode.Create));
//设置密码
//pdfStamper.SetEncryption(false,userPassWord,ownerPassWord,permission);
inttotal=pdfReader.NumberOfPages+1;
PdfContentBytecontent;
BaseFontfont=BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
PdfGStategs=newPdfGState();
gs.FillOpacity=0.2f;//透明度
intj=waterMarkName.Length;
charc;
intrise=0;
for(inti=1;i=15)
{
content.SetTextMatrix(200,120);
for(intk=0;k
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#图片操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。