C#使用iTextSharp添加PDF水印
程序员文章站
2023-11-25 15:31:22
使用的是itextsharp添加pdf水印,由于是接口动态生成pdf,所以采用的是全部是内存流的形式,而且水印是平铺是。itextsharp版本是5.5。
///...
使用的是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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: MariaDB/MySQL备份和恢复(二):数据导入、导出
下一篇: Mysql-数据的完整性约束