您好,登錄后才能下訂單哦!
這篇文章主要講解了C#如何添加、獲取、刪除PDF附件,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
概述
附件,指隨同文件發出的有關文件或物品。在PDF文檔中,我們可以添加同類型的或其他類型的文檔作為附件內容,而PDF中附件也可以分為兩種存在形式,一種是附件以普通文件形式存在,另一種是以注釋的形式存在。在下面的示例中介紹了如何分別添加以上兩種形式的PDF附件。此外,根據PDF附件的不同添加方式,我們在獲取PDF附件信息或刪除PDF附件時,也可以分情況來執行操作。
工具使用
pire.PDF for .NET 4.0
代碼示例(供參考)
using Spire.Pdf; using Spire.Pdf.Attachments; namespace AddAttachment_PDF { class Program { static void Main(string[] args) { //創建一個PdfDocument類對象,加載測試文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("sample.pdf"); //初始化PdfAttachment類實例,加載需要附加的文檔 PdfAttachment attachment = new PdfAttachment("New.pdf"); //將文檔添加到原PDF文檔的附件集合中 pdf.Attachments.Add(attachment); //保存并打開文檔 pdf.SaveToFile("Attachment1.pdf"); System.Diagnostics.Process.Start("Attachment1.pdf"); } } }
測試結果:
using Spire.Pdf; using Spire.Pdf.Annotations; using Spire.Pdf.Graphics; using System; using System.Drawing; using System.IO; namespace AddAttachment2 { class Program { static void Main(string[] args) { //創建一個PdfDocument類對象,加載測試文檔 PdfDocument doc = new PdfDocument("sample.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 = "sample.docx"; byte[] data = File.ReadAllBytes("sample.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, "sample.docx", data); annotation1.Color = Color.Purple; annotation1.Flags = PdfAnnotationFlags.NoZoom; annotation1.Icon = PdfAttachmentIcon.Graph; annotation1.Text = "sample.docx"; (page as PdfNewPage).Annotations.Add(annotation1); //保存并打開文檔 doc.SaveToFile("Attachment2.pdf"); System.Diagnostics.Process.Start("Attachment2.pdf"); } } }
using Spire.Pdf; using Spire.Pdf.Attachments; using System; using System.IO; namespace GetAttachment_PDF { class Program { static void Main(string[] args) { //創建PDF文檔,加載測試文件 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("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); //將附件的數據寫入到新文檔 File.WriteAllBytes(attachment.FileName, attachment.Data); Console.ReadKey(); } } }
測試結果:
using Spire.Pdf; using Spire.Pdf.Annotations; using System.Collections.Generic; using System.IO; namespace GetAttachment2 { class Program { static void Main(string[] args) { //加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Attachment2.pdf"); //實例化一個list并將文檔內所有頁面的Attachment annotations添加到該list List<PdfAttachmentAnnotationWidget> attaches = new List<PdfAttachmentAnnotationWidget>(); foreach (PdfPageBase page in pdf.Pages) { foreach (PdfAnnotation annotation in page.AnnotationsWidget) { attaches.Add(annotation as PdfAttachmentAnnotationWidget); } } //遍歷list,將附件數據寫入到新文檔 for (int i = 0; i < attaches.Count; i++) { File.WriteAllBytes(attaches[i].FileName, attaches[i].Data); } } } }
注釋附件讀取結果:
using Spire.Pdf; namespace DeleteAttachment_PDF { class Program { static void Main(string[] args) { //加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Attachment1.pdf"); //刪除文檔的所有文件附件 for (int i = 0; i < pdf.Attachments.Count; i++) { pdf.Attachments.RemoveAt(i); } //保存并打開文檔 pdf.SaveToFile("Remove.pdf"); System.Diagnostics.Process.Start("Remove.pdf"); } } }
using Spire.Pdf; namespace DeleteAttachment_PDF { class Program { static void Main(string[] args) { //加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Attachment1.pdf"); //刪除文檔的所有文件附件 for (int i = 0; i < pdf.Attachments.Count; i++) { pdf.Attachments.RemoveAt(i); } //保存并打開文檔 pdf.SaveToFile("Remove.pdf"); System.Diagnostics.Process.Start("Remove.pdf"); } } } 3.2 刪除注釋附件 using Spire.Pdf; using Spire.Pdf.Annotations; namespace DeleteAttachment2 { class Program { static void Main(string[] args) { //加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("Attachment2.pdf"); //刪除文檔的所有注釋附件 foreach (PdfPageBase page in pdf.Pages) { for (int i = 0; i < page.AnnotationsWidget.Count; i++) { PdfAnnotation annotation = page.AnnotationsWidget[i] as PdfAttachmentAnnotationWidget; page.AnnotationsWidget.Remove(annotation); } } //保存并打開文檔 pdf.SaveToFile("Result.pdf"); System.Diagnostics.Process.Start("Result.pdf"); } } }
調試程序后,生成的文檔就沒有附件了。
看完上述內容,是不是對C#如何添加、獲取、刪除PDF附件有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。