C#怎么给PDF添加水印_C#如何保护电子文档版权【案例】
<p>iTextSharp 5.5.13.2 是 C# 中可靠添加中文透明斜体水印的最优方案,需用 OnEndPage、显式注册中文字体、坐标平移+旋转+恢复状态,并注意流释放与字体路径。</p>用 iTextSharp 给 PDF 加水印最稳直接说结论:别碰 PDFsharp 做文字水印,它对中文支持差、旋转后偏移难控;iTextSharp(5.x 版本)是 C# 里真正能可靠加透明斜体水印的方案,尤其适合批量处理带中文字体的 PDF。实操要点:iTextSharp 必须用 5.5.13.2 或更早的 .NET Framework 兼容版,新版 iText7 是商业授权,免费版不支持中文嵌入水印必须写在 OnEndPage 里,不能只写一次——否则只有第一页有中文字体得显式注册:BaseFont.CreateFont("simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED),路径要对,且文件得随程序发布透明度靠 canvas.SetGState(new PdfGState { FillOpacity = 0.1f }) 控制,设太低看不见,设太高遮正文水印文字歪了、位置飘忽怎么办这不是代码写错了,是坐标系和旋转逻辑没理清。iText 的 canvas.SaveState() + canvas.RotateAbsolute() 默认以左下角为原点旋转,文字一转就飞出可视区。正确做法:先用 canvas.TranslateAbsolute(x, y) 把原点移到你想要的中心位置(比如页面中间)再 canvas.RotateAbsolute(-30)(负角度顺时针斜)最后用 ColumnText.ShowTextAligned() 以 (0, 0) 为基准画字——此时文字就在你“挪过去”的那个点上斜着显示别忘了 canvas.RestoreState(),不然后续内容也跟着歪生成的 PDF 打开报错或字体变方块错误现象通常是 Adobe Reader 提示 “字体损坏” 或文字全成 □□□,根本原因是字体未嵌入或编码不匹配。 Evoker 一站式AI创作平台
更多推荐

所有评论(0)