C#使用Spire.Pdf添加水印
最近接到的工作
1.
2.PDF添加水印,并控制显示的页数
3.
需要引入 Spire.Pdf Spire.License 和 System.Drawing
接下来上代码
////// 给PDF文件添加水印 /// /// 需要添加水印的pdf文件路径 /// 添加成功之后的文件路径和文件名 /// 水印内容 /// 可以从第几页开始看 /// 可以看多少页 /// public static bool PDFAddMark(string pdfPath, string targetPath, string marks, int fromPage = 1, int toPage = 1) { bool result = false; try { //创建一个新的PDF实例。然后导入PDF文件。 Spire.Pdf.PdfDocument pdf = new Spire.Pdf.PdfDocument(); pdf.LoadFromFile(pdfPath); //这里是因为Spire的版本问题 第一页会被添加水印 PdfPageBase pb = pdf.Pages.Add(); //新增一页 pdf.Pages.Remove(pb); //去除第一页水印 var a = pdf.Pages.Count; if (fromPage > a) { fromPage = 1; } if (fromPage > 1 && toPage < a) { for (int i = 0; i < (a - toPage); i++) { pdf.Pages.Remove(pdf.Pages[pdf.Pages.Count - 1]); //去掉后面的页数 } for (int i = 1; i < fromPage; i++) { pdf.Pages.Remove(pdf.Pages[0]); //去掉前面的页数 } } else if (fromPage > 1) { for (int i = 1; i < fromPage; i++) { pdf.Pages.Remove(pdf.Pages[0]); //去掉前面的页数 } } else if (toPage < a) { for (int i = 0; i < (a - toPage); i++) { pdf.Pages.Remove(pdf.Pages[pdf.Pages.Count - 1]); //去掉后面的页数 } } PdfPageBase page = null; if (pdf.Pages.Count > 0) { for (int i = 0; i < pdf.Pages.Count; i++) { page = pdf.Pages[i]; PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3)); brush.Graphics.SetTransparency(0.3f); brush.Graphics.Save(); brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2); brush.Graphics.RotateTransform(-45); brush.Graphics.DrawString(marks, new Spire.Pdf.Graphics.PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.Blue, 0, 0, new PdfStringFormat(PdfTextAlignment.Center)); brush.Graphics.Restore(); brush.Graphics.SetTransparency(1); page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.ClientSize)); } pdf.SaveToFile(targetPath); return true; } return result; } catch (Exception ex) { return false; } }