PDF管理控件Spire.PDF使用教程:如何添加水印和PDF附件
Spire.PDF是一個專業(yè)的PDF組件,能夠獨立地創(chuàng)建、編寫、編輯、操作和閱讀PDF文件,支持 .NET、Java、WPF和Silverlight。Spire.PDF的PDF API擁有豐富的功能,如安全設(shè)置(包括數(shù)字簽名)、PDF文本/附件/圖片提取、PDF文件合并/拆分、元數(shù)據(jù)更新、章節(jié)和段落優(yōu)化、圖形/圖像描繪和插入、表格創(chuàng)建和處理、數(shù)據(jù)導(dǎo)入等等。>>下載Spire.PDF最新試用版
C# 給 PDF 文檔添加水印
添加圖片水印
Spire.Pdf.PdfPageBase類提供了一個屬性BackgroundImage,用戶可以通過該屬性來獲取或設(shè)置當前頁面的背景圖,除此之外還可以通過BackgroundRegion屬性設(shè)置背景圖的位置及大小,最終達到圖片水印的效果。
//加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Spire.Presentation.pdf"); //獲取PDF文檔的第一頁 PdfPageBase page = pdf.Pages[0]; //獲取圖片并將其設(shè)置為頁面的背景圖 Image img = Image.FromFile("Logo.png"); page.BackgroundImage = img; //指定背景圖的位置和大小 page.BackgroundRegion = new RectangleF(200, 200, 200, 200); //保存文檔 pdf.SaveToFile("ImageWaterMark.pdf");
添加文本水印
添加文本水印時,需要先繪制文本并設(shè)置文本格式如字體、顏色及排列方式等,然后將其添加到頁面作為水印。
//加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Spire.Presentation.pdf"); //獲取PDF文檔的第一頁 PdfPageBase page = pdf.Pages[0]; //繪制文本,設(shè)置文本格式并將其添加到頁面 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); PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 20f), true); brush.Graphics.DrawString("草稿", font, PdfBrushes.Red, 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("TextWaterMark.pdf");
C# 添加、獲取PDF 附件
Spire.PDF組件提供了兩種將文檔附加到PDF的方式。一種是通過調(diào)用PdfAttachmentCollection類的Add() 方法將文檔作為文件附件添加到PDF,另一種則是將文檔作為注釋附加到PDF的頁面中。
添加附件
將文檔作為文件附件添加到PDF
//加載PDF文檔 PdfDocument pdf = new PdfDocument("Test.pdf"); //加載需要附加的文檔 PdfAttachment attachment = new PdfAttachment("New.pdf"); //將文檔添加到原PDF文檔的附件集合中 pdf.Attachments.Add(attachment); //保存文檔 pdf.SaveToFile("Attachment1.pdf");
將文檔作為注釋附加到PDF文檔的頁面
//加載PDF文檔 PdfDocument doc = new PdfDocument("Test.pdf"); //給文檔添加一個新頁面 PdfPageBase page = doc.Pages.Add(); //添加文本到頁面 PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, System.Drawing.FontStyle.Bold)); page.Canvas.DrawString("Attachments:", font1, PdfBrushes.CornflowerBlue, new Point(50, 50)); //將文檔作為注釋添加到頁面 PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 12f, System.Drawing.FontStyle.Bold)); PointF location = new PointF(52, 80); String label = "Report.docx"; byte[] data = File.ReadAllBytes("Report.docx"); SizeF size = font2.MeasureString(label); RectangleF bounds = new RectangleF(location, size); page.Canvas.DrawString(label, font2, PdfBrushes.MediumPurple, bounds); bounds = new RectangleF(bounds.Right + 3, bounds.Top, font2.Height / 2, font2.Height); PdfAttachmentAnnotation annotation1 = new PdfAttachmentAnnotation(bounds, "Report.docx", data); annotation1.Color = Color.Purple; annotation1.Flags = PdfAnnotationFlags.NoZoom; annotation1.Icon = PdfAttachmentIcon.Graph; annotation1.Text = "Report.docx"; (page as PdfNewPage).Annotations.Add(annotation1); //保存文檔 doc.SaveToFile("Attachment2.pdf");
獲取附件
根據(jù)附件添加方式的不同,獲取附件也分為以下兩種相應(yīng)的方式。
獲取文件附件
//加載PDF文檔 PdfDocument pdf = new PdfDocument("Attachment1.pdf"); //獲取文檔的第一個文件附件 PdfAttachment attachment = pdf.Attachments[0]; //獲取該附件的信息 Console.WriteLine("Name: {0}", attachment.FileName); Console.WriteLine("MimeType: {0}", attachment.MimeType); Console.WriteLine("Description: {0}", attachment.Description); Console.WriteLine("Creation Date: {0}", attachment.CreationDate); Console.WriteLine("Modification Date: {0}", attachment.ModificationDate); //將附件的數(shù)據(jù)寫入到新文檔 File.WriteAllBytes(attachment.FileName, attachment.Data); Console.ReadKey();
獲取注釋附件
//加載PDF文檔 PdfDocument pdf = new PdfDocument("Attachment2.pdf"); //實例化一個list并將文檔內(nèi)所有頁面的Attachment annotations添加到該list List attaches = new List(); foreach (PdfPageBase page in pdf.Pages) { foreach (PdfAnnotation annotation in page.AnnotationsWidget) { attaches.Add(annotation as PdfAttachmentAnnotationWidget); } } //遍歷list,將附件數(shù)據(jù)寫入到新文檔 for (int i = 0; i < attaches.Count; i++) { File.WriteAllBytes(attaches[i].FileName, attaches[i].Data); }