最近接到的工作
1.word轉PDF
2.PDF添加水印,並控制顯示的頁數
3.JPG轉PDF
需要引入 Spire.Pdf Spire.License 和 System.Drawing
接下來上代碼
/// <summary> /// 給PDF文件添加水印 /// </summary> /// <param name="pdfPath">需要添加水印的pdf文件路徑</param> /// <param name="targetPath">添加成功之后的文件路徑和文件名</param> /// <param name="marks">水印內容</param> /// <param name="fromPage">可以從第幾頁開始看</param> /// <param name="toPage">可以看多少頁</param> /// <returns></returns> 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; } }